[Bug 14031] Max Payne 2: GL_INVALID_OPERATION in texture_activate_dimensions

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Jun 21 14:41:37 CDT 2008


http://bugs.winehq.org/show_bug.cgi?id=14031





--- Comment #2 from Tobias Jakobi <liquid.acid at gmx.net>  2008-06-21 14:41:35 ---
(In reply to comment #1)
> Unfortunately, as of now I know very little about shaders, so where shaders are
> involved I can't help much, I'm afraid. Stefan or Roderick may know more about
> this. I may hazard a guess that some advanced d3d9 features are poorly
> supported on Geforce FX series GPUs, because some opengl features emulation
> relies on are not present on them and/or an alternative codepath is needed that
> is not implemented.
Thanks, so I should CC them?
I'm asking this because it seems like I'm forcing the people to look at this
bug...

> 
> With functions applyign states call stack usually is quite useless. State
> changes made by some d3d calls are cached internally by wined3d then are
> applied when it becomes necessary - usually before primitives are rendered or
> something. If you are interested in collecting more info on this bug, hacking
> the function to print some values is more useful. state and bumpmap are the
> ones that are important there.
> 

I added FIXME("NV_TEXTURE_SHADER_NV debug: bump is %u and active texture unit
is %x\n", bumpmap, gl_nv_texture_shader_debug_helper());
in front of the glTexEnv call.

It turned out that when the call fails I have this configuration:
fixme:d3d:texture_activate_dimensions NV_TEXTURE_SHADER_NV debug: bump is 0 and
active texture unit is 84c4
fixme:d3d:texture_activate_dimensions >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION
(0x502) from glTexEnvi(GL_TEXTURE_SHADER_NV, GL_SHADER_OPERATION_NV, ...) @
utils.c / 3427

84c4 is GL_TEXTURE4_ARB, so it's always this texture unit which does trouble.
As you can see bump is always zero when this happens, so the call
glTexEnvi(GL_TEXTURE_SHADER_NV, GL_SHADER_OPERATION_NV, GL_TEXTURE_2D)
is failing.

Quote from texture_shader.txt:
1)
     INVALID_OPERATION is generated when TexEnv is called and the
     PREVIOUS_TEXTURE_INPUT_NV parameter for texture unit i is assigned
     the value TEXTUREi_ARB where f i is greater than or equal to the
     current active texture unit.
Could be the problem...

2)
     INVALID_OPERATION is generated when TexEnv is called and the
     SHADER_OPERATION_NV parameter for texture unit 0 is assigned
     one of OFFSET_TEXTURE_2D_NV, OFFSET_TEXTURE_2D_SCALE_NV,
     OFFSET_TEXTURE_RECTANGLE_NV, OFFSET_TEXTURE_RECTANGLE_SCALE_NV,
     DEPENDENT_AR_TEXTURE_2D_NV, DEPENDENT_GB_TEXTURE_2D_NV,
     DOT_PRODUCT_NV, DOT_PRODUCT_DEPTH_REPLACE_NV,
     DOT_PRODUCT_TEXTURE_2D_NV, DOT_PRODUCT_TEXTURE_RECTANGLE_NV,
     DOT_PRODUCT_TEXTURE_CUBE_MAP_NV,
     DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV, DOT_PRODUCT_REFLECT_CUBE_MAP_NV.
     or DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV.
No, coz we're calling it with GL_TEXTURE_2D

3)
     INVALID_OPERATION is generated when TexEnv is called
     and the SHADER_OPERATION_NV parameter for texture
     unit 1 is assigned one of DOT_PRODUCT_DEPTH_REPLACE_NV,
     DOT_PRODUCT_TEXTURE_2D_NV, DOT_PRODUCT_TEXTURE_RECTANGLE_NV,
     DOT_PRODUCT_TEXTURE_CUBE_MAP_NV,
     DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV, DOT_PRODUCT_REFLECT_CUBE_MAP_NV,
     or DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV.
No, same as above...

4)
     INVALID_OPERATION is generated when TexEnv is called
     and the SHADER_OPERATION_NV parameter for texture
     unit 2 is assigned one of 
     DOT_PRODUCT_TEXTURE_CUBE_MAP_NV, DOT_PRODUCT_REFLECT_CUBE_MAP_NV,
     or DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV.
Again no...

5)
     INVALID_OPERATION is generated when TexEnv is called and the
     SHADER_OPERATION_NV parameter for texture unit n-1 (where n is the
     number of supported texture units) is assigned either DOT_PRODUCT_NV
     or DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV.
Another no!

Quote from texture_shader.txt:
(nothing here, because it's almost identical)

So if it's no enclosing glBegin/glEnd pair it should be a problem like the one
described in (1).

Ah yes Alexander, you meant stage not state, right?

Greets,
Tobias


-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list