Module: wine Branch: master Commit: bd14b6e2b42b6f86032843ef098de03860635119 URL: http://source.winehq.org/git/wine.git/?a=commit;h=bd14b6e2b42b6f86032843ef09...
Author: Stefan Dösinger stefan@codeweavers.com Date: Thu Jun 25 14:44:00 2009 +0200
wined3d: IFC requires GL_NV_fragment_program2.
---
dlls/wined3d/arb_program_shader.c | 2 +- dlls/wined3d/baseshader.c | 4 ++++ dlls/wined3d/wined3d_private.h | 3 ++- 3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index e2f4b5e..c536b38 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -2989,7 +2989,7 @@ static GLuint shader_arb_generate_pshader(IWineD3DPixelShaderImpl *This, * So enable the best we can get. */ if(reg_maps->usesdsx || reg_maps->usesdsy || reg_maps->loop_depth > 0 || reg_maps->usestexldd || - reg_maps->usestexldl || reg_maps->usesfacing) + reg_maps->usestexldl || reg_maps->usesfacing || reg_maps->usesifc) { want_nv_prog = TRUE; } diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c index dc7cd5b..d23d037 100644 --- a/dlls/wined3d/baseshader.c +++ b/dlls/wined3d/baseshader.c @@ -705,6 +705,10 @@ HRESULT shader_get_registers_used(IWineD3DBaseShader *iface, const struct wined3 { reg_maps->usesmova = 1; } + else if(ins.handler_idx == WINED3DSIH_IFC) + { + reg_maps->usesifc = 1; + }
limit = ins.src_count + (ins.predicate ? 1 : 0); for (i = 0; i < limit; ++i) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index afdf642..e9b64bf 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -640,7 +640,8 @@ typedef struct shader_reg_maps unsigned usesrelconstF : 1; unsigned fog : 1; unsigned usestexldl : 1; - unsigned padding : 6; + unsigned usesifc : 1; + unsigned padding : 5;
/* Whether or not loops are used in this shader, and nesting depth */ unsigned loop_depth;