http://bugs.winehq.org/show_bug.cgi?id=14745
Summary: wined3d BltOverride - blits from non-pow2 surfaces cause issues without GL_ARB_texture_non_power_of_two Product: Wine Version: CVS/GIT Platform: PC OS/Version: Linux Status: NEW Keywords: testcase Severity: normal Priority: P2 Component: directx-ddraw AssignedTo: wine-bugs@winehq.org ReportedBy: alexd4@inbox.lv
Created an attachment (id=15241) --> (http://bugs.winehq.org/attachment.cgi?id=15241) testcase in form of a patch to ddraw visual test
If there is a blit from non-pow2 surface (e.g. 128x72) to screen which is followed by a blit from pow2 surface (e.g. 128x128) to screen, then second blit is rendered incorrectly. Presumably in the second blit the first texture is used somehow, instead of second. So, for example, in the testcase instead of red and green quads, both quads will be red. Also happens in a real game (forsaken), where there are also blits from surfaces 128x72 and 128x128.
This only appears when there is no GL_ARB_texture_non_power_of_two. Probably related to GL_TEXTURE_RECTANGLE_ARB. Affects cards like geforce 2 mx, and also reproduced on geforce 6100 by disabling GL_ARB_texture_non_power_of_two in directx.c. Tobias Jakobi kindly tested this on geforce fx with positive result (bug observed).
This is as if somehow GL_TEXTURE_RECTANGLE_ARB stays selected, which may be possible because blits do not apply states and so (afaict) texture_activate_dimensions isn't called and GL_TEXTURE_RECTANGLE_ARB may stay enabled in such case (again afaict, so far i couldn't find a place where it would be disabled in case of consecutive blits). Yet, strangely, adding glDisable(GL_TEXTURE_RECTANGLE_ARB) in BltOverride doesn't seem to help.
On geforce fx and geforce 6100 this is worked around by using orm=fbo (on geforce 2 there is no fbo). Didn't verify that myself but Stefan said on irc in fbo mode GL_TEXTURE_RECTANGLE_ARB is always used so this could explain why it works (if it indeed is related to failure to "switch" from GL_TEXTURE_RECTANGLE_ARB to GL_TEXTURE_2D).
http://bugs.winehq.org/show_bug.cgi?id=14745
--- Comment #1 from Vijay Kamuju infyquest@gmail.com 2008-08-04 09:49:14 --- please send this to wine-patches@winehq.org
http://bugs.winehq.org/show_bug.cgi?id=14745
--- Comment #2 from Alexander Dorofeyev alexd4@inbox.lv 2008-08-04 15:02:24 --- Interestingly enough, this seems to also happen with software Mesa 7.0.3 rendering. And, similarly to nvidia, glDisable(GL_TEXTURE_RECTANGLE_ARB) in BltOverride seems to do nothing.
http://bugs.winehq.org/show_bug.cgi?id=14745
Alexander Dorofeyev alexd4@inbox.lv changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #3 from Alexander Dorofeyev alexd4@inbox.lv 2008-08-21 11:13:15 --- Should be fixed in current git by http://source.winehq.org/git/wine.git/?a=commitdiff;h=1da8a032af0c4de4898fb1...
http://bugs.winehq.org/show_bug.cgi?id=14745
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #4 from Alexandre Julliard julliard@winehq.org 2008-08-22 10:48:58 --- Closing bugs fixed in 1.1.3.
http://bugs.winehq.org/show_bug.cgi?id=14745
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Version|CVS/GIT |unspecified
http://bugs.winehq.org/show_bug.cgi?id=14745
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|directx-ddraw |directx-d3d