Stefan Dösinger : wined3d: Honor WINED3DSPSM_NOT in ARB.

Alexandre Julliard julliard at winehq.org
Fri Jun 26 09:47:10 CDT 2009


Module: wine
Branch: master
Commit: d1cd08b7b35ddabfd3a699e562781d5d17216bd8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d1cd08b7b35ddabfd3a699e562781d5d17216bd8

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Thu Jun 25 19:32:04 2009 +0200

wined3d: Honor WINED3DSPSM_NOT in ARB.

---

 dlls/wined3d/arb_program_shader.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index aa8d068..21fc14c 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -4644,6 +4644,7 @@ static void shader_arb_handle_instruction(const struct wined3d_shader_instructio
     IWineD3DBaseShaderImpl *This = (IWineD3DBaseShaderImpl *)ins->ctx->shader;
     struct control_frame *control_frame;
     SHADER_BUFFER *buffer = ins->ctx->buffer;
+    BOOL bool_const;
 
     if(ins->handler_idx == WINED3DSIH_LOOP || ins->handler_idx == WINED3DSIH_REP)
     {
@@ -4767,7 +4768,9 @@ static void shader_arb_handle_instruction(const struct wined3d_shader_instructio
         list_add_head(&priv->control_frames, &control_frame->entry);
         control_frame->type = IF;
 
-        if(!priv->muted && get_bool_const(ins, This, ins->src[0].reg.idx) == FALSE)
+        bool_const = get_bool_const(ins, This, ins->src[0].reg.idx);
+        if(ins->src[0].modifiers == WINED3DSPSM_NOT) bool_const = !bool_const;
+        if(!priv->muted && bool_const == FALSE)
         {
             shader_addline(buffer, "#if(FALSE){\n");
             priv->muted = TRUE;




More information about the wine-cvs mailing list