X1x00 (X1950) Vista x64 firegl experimental script

Discussion in 'RivaTuner Advanced Discussion forum' started by yobitchbecool, Jan 13, 2008.

  1. yobitchbecool

    yobitchbecool New Member

    Messages:
    4
    Likes Received:
    0
    Hi again to everyone out there! :)

    Ok, i have been peeking the 8.391.1.1 x64 driver for Vista the last few days, and here is what i found.

    At first i tried to patch atikmdag.sys with the previous script for x64 series but it failed. Next i removed the unmatched script code and patched the file.When i tried to force the driver to install i got a black screen and upon reboot it ouldn't load.

    Then i realized that the patchscripts are actually assembly opcodes and at first ith an online assembler and then some amd64 manuals and dia I started exploring. Kudos to unwinder and huanghao.

    At first as others have noted atikmdag.sys is ati2mtag.sys with a new name. It has also a lot new stuff. First of all they changed the way they used to se the device id. Judging from the codes i saw i think there are major changes in this area. The code for setting the device id from the original SoftR9x00 script no longer exists in the driver (at least i couldn't find it).

    Secondly i found out that the crashes are caused by the driver when trying to set incorrect settings about the device id and the professional capabilities. There are numerous places that leed to loops for no apparent reason and on top of that there are many codepaths that leed to invalid opcodes (thus, simulating a crash).

    The basic architecture is almosty the same like the previous driver, there are too many places with exact the same codepaths. From the stubs left in the file, i found that there is a string beginning with 'Asic_IDs' and then it has an encoded string. Actually the device id's and probably the values for the register that controls the 'pro' features are all encoded. I tried to understand the encryption but i couldn't.

    The leed for this was a function that stores a string about "firegl asic or prof. features couldn't be found in the data table", or something like this. There some tables loaded values and other stuff passed all over the place. Also some values, that i suspect are holding the devices ids, are encrypted. These values are tested all over the place, by little decryption routines.

    Since I couldn't understand the encryption / decryption scheme i started following the code paths, and started some simple modifications. I found some new checks in areas araound segments the previous scripts were modifying. As i mentioned before, the driver is full of checks and dead ends. So I started moving around watching out for invalid opcodes and trying to just avoid the 'bad places' :) There are also many places where values are readed from various tables and checked again (often leeding to crashes).

    The result from this experiment is the script below. After simply bypassing dead ends I could install the driver (it needs booting with driver signing off). The driver seems actually to has code paths from radeon9000 and up. I don't know if all these asics are supported but they are detected for sure. Intrestingly some new ones seem to be detected as well (3xx0).

    The script is actually a bunch of interesting points and maybe someone with more experience can have a look at them and write a proper one. If you look at the script it has some commented lines. If you install the script without them the driver crashes after installing the second adapter, but after reboot it works. From some simple tests I made it seems it is working like the modified r2900 series, i has the selection lag experienced in maya from others as i hear. But the performance is at firegl (viewports in maya are as fast as in xp64) levels, something which i didn't expect to see. Aero also is working fine. The board is a radeon 1950 pro. If you patch the additional commented checks the driver installs fine both adapters without crashing but the performance is like cat 7.7 on vista (basically sucks). From 100-120 steady fps with 500k poly model with 4k textures it drops to 30-40 within maya. The 'pro' features are missing.

    As i was removing checks i noticed that the selection lag reduced (though it's here -and very annoying-), which leeds me to believe that this is not a bug, but a 'feature' invented to convince people to get 'proper' firegl's... I think it also has to do with the GL_SELECT command. Come to think of it, some of these radeon's have 500 milion tranzistors and they can't move around a bunch of wireframes and points, while at the same time they can run titles like crysis .... :S i'm thinking about writing a wireframe shader :)

    Seeing that the original softR59x00 code is gone and realizing how many checks there are in the code i took the bold step and flashed the board with 728C, i took this id from an older linux driver developed by ati (it was supposed to be v7400, but such a card never came out). Don't know if it helped with vista, but in xp64 i noticed the random glitches (distorted window decoration) are now gone.

    The things to be done for the script to be fully working i think are one of these (a) try to understand ati encryption. I think there are people out there who already know, or (b) try to avoid all pitfalls in ati's driver and find the right code path to follow.

    I realised there is this register located at 00004018h. When in xp64 and firegl driver it's value is 0040001d, but in vista it's value is 0100001d. Apart from that all others are the same. So i assume this register controls (or monitors) the firegl 'pro caps', is this correct. If yes when is it written in the first place? Where from does it get it's initial value? How do i access it? anyone?

    Finally i also noticed there is a detectionmanager.dll that ccc is using, so maybe this needs also patching.

    Any help/test would be great. I believe you can also drive HD2x00 and HD3xx0 with this script. Also i wish someone could tell me how to debug a driver in x64, or even better try to debug it. To install patch the file as usual, also add your dev_id to the .inf and install manually after removing any previous drivers.


    Here is the script:

    Code:
    [Common]
    SrcFile	= atikmdag.sys
    BakFile = atikmdag.old
    MakeCRC = 1
    Packed	= 1
    
             ;common script for 669x+
    
    DstVar0	= force FireGL 3300 capabilities(1300/1400)
    DstVar1	= force FireGL 5200 capabilities(1300XT/1600/1650Pro)
    DstVar2	= force FireGL 7350 capabilities(1800)
    DstVar3	= force FireGL 7400 capabilities(1950pro)
    DstVar4	= force M FireGL V5200 capabilities(MOBILITY 1600)
    DstVar5	= force M FireGL V7200 capabilities(MOBILITY 1800)
    DstVar6	= force M 54GL capabilities(MOBILITY1300/1400/1350/1450)
    DstVar7	= force M 66GL capabilities(MOBILITY 1750)
    
    Src0	= BA 67 00 00 00 E8 0C BF FF FF 85 C0 74 0D 48 8B D3
    SCM0    = FF FF FF FF FF FF 00 00 FF FF FF FF FF 00 FF FF FF
    Dst0	= BA 67 00 00 00 E8 0C BF FF FF 85 C0 90 90 48 8B D3
    DCM0    = 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00
    
    Src1	= BA DF 00 00 00 48 8B CB E8 1E 85 FF FF 48 8B CF 85 C0 74 0A
    SCM1    = FF FF FF FF FF FF FF FF FF 00 00 FF FF FF FF FF FF FF FF FF
    Dst1	= BA DF 00 00 00 48 8B CB E8 1E 85 FF FF 48 8B CF 85 C0 EB 0A
    DCM1    = 00 00 00 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00
    
    Src2	= BA 4B 00 00 00 E8 1E 85 FF FF A8 04 75 0D
    SCM2    = FF FF FF FF FF FF 00 00 00 00 FF FF FF FF
    Dst2	= BA 4B 00 00 00 E8 1E 85 FF FF 24 FB 90 90
    DCM2    = 00 00 00 00 00 00 FF FF FF FF 00 00 00 00
    
    Src3	= 72 3C BA 84 00 00 00
    Dst3	= 90 90 BA 84 00 00 00
    
    Src4	= 74 1F EB 10 BA 0A 00 00 00 E8 F3 62 FF FF 0F BA E0 0D 73 0D
    SCM4    = FF FF FF FF FF FF FF FF FF FF 00 00 FF FF FF FF FF FF FF FF
    Dst4	= 90 90 EB 10 BA 0A 00 00 00 E8 F3 62 FF FF 0F BA E0 0D 90 90
    DCM4    = 00 00 00 00 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00
    
    ;this has changed now
    ;Src6	= 83 F8 40 75 00 66 81 7C 24 30 02 10 75 00 0F B7 54 24 32
    ;SCM6	= FF FF FF FF 00 FF FF FF FF FF FF FF FF 00 FF FF FF FF FF
    ;Dst6_0	= 66 c7 44 24 32 52 71 0F B7 54 24 32 90 90 90 90 90 90 90
    ;Dst6_1	= 66 c7 44 24 32 DA 71 0F B7 54 24 32 90 90 90 90 90 90 90
    ;Dst6_2	= 66 c7 44 24 32 0F 71 0F B7 54 24 32 90 90 90 90 90 90 90
    ;Dst6_3	= 66 c7 44 24 32 8C 72 0F B7 54 24 32 90 90 90 90 90 90 90
    ;Dst6_4	= 66 c7 44 24 32 C4 71 0F B7 54 24 32 90 90 90 90 90 90 90
    ;Dst6_5	= 66 c7 44 24 32 03 71 0F B7 54 24 32 90 90 90 90 90 90 90
    ;Dst6_6	= 66 c7 44 24 32 44 71 0F B7 54 24 32 90 90 90 90 90 90 90
    ;Dst6_7	= 66 c7 44 24 32 9C 72 0F B7 54 24 32 90 90 90 90 90 90 90
    
    Src6 = 81 79 08 4C 49 43 4D 74 03 48 8B CB 48 3B CB 75 04 33 C0 EB 19
    Dst6 = 81 79 08 4C 49 43 4D 74 03 90 90 90 48 3B CB 75 04 33 C0 EB 19
    
    Src7 = 01 01 01 01 01 01 49 0F AF D1 49 83 F8 40 72 1E 48 F7 D9 83 E1 07
    Dst7 = 01 01 01 01 01 01 49 0F AF D1 49 83 F8 40 EB 1E 48 F7 D9 83 E1 07
    
    Src8 = C8 49 83 E0 07 49 C1 E9 03 74 11 66 66 66 90 90
    Dst8 = C8 49 83 E0 07 49 C1 E9 03 EB 11 66 66 66 90 90
    
    Src9 = FF C9 75 F4 4D 85 C0 74 0A 88 11 48 FF C1 49 FF
    Dst9 = FF C9 75 F4 4D 85 C0 EB 0A 88 11 48 FF C1 49 FF
    
    Src10 = 00 00 48 85 FF 74 3E 33 D2 48 8D 4C 24 24 44 8D
    Dst10 = 00 00 48 85 FF EB 3E 33 D2 48 8D 4C 24 24 44 8D
    
    Src11 = 0B D0 81 FA B9 10 47 16 75 1E 8B 81 C8 01 00 00
    Dst11 = 0B D0 81 FA B9 10 47 16 75 65 8B 81 C8 01 00 00
    
    Src12 = 8B 9E 10 02 00 00 48 85 DB 74 36 48 8D 8E 58 01
    Dst12 = 8B 9E 10 02 00 00 48 85 DB EB 36 48 8D 8E 58 01
    
    Src13 = 0F BA A1 3C 05 00 00 09 8B F2 48 8B F9 73 19 4C 8D 44 24 40
    Dst23 = 0F BA A1 3C 05 00 00 09 8B F2 48 8B F9 EB 19 4C 8D 44 24 40
    
    Src14 = F6 87 4C 05 00 00 80 74 28 4C 8B 8F 18 02 00 00
    Dst14 = F6 87 4C 05 00 00 80 EB 28 4C 8B 8F 18 02 00 00
    
    Src15 = 48 85 DB 75 04 33 C0 EB 41 48 8D 8F 58 01 00 00
    Dst15 = 90 90 90 EB 04 33 C0 EB 41 48 8D 8F 58 01 00 00
    
    Src16 = 00 00 85 C0 74 29 81 FE 00 40 00 00 72 21 8B 0B
    Dst16 = 00 00 85 C0 74 29 90 90 90 90 90 90 EB 21 8B 0B
    
    Src17 = EB 65 B8 DA 71 00 00 39 03 77 34 67 81 3B 64 5B 00 00
    Dst17 = EB 65 B8 DA 71 00 00 39 03 EB 5D 74 67 81 3B 64 5B 00
    
    Src18 = D2 44 8B C0 48 8B CB E8 B4 F7 FF FF EB 0D 44 8B
    Dst18 = D2 44 8B C0 48 8B CB E8 90 90 90 90 EB 0D 44 8B
    
    ; These last ones, when enabled
    ; the driver installs without problems the second device
    ; but performance is back to radeon levels
    ;Src19 = C7 8B D6 48 8B CB E8 8D FD FF FF 48 83 C4 20 5F
    ;Dst19 = C7 8B D6 48 8B CB 90 90 90 90 90 48 83 C4 20 5F
    
    ;Src20 = 48 81 FA 00 F0 FF FF 77 B5 B8 20 00 00 00
    ;Dst20 = 48 81 FA 00 F0 FF EB 77 B5 B8 20 00 00 00
    
    ;Src21 = 48 81 FA 00 10 00 00 72 B5 B8 20 00 00 00
    ;Dst21 = 48 81 FA 00 10 00 00 72 B5 B8 20 00 00 00
    
    ;Src22 =  AF D1 49 83 F8 40 72 1E 48 F7 D9 83 E1 07 74 06
    ;Dst22 =  AF D1 49 83 F8 40 EB 1E 48 F7 D9 83 E1 07 74 06
    
    [Common 6.14.10.667x]
    Src0	= BA 67 00 00 00 E8 0C BF FF FF 85 C0 74 0D 48 8B D3
    SCM0    = FF FF FF FF FF FF 00 00 FF FF FF FF FF 00 FF FF FF
    Dst0	= BA 67 00 00 00 E8 0C BF FF FF 85 C0 90 90 48 8B D3
    DCM0    = 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00
    
    Src1	= BA DF 00 00 00 48 8B CB E8 1E 85 FF FF 48 8B CF 85 C0 74 0A
    SCM1    = FF FF FF FF FF FF FF FF FF 00 00 FF FF FF FF FF FF FF FF FF
    Dst1	= BA DF 00 00 00 48 8B CB E8 1E 85 FF FF 48 8B CF 85 C0 EB 0A
    DCM1    = 00 00 00 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00
    
    Src2	= BA 4B 00 00 00 E8 1E 85 FF FF A8 04 75 0D
    SCM2    = FF FF FF FF FF FF 00 00 FF FF FF FF FF FF
    Dst2	= BA 4B 00 00 00 E8 1E 85 FF FF 24 FB 90 90
    DCM2    = 00 00 00 00 00 00 FF FF 00 00 00 00 00 00
    
    Src3	= 72 4D BA 3C 00 00 00 48 8B CB E8 C8 BE FF FF 85 C0 74 3C
    SCM3    = FF FF FF FF FF FF FF FF FF 00 00 FF FF FF FF FF FF FF FF
    Dst3	= 90 90 BA 3C 00 00 00 48 8B CB E8 C8 BE FF FF 85 C0 90 90
    DCM3    = 00 00 00 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00
    
    Src4	= 74 1F EB 10 BA 0A 00 00 00 E8 F3 62 FF FF 0F BA E0 0D 73 0D
    SCM4    = FF FF FF FF FF FF FF FF FF FF 00 00 FF FF FF FF FF FF FF FF
    Dst4	= 90 90 EB 10 BA 0A 00 00 00 E8 F3 62 FF FF 0F BA E0 0D 90 90
    DCM4    = 00 00 00 00 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00
    
    Src5	= B8 01 00 00 00 48 83 C4 20 5B C3 33 C0 EB F6 
    Dst5	= B8 01 00 00 00 48 83 C4 20 5B C3 33 C0 EB F1
    
    Src6	= 83 F8 40 75 00 66 81 7C 24 30 02 10 75 00 0F B7 54 24 32
    SCM6	= FF FF FF FF 00 FF FF FF FF FF FF FF FF 00 FF FF FF FF FF 
    Dst6_0	= 66 c7 44 24 32 52 71 0F B7 54 24 32 90 90 90 90 90 90 90
    Dst6_1	= 66 c7 44 24 32 DA 71 0F B7 54 24 32 90 90 90 90 90 90 90
    Dst6_2	= 66 c7 44 24 32 0F 71 0F B7 54 24 32 90 90 90 90 90 90 90
    Dst6_3	= 66 c7 44 24 32 8C 72 0F B7 54 24 32 90 90 90 90 90 90 90
    Dst6_4	= 66 c7 44 24 32 C4 71 0F B7 54 24 32 90 90 90 90 90 90 90
    Dst6_5	= 66 c7 44 24 32 03 71 0F B7 54 24 32 90 90 90 90 90 90 90
    Dst6_6	= 66 c7 44 24 32 44 71 0F B7 54 24 32 90 90 90 90 90 90 90
    Dst6_7	= 66 c7 44 24 32 9C 72 0F B7 54 24 32 90 90 90 90 90 90 90
    
    [Common 6.14.10.668x]
    WrapTo	= Common 6.14.10.667x
    
     
    Last edited: Jan 13, 2008
  2. UA_Iron

    UA_Iron New Member

    Messages:
    9
    Likes Received:
    0
    GPU:
    Nvidia Quadro FX4500
    Very interesting read. Thanks for sharing that.

    I would test it out if I had the appropriate hardware. I am running XP64 but with a 7900GTO.
     
  3. THE JEW (RaVeN)

    THE JEW (RaVeN) Active Member

    Messages:
    81
    Likes Received:
    0
    GPU:
    eVGA 6800GT softmodded to Quadro
    Interesting work. I don't have an Ati card, but it's good to see people still trying to find patch scripts.
     
  4. samov

    samov Master Guru

    Messages:
    217
    Likes Received:
    0
    GPU:
    mobility x1600 256
    hello yobitchbecool

    what you are suggesting makes sense but there's a new breed of firegl's we don't know how to tackle...

    on hp's 8510 line the radeon and firegl cards have the same device ID, it seems we are missing something since i think they are using something else to protect the new drivers. same card on different motherboards produce either a radeon or firegl. They even use the same .inf information... there is literally no difference between them.

    take a look at these drivers... maybe you can figure something out.. there are also older versions available...

    http://h20000.www2.hp.com/bizsupport/TechSupport/SoftwareDescription.jsp?lang=en&cc=us&prodTypeId=321957&prodSeriesId=3369263&swItem=ob-56984-1&prodNameId=3355681&swEnvOID=2103&swLang=8&taskId=135&mode=5
     

  5. yobitchbecool

    yobitchbecool New Member

    Messages:
    4
    Likes Received:
    0
    script update

    @ samov:
    about the 8510 i think that the driver checks something about the chip, not the motherboard. Maybe subsystem id? if you have access to both of the laptops, check subsystem ids and you should try to compare full rivatuner's reports. I'll have a look at the driver you linked, don't know when though, it's exams time.

    If i get it right, you can get the chip's device id from the bios (this can be changed by flashing the bios after you edit it with rabit) and you can also get the device id from a register in the chip.
    The code changed in vista driver (again, if i get this thing right), in xp it was responsible for reading the device id from this register. The previous patchscipts replaced this value directly after reading it from the device id register with the device id of the card, thus making sure the device id is the same with the device id stored in the pci configuration space (i think the pci configuration space gets the device id from bios at boot time)

    As i said above a string gets loaded which is tagged as "Asic_IDs" or something similar. Rigth after loading this string a table of 256 values is generated from this string. This table then is combined with another 256-byte table (for which i couldn't find where it comes from - or it's value) A dword value is also involved in combination of these two tables. From there i lost it :-D, but it ends up in a branch where it writes a string like this: "Firegl asic or capabilities not found in the data table"

    I also checked and adapted the previous xp script to the vista driver more carefully this time. I think i got them right this time. I searched again for a spot that looks like the previous where it reads the device id from the chip register but could not find anything.
    The results are promising - i got the performance (i could see it in maya's viewport), but no features. The selection lag is here :(. Using 'MAYA_NO_VERTEX_ARRAY_SELECT = 1' in maya.env reduced the lag significally, but personally i can't stand it. The overlay is also missing.

    The new script is below and it is for 8.393.2.1.1.1 vista x64 driver. I would appreciate if someone can try it and post some results.

    Code:
    [Common]
    SrcFile	= atikmdag.sys
    BakFile = atikmdag.old
    MakeCRC = 1
    Packed	= 1
    
    ; point 2
    Src0 = BA DF 00 00 00 48 8B CB E8 02 61 FF FF 48 8B CF 85 C0 74 0A
    Dst0 = BA DF 00 00 00 48 8B CB E8 02 61 FF FF 48 8B CF 85 C0 EB 0A
    
    ; point 2
    Src1 = BA 4B 00 00 00 E8 5B 19 FF FF A8 04 75 0D
    Dst1 = BA 4B 00 00 00 E8 5B 19 FF FF 24 FB 90 90
    
    ;5  point 1 - checked
    Src2 = 85 C0 74 0D 48 8B D3 48 8B CF E8 49 39 00 00
    Dst2 = 85 C0 90 90 48 8B D3 48 8B CF E8 49 39 00 00
    
    ;6  point 1 - prev src  - checked
    Src3 = 0F BA E0 0D 73 0D BA 2E 00 00 00
    Dst3 = 0F BA E0 0D 90 90 BA 2E 00 00 00
    
    ;7  point 1 - prev src  - checked
    Src4 = 85 C0 74 1F EB 10 BA 0A 00 00 00 E8 88 52 FF FF
    Dst4 = 85 C0 90 90 EB 10 BA 0A 00 00 00 E8 88 52 FF FF
    
    ; point 1 - prev src  - checked
    Src5 = DC 00 00 00 0E 72 3C BA 84 00 00 00 48 8B CB
    Dst5 = DC 00 00 00 0E 90 90 BA 84 00 00 00 48 8B CB
    
    ;point 3 - src 5 - checked
    Src6 = 00 00 85 C0 74 3A 33 C0 48 83 C4 50 5F 5E 5B C3
    Dst6 = 00 00 85 C0 74 3A EB 4C 48 83 C4 50 5F 5E 5B C3
    
    ;point 3 - src 5 - checked
    Src7 = EB AD CC CC CC CC CC CC CC CC CC 40 53 57 48
    Dst7 = 48 83 C4 50 5F 5E 5B C3 CC CC CC 40 53 57 48
    
    ;1c29e8
    ;Src8 = 90 49 81 F9 00 1C 00 00 73 30
    ;Dst8 = 90 49 81 F9 00 04 00 00 73 30
    
     
  6. samov

    samov Master Guru

    Messages:
    217
    Likes Received:
    0
    GPU:
    mobility x1600 256
    i checked the hp's site... both model have the same part numbers for the motherboard and graphics card. they are identical.

    their bios is also exactly the same?! could it be that the bios checks the mainboard's serial number or some other thing...

    this is my information on 8510p

    Manufacturer ATI Technologies Inc
    Device ID 0xaa08
    Vendor ID 0x1002
    Class Code 0x040300
    Revision ID 0x00
    Subsystem ID 0x30c5
    Subsystem vendor ID 0x103c

    and the 8510w is the same except

    Subsystem ID 0x30DF


    now THIS is from hp's driver

    "ATI Mobility FireGL V5600" = ati2mtag_M76, PCI\VEN_1002&DEV_9581&SUBSYS_30DF103C
    "ATI Mobility Radeon HD 2600" = ati2mtag_M76, PCI\VEN_1002&DEV_9581&SUBSYS_30C5103C

    note the only difference

    i've tried installing the firegl counterpart and guess what.... the driver would not load UNTIL i uninstalled Catalyst Control Center... as if CCC was somehow stopped it from functioning....
     
    Last edited: Jan 25, 2008
  7. yobitchbecool

    yobitchbecool New Member

    Messages:
    4
    Likes Received:
    0
    Maybe you could flash the card bios with a new subsytem id.
    Try saving the bios to disk using Rabit, then edit the subsystem id using rabit again and flash it back to the gfx card using atiwinflash.

    About ccc there is this file DetectionManager.dll which i think implements a part of the new protection mechanism. I'm almost certain that this one detects your hardware and tells the install manager what to install.
     
  8. samov

    samov Master Guru

    Messages:
    217
    Likes Received:
    0
    GPU:
    mobility x1600 256
    the subsystem id is not dependant on the video card....

    "ATI Mobility FireGL V5600" = ati2mtag_M76, PCI\VEN_1002&DEV_9581&SUBSYS_30DF103C

    9581 is the device ID

    30DF is the motherboard model number

    103C is the vendor number aka HP...

    so if you take my video card ... an hd2600 and put it in a 8510w it is a firegl v5600....
     
  9. legolasgleaf

    legolasgleaf Member Guru

    Messages:
    194
    Likes Received:
    0
    GPU:
    Quadro FX3500
    samov, and patching the atikmdag.sys of the hp drivers, with the subsystem id, could be work?
    Any news?
     
  10. kinitex

    kinitex Member

    Messages:
    26
    Likes Received:
    0
    GPU:
    VisionTek ATI Radeon 3870 512mb
    Any chance you could brew up a patchscript for 38X0 series cards for 64 bit xp? I got mine running as firestream 9170 in 32 bit atm.
     

  11. Stefan_VTi

    Stefan_VTi Member

    Messages:
    47
    Likes Received:
    0
    GPU:
    PNY Quadro FX 3500
    Samov, are you certain that FireGL V5600 in the HP is a real one? HP once sold FireGL T2 notebooks that were just relabeled Radeon 9600 chips, they reported to be a FireGL, but could not use pro caps... They used the ATI2OGLXX.DLL (game) driver instead. Oh, and they too used the same ID method, device ID was that of a regular Radeon, subsys was different.
     
    Last edited: Apr 2, 2008
  12. legolasgleaf

    legolasgleaf Member Guru

    Messages:
    194
    Likes Received:
    0
    GPU:
    Quadro FX3500
    Any chance? Maybe Unwinder could help us.
     
  13. legolasgleaf

    legolasgleaf Member Guru

    Messages:
    194
    Likes Received:
    0
    GPU:
    Quadro FX3500
    Hi Unwinder, I know that you are a very busy man. And I know that you are the man in graphics driver's modtools.

    Sorry for my incompetence. And sorry for my english.

    Could you help me to understand how HP make the drivers for their workstations.

    There are two laptops that use the same card.

    - HP Compaq 8510w (the workstation version), that have two versions, with quadro fx570m, and a firegl v5600 version.

    - HP Compaq 8510p, that have a Radeon HD 2600.

    If you see the replacement parts of the ATI cards, in both models, you can see that the part is the same. And the driver were the same file.

    When I understand it, I try to see the driver if that were true. And yes, because the .inf file, says:
    "ATI Mobility FireGL V5600" = ati2mtag_M76, PCI\VEN_1002&DEV_9581&SUBSYS_30DF103C
    "ATI Mobility Radeon HD 2600" = ati2mtag_M76, PCI\VEN_1002&DEV_9581&SUBSYS_30C5103C

    The only difference between them is the subsystem ID (motherboard?).

    One thing that I don't understand is that in the .inf file don't say anything about gl (eg: M76GL vs M76) and reading any posts in another forums, I found that the difference with the original drivers is, the ati2mtag.sys because were patched for HP.

    This could be the key for a firegl mod in Vista 64.

    Unwinder, could you to keep an eye on this drivers?

    http://h20000.www2.hp.com/bizsuppor...swLang=35&mode=2&taskId=135&swItem=ob-58135-1

    Sorry for all of inconveniences and thank you. I know that you haven't got time for stupid things, but nobody helps and don't make progress. Thanks again.
     
  14. Stefan_VTi

    Stefan_VTi Member

    Messages:
    47
    Likes Received:
    0
    GPU:
    PNY Quadro FX 3500
    I went through both the Vista and XP drivers from HP (posted in the link above), both drivers use exactly the same settings, files, registry keys, etc for the FGL V5600 and the HD 2600...

    For any pre HD 2xx0 series card that would mean you get a nice Radeon for a nice FGL price, but since the HD gen cards use the same OpenGL driver for both card series (the ORCA driver) it could be that there is no difference configuration wise anymore and the OpenGL driver recognizes what features can be enabled.

    Note that this can also be a good thing as it would allow any HD series card owner to simply copy a few patched files to their windows folders and do a restart to have a proper FireGL.
     
  15. legolasgleaf

    legolasgleaf Member Guru

    Messages:
    194
    Likes Received:
    0
    GPU:
    Quadro FX3500
    Stefan_VTi, do you think that the Radeon now, works in different manner than before? I don't understand too much.
    I hope that Unwinder could help us.

    Thank you.
     

  16. Stefan_VTi

    Stefan_VTi Member

    Messages:
    47
    Likes Received:
    0
    GPU:
    PNY Quadro FX 3500
    Well, ATI indeed changed the 3D driver for the HD series.

    Basically ATI uses 3 DLLs to support OpenGL:
    * Radeon R500 series and older: ATIOGLXX.DLL
    * FireGL R500 series and older: ATIOGLGL.DLL
    * Radeon R600+ and FireGL R600+: ATIOGLX2.DLL
    Taken from the 8.4 Catalyst for XP.

    So as you can see, the older FireGL uses a different driver containing the workstation features and optimizations, while the newer FireGL uses the same driver (that driver contains all features and optimizations, with workstation features being disabled when a Radeon is detected).
     
  17. legolasgleaf

    legolasgleaf Member Guru

    Messages:
    194
    Likes Received:
    0
    GPU:
    Quadro FX3500
    Interesting.
     
  18. Rectifier

    Rectifier Active Member

    Messages:
    63
    Likes Received:
    0
    GPU:
    MSI HD3870-OC
    From what I can see, the Vista X64 driver is a modified 32 bit driver (with most parts still as a 32-bit application). The trouble I have at the moment is I can not seem to find any of the "regular" patch script hex sequences in the (single) INF file present.

    I am prepared to modify the driver to at least accept my deviceID (3870) and assume it is a 7700. Perhaps then I can find out what deviceID it detects, and where (in which driver file) it does that.

    I have my doubts whether it will be as easy as replacing a few driver files however, but if it crashes, at least I'll have an excuse to remove this viral open-beta from my machine once and for all...

    edit: driver 8.453 was the one I was looking into.
    edit2: Ok, of course the hex sequences belong in the patch script, it is getting late.

    Edit3: Is it me, or does RT not allow me to browse for the atikmdag sys file?
     
    Last edited: Jun 4, 2008
  19. schoko

    schoko Member Guru

    Messages:
    178
    Likes Received:
    0
    GPU:
    Hd2600 Mobility
    the pieces of code are changing. take a closer look at the patchscript:

    there is always a source code, a destination, and a mask for bits that are supposed to be changing.
    if you are going to search a little bit more intense yo will find that the codepieces of the original xp patchscripts do still exist.

    you should get yourself ultraedit to browse and search for the code. and if you think you do understand how the driver is working you may wanna check for ida pro, to disassemble the atikmdag.sys to see how the driver is working.

    here are the new codepieces from vistax64 driver 8.453.1 that i could identify:

    Src0 = BA 67 00 00 00 E8 74 9A FF FF 85 C0 74 0D 48 8B D3
    Src1 = BA DF 00 00 00 48 8B CB E8 02 61 FF FF 48 8B CF 85 C0 74 0A
    Src2 = BA 4B 00 00 00 E8 5B 19 FF FF A8 04 75 0D
    Src3 = 72 3C BA 84 00 00 00
    Src4 = 74 1F EB 10 BA 0A 00 00 00 E8 88 52 FF FF 0F BA E0 0D 73 0D
    Src5 = 00 85 C0 75 47 66 81 7C 24 30 02 10 75 36 0F B7 54 24 32

    you sure you are prepared ? it actually takes some time to get to know how the driver works.

    well, have you actually taken a closer look at the patchscript for xp32/64 ?
    you should do that. the first lines in the patchscript describe the file that is supposed to be patched.
    for xp it is browsing for :
    Code:
    [Common]
    SrcFile        = ati2mtag.sys
    BakFile        = ati2mtag.old
    
    and for vista you need to edit it into :
    Code:
    [Common]
    SrcFile        = atikmdag.sys
    BakFile        = atikmdag.old

    a little sidenote, if you are not very experienced with what you "want" to do, you may as well save that time. patching the codepieces you can identify from the xp patchscript is not all, there is more behind it.
    and if you manage to do it anyway, what i am actaully doubting , you´d have a problem with driversigning. you need to turn that one off constantly.
    don´t get me wrong, i do not want to say it´s impossible for you, but it will most likely be a headache.
     
    Last edited: Jun 5, 2008
  20. Rectifier

    Rectifier Active Member

    Messages:
    63
    Likes Received:
    0
    GPU:
    MSI HD3870-OC
    Well, it might not look that way, but I have more experience than you might think (disassembled the nvidia drivers back in the 6800-golden age, or rather, right before it). But I understand it doesn't truly show from my post, but as I said, it was getting late :)

    Btw. I am currently running the FireGL V7700 drivers, and almost everything works, except for Specview or 3D applications, but that was to be expected, since I just "forced" the driver onto it (with different deviceID).

    And don't get me wrong, I appreciate the work you have done on the XP drivers, seeing the amount of time and effort going into it (FYI, I have used your scripts to mod HD2600's before).
    I was just under the impression that you had more common sense than to venture into going into the disaster called Vista X64 :), hence I excpected to be left out int he cold.

    But the problem I got stuck at, was not diving into the drivers themselves, it was simply RT not being on a friendly basis with Vista (which I can understand), or the other way around - I don't know what is or could even be causing the problem. Here's the thing: I open the patchscript with RT, as it always has worked before on XP machines, yet when I "run it", it just outputs : "browsing for atikmdag.sys - cancelled", without any actual browsing going on. It seems as if RT is not allowed (my guess is by one of the many bugs in Vista) to open the open file dialog.

    Without the patchscript browsing, it will take a bit more time to replace the sequences, since I'll have to do it semi-manually, so I was asking whether this was a common problem. The known issues section lists "RivaTuner doesn't provide any patch scripts for 64-bit drivers. ", but I was wondering whether they were disabled alltogether. I can see why there are no existing patchscripts provided with RT, but I would think the scripts should still work in hex-editing/replacing... (I may be wrong there, or perhaps it is a fool-proofing measure taken by Unwinder)

    I'll go on with it, just don't pin me down on it, it is a busy period for me. But since I'll have to fix half of the OS in trying to get all other hardware and software working anyway, why not try and create a modded driver in the mean time? ;-)

    Thanks for the input on the sequences!
     

Share This Page