Ok i'm tested wine and his new GL_ATI_fragment_shader support with 9250 card nad Mesa/DRI driver. Now env bumpmaping and dot3 tests in 3DMark2001 seems to work good, but in car test high ground texture is black. In DungeonSiege2 i disabled ps in winecfg, because it has same problem (and more) flickering and black textureon the ground (river water not show, but on sea it has...). With Painkiller, nothing helps to start game (disabled ps in winecfg not help), only solution is to change textured units in driconf from 6 to 5 (this disable GL_ATI_fragment_shader in driver). I check also NFS: Hot Pursuit2, in wine-0.58> (this is from some earlier versions, but problem is same) it has these fixmes:
fixme:d3d_texture:IWineD3DBaseTextureImpl_ApplyStateChanges
>>>>>>>>>>> GL_INVALID_VALUE (0x501) from glTexParameteri
GL_TEXTURE_MAX_ANISOTROPY_EXT ... @ basetexture.c / 463 fixme:d3d:get_src_and_opr Unhandled texture argWINED3DTA_SPECULAR
and now:
fixme:d3d_texture:IWineD3DBaseTextureImpl_ApplyStateChanges
>>>>>>>>>>> GL_INVALID_VALUE (0x501) from glTexParameteri
GL_TEXTURE_MAX_ANISOTROPY_EXT ... @ basetexture.c / 488 fixme:d3d_shader:shader_arb_generate_vshader HW VertexShader Error at position 499: "1046: '.' expected but ';' found" fixme:d3d_shader:gen_ati_shader >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from GL_EXTCALL(glEndFragmentShaderATI()) @ ati_fragment_shader.c / 774
this fixmes is shifted many times, when i stop/start the some race, leave the menu, etc. This is first game in which i see gen_ati_shader in exchange of unhandle texture (NV_combiner thing).
I wish to ask what is that GL_INVALID_VALUE (0x501) and GL_INVALID_OPERATION (0x502)??? This 0x501 i can see in many games.
Am Dienstag, 8. April 2008 01:37:36 schrieb Milan Kostić:
I wish to ask what is that GL_INVALID_VALUE (0x501) and GL_INVALID_OPERATION (0x502)??? This 0x501 i can see in many games.
GL_INVALID_OPERATION and _VALUE opengl errors. That they show up doesn't give more information beyond "meh, this doesn't work", it depends on the other details.
First of all, which mesa version do you have? Please consider updating to 7.0.x if you have something older.
Ok i'm tested wine and his new GL_ATI_fragment_shader support with 9250 card nad Mesa/DRI driver. Now env bumpmaping and dot3 tests in 3DMark2001 seems to work good, but in car test high ground texture is black.
I tested 3dmark2001, and I am pretty sure that the texture in the high car test worked. I have a radeon 9000 card though, and I talked to a Mesa dev who said that there are differences between various card revisions.
In DungeonSiege2 i disabled ps in winecfg, because it has same problem (and more) flickering and black textureon the ground (river water not show, but on sea it has...). With Painkiller, nothing helps to start game (disabled ps in winecfg not help), only solution is to change textured units in driconf from 6 to 5 (this disable GL_ATI_fragment_shader in driver).
Can you file bug reports for those issues if they persist with newer mesa versions? Please CC me on those reports.
I check also NFS: Hot Pursuit2, in
fixme:d3d_texture:IWineD3DBaseTextureImpl_ApplyStateChanges
>>>>>>>>>>>> GL_INVALID_VALUE (0x501) from glTexParameteri
GL_TEXTURE_MAX_ANISOTROPY_EXT ... @ basetexture.c / 488 fixme:d3d_shader:shader_arb_generate_vshader HW VertexShader Error at position 499: "1046: '.' expected but ';' found"
That's a vertex shader issue. I guess the "problem" here is that with the availability of more texture rendering features the game switched into a different rendering mode which Wine or Mesa do not like too much.
fixme:d3d_shader:gen_ati_shader >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from GL_EXTCALL(glEndFragmentShaderATI()) @ ati_fragment_shader.c / 774
I didn't put checkGLcall statements to each fragment operation during shader creation to prevent the code from being even more convoluted, but you can add them for testing and see which part exactly fails.
I'm use Mesa 7.0.1 mainly because performance is the best and not have glitches in some cases like newer, but tried wine-0.9.59 with 7.02 and 7.0.3 also. My card is HIS 9250 128MB/128bit (1002:5960 17af:2020). This r200 performance issues started with this patch:
http://gitweb.freedesktop.org/?p=mesa/mesa.git;a=commit;h=e279a0a076b7a3c8d6...
I'm atached some screenshots with or w/o ps enabled using Mesa 7.0.3 for this to show, clean .wine directory (just winecfg and then install 3DMark) default driver setup and default 3DMark2001 setup (just used 800x600 for windowed screenshoots, checked 'emulate a virtual desktop' in winecfg). All these primers work good in previous versions of wine (except with properly moving water (river and sea) and portals showing in DS2 (that work good when i add once again 'mat[12] = mat[8]; mat[13] = mat[9];' in utils.c) i know that is another thing, but helps), but not working good with wine-0.9.59 with ps enabled. Exeption from this is Painkiller which starting only with disabled ps, registy key DisabledExtensions GL_ATI_fragment_shaders also not help and that disabled one textured unit in driver is needed from time to time (not always), also this happens in all 7.0.x Mesas.
http://rapidshare.com/files/105988005/wine-0.9.59_tests.tar.gz.html
NOTE: i mainly use extern libtxc_dxtn.so (for this tests w or w/o - same results), because some native games Regnum Online, Quake4... needs it to working properly, also Indiana Jones: Emperors Tomb with wine even refuses to start without it.
I'm registered to bugzilla, but everytime it says that my password is not good (maybe my firewall issues?), because of that i use mailists to inform devs about bugs (i have many to fill like SeriousSam FE/SE resolution regression, same game engine: SE starts(but crash on exit), FE not even start, SE crash when resolution changes and in both games this work good with 0.9.45 and older like .39, .29... Icculus installers for these games work good, but have other issues. All this is tested on: same card, same X server, same distro, same driver, same Mesa, etc:).
Forgot to say that Indiana Jones: Emperors Tomb start and load level with or without enabled ps in winecfg, but if GL_ATI_fragment_shader is enabled in driver (ie 6 units in driconf), when it load level then i got hard freeze and must reboot computer on button (CTRL+ALT+Backspace and CTRL+ALT+D not help, it's only possibly to move mouse (no click) and nothing else). When 5 units is used then everything goes fine, but that is without this shader:(.
Btw Stefan, many thanks to you for implement and support this old and forgotten but powerful extension, it's nice to see that "metal-blending" shading again in action and all that working in wine, an example like in this demo (http://www.humus.ca/3D/GameEngine.zip). Thanks again:).
Am Mittwoch, 9. April 2008 03:49:07 schrieb Milan Kostić:
Forgot to say that Indiana Jones: Emperors Tomb start and load level with or without enabled ps in winecfg, but if GL_ATI_fragment_shader is enabled in driver (ie 6 units in driconf), when it load level then i got hard freeze and must reboot computer on button (CTRL+ALT+Backspace and CTRL+ALT+D not help, it's only possibly to move mouse (no click) and nothing else). When 5 units is used then everything goes fine, but that is without this shader:(.
In that case you should file a Mesa bug report. If your computer crashes it's by definition a driver bug, not a Wine bug. With a few bug reports the Mesa devs will see that the r200 isn't dead yet.
Eh yes, i just checked what is difference between 9000 and 9250 and find that 9000 has 4/2 units, but 9250 has 4/1. One physical unit left! And this is likely problem because ati_fs is linked to max units which is 6 in driver, but this card has only 5;). Seems to one is emulated:D. I don't know, i think that my neighbour have 9100 (which also has 4/2) in his vault and i'm must wine:) with that card first (which is very possibly not working?:D) and if that is bug, i will fill one massive bug for that thing on Mesa side:) and just hope that someone of retired r200 devs will go back to business and improve driver... Thanks for reading all this posts anyway.
Am Mittwoch, 9. April 2008 12:12:20 schrieb Milan Kostić:
Eh yes, i just checked what is difference between 9000 and 9250 and find that 9000 has 4/2 units, but 9250 has 4/1. One physical unit left! And this is likely problem because ati_fs is linked to max units which is 6 in driver, but this card has only 5;). Seems to one is emulated:D. I don't know, i think that my neighbour have 9100 (which also has 4/2) in his vault and i'm must wine:) with that card first (which is very possibly not working?:D) and if that is bug, i will fill one massive bug for that thing on Mesa side:) and just hope that someone of retired r200 devs will go back to business and improve driver... Thanks for reading all this posts anyway.
I doubt 3DMark2001 uses all 6 texture units even in the high shader test because it works on Nvidia cards which only support 4 simultaneous textures. If it uses 4 textures and 6 or more texture stages(ie, texture stage settings that do not sample from a texture), it might be worth looking into the texture map stuff we're using with the nvidia register combiner code. With atifs we can support 6 simultaneous textures and 8 texture stages.
Yes that's sounds good! And to say that i'm checkedout more about diffs with our cards and found something in wikipedia article. 9000 and 9250 both has 4/1 units, cards are with the same units setup, only rv280 has 8x AGP bus. And 9000 pro version is same, but with higher core and memory clocks and better bandwidth.
http://en.wikipedia.org/wiki/Comparison_of_ATI_graphics_processing_units
And then that's not a problem:(. I don't know what to say to the Mesa developers: I'm have hard freeze with current wine, with just one game when units are on default? Huh, I don't think thats will remove all this bugs.
Hi, I just tried 3DMark2001, and I can confirm the black textures in the high car test, so it is not your different card. I am pretty sure this used to work though...
Am Freitag, 11. April 2008 01:06:54 schrieb Stefan Dösinger:
Hi, I just tried 3DMark2001, and I can confirm the black textures in the high car test, so it is not your different card. I am pretty sure this used to work though...
Can you try the attached hack? If fixes the black textures in 3DMark 2001 for me.
Checked and works, that seems to did a trick on everything:). In car chase (high) and in demo with statue. Now river is showing in DS2, there is no more flickering textures and menu also not show black texture. Thanks:).
Textures is good in DS2, on start perform good, but now if i played for a while (10-15 minutes), performance is getting been worst and worst... I will test more times just to be sure of this, because i think that's also case without this hack.
Painkiller now start when i disabled ps (not need 5 units in driconf anymore to start), but thats just start. Now when it load level it slowing down things and sometimes hang there, sometimes not, but in both cases start to quickly use HD swap:). This is happen because this game needs s3tc to be enabled in driconf and if it is then just works, but now that is ati_fs there, seems to work only when ps is disabled in winecfg, with enabled not even start. There is a log from console, maybe it's usefull to you.
Am Samstag, 12. April 2008 09:02:02 schrieb Milan Kostić:
Textures is good in DS2, on start perform good, but now if i played for a while (10-15 minutes), performance is getting been worst and worst... I will test more times just to be sure of this, because i think that's also case without this hack.
There's at least one "bug" in our fragment shader management code, and most likely a 2nd one. The first issue is that the searching for fragment shaders is rather simple and expensive. We'll have to replace the linear search at least with a sorted array, or possibly a hashmap.
The other problem, I noticed that during the 3DMark debugging, is that for some reason fragment shaders with identical settings are duplicated. That leads to more shaders to manage, and triggers the above issue.