Stefan Dösinger : wined3d: Compile pixel shaders in drawprim.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Aug 25 05:26:49 CDT 2006


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Thu Aug 24 23:55:23 2006 +0200

wined3d: Compile pixel shaders in drawprim.

---

 dlls/wined3d/drawprim.c    |    7 +++++++
 dlls/wined3d/pixelshader.c |    3 ---
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c
index c2ed58c..aa022e2 100644
--- a/dlls/wined3d/drawprim.c
+++ b/dlls/wined3d/drawprim.c
@@ -1796,6 +1796,13 @@ #undef BUFFER_OR_DATA
         useDrawStridedSlow = TRUE;
     }
 
+    if(usePixelShaderFunction) {
+        /* We compile the shader here because it depends on the texture stage state
+         * setup of the bound textures. If the shader is already compiled and the texture stage
+         * state setup matches the program this function will do nothing
+         */
+        IWineD3DPixelShader_CompileShader(This->stateBlock->pixelShader);
+    }
     /* If GLSL is used for either pixel or vertex shaders, make a GLSL program 
      * Otherwise set NULL, to restore fixed function */
     if ((wined3d_settings.vs_selected_mode == SHADER_GLSL && useVertexShaderFunction) ||
diff --git a/dlls/wined3d/pixelshader.c b/dlls/wined3d/pixelshader.c
index f5d6462..ab05dbb 100644
--- a/dlls/wined3d/pixelshader.c
+++ b/dlls/wined3d/pixelshader.c
@@ -949,9 +949,6 @@ static HRESULT WINAPI IWineD3DPixelShade
         This->baseShader.function = NULL;
     }
 
-    /* Compile the shader. */
-    IWineD3DPixelShader_CompileShader(iface);
-
     return WINED3D_OK;
 }
 




More information about the wine-cvs mailing list