On Thu May 18 15:15:25 2023 +0000, Sebastian Mayr wrote:
changed this line in [version 5 of the diff](/wine/wine/-/merge_requests/2821/diffs?diff_id=47541&start_sha=0e82e1444116efd904fd04f8bc7a5144dbb29143#8dcd39f3ce7a30da5a0a0cc4bf9dba516814a9f7_10932_10915)
TL;DR: Old HW is weird, I vote not to bother too much
Never ask d3d too many questions, you might not like the answer...
That r200 driver *does* care about the texture type. Binding a volume texture makes ValidateDevice fail with D3DERR_UNSUPPORTEDTEXTUREFILTER in the following conditions:
*) A non-zero mip filter is used *) min filter != mag filter. As long as min == mag it is fine, even if both are 0xdeadbeef.
But it only validates stage 0. On stage 1 and up everything goes.
I still think we should stay the course and just ignore D3DERR_UNSUPPORTEDTEXTUREFILTER in d3d8. We don't implement texture type dependent filter capabilities and I don't know of a way to query this info from OpenGL. There is GL_ARB_internalformat_query2, but it requires OpenGL 2.0, which this GPU will never support. While I do have a fetish for making old games run on old hardware, the work to properly detect and communicate this restriction to the game is weeks of work and probably involves hardcoding restrictions based on the renderer string. Finding one user (other than myself) who runs a 2023 Wine on a 2003 hardware is probably impossible.
If you have read this far, to satisfy my curiosity though: What texture type does the game bind on stage 0 when it validates the device? 2D? Cube? Volume? If 2D, are the sizes powers of 2?
But now I have an excuse to update Linux on this box and build Wine git on it to see if it runs Worms Blast :-)