[PATCH] WineD3D: Pass the ps_compile_args structures to the =

Stefan Doesinger stefan at codeweavers.com
Sun Dec 14 15:40:07 CST 2008


shader generation code=0A=
=0A=
---=0A=
 dlls/wined3d/arb_program_shader.c |    2 +-=0A=
 dlls/wined3d/baseshader.c         |    2 +-=0A=
 dlls/wined3d/glsl_shader.c        |    2 +-=0A=
 dlls/wined3d/pixelshader.c        |    3 +-=0A=
 dlls/wined3d/wined3d_private.h    |   47 =
++++++++++++++++++-------------------=0A=
 5 files changed, 28 insertions(+), 28 deletions(-)=0A=
=0A=
diff --git a/dlls/wined3d/arb_program_shader.c =
b/dlls/wined3d/arb_program_shader.c=0A=
index f3fead1..33621ba 100644=0A=
--- a/dlls/wined3d/arb_program_shader.c=0A=
+++ b/dlls/wined3d/arb_program_shader.c=0A=
@@ -1864,7 +1864,7 @@ static void =
arbfp_add_sRGB_correction(SHADER_BUFFER *buffer, const char *fragcol=0A=
     /* [0.0;1.0] clamping. Not needed, this is done implicitly */=0A=
 }=0A=
 =0A=
-static GLuint shader_arb_generate_pshader(IWineD3DPixelShader *iface, =
SHADER_BUFFER *buffer) {=0A=
+static GLuint shader_arb_generate_pshader(IWineD3DPixelShader *iface, =
SHADER_BUFFER *buffer, const struct ps_compile_args *args) {=0A=
     IWineD3DPixelShaderImpl *This =3D (IWineD3DPixelShaderImpl *)iface;=0A=
     const shader_reg_maps* reg_maps =3D &This->baseShader.reg_maps;=0A=
     CONST DWORD *function =3D This->baseShader.function;=0A=
diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c=0A=
index 9cc0e2b..1e0c884 100644=0A=
--- a/dlls/wined3d/baseshader.c=0A=
+++ b/dlls/wined3d/baseshader.c=0A=
@@ -1129,7 +1129,7 @@ static void shader_none_destroy(IWineD3DBaseShader =
*iface) {}=0A=
 static HRESULT shader_none_alloc(IWineD3DDevice *iface) {return =
WINED3D_OK;}=0A=
 static void shader_none_free(IWineD3DDevice *iface) {}=0A=
 static BOOL shader_none_dirty_const(IWineD3DDevice *iface) {return =
FALSE;}=0A=
-static GLuint shader_none_generate_pshader(IWineD3DPixelShader *iface, =
SHADER_BUFFER *buffer) {=0A=
+static GLuint shader_none_generate_pshader(IWineD3DPixelShader *iface, =
SHADER_BUFFER *buffer, const struct ps_compile_args *args) {=0A=
     FIXME("NONE shader backend asked to generate a pixel shader\n");=0A=
     return 0;=0A=
 }=0A=
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c=0A=
index ee0aa6c..0c6a25a 100644=0A=
--- a/dlls/wined3d/glsl_shader.c=0A=
+++ b/dlls/wined3d/glsl_shader.c=0A=
@@ -3572,7 +3572,7 @@ static BOOL shader_glsl_dirty_const(IWineD3DDevice =
*iface) {=0A=
     return FALSE;=0A=
 }=0A=
 =0A=
-static GLuint shader_glsl_generate_pshader(IWineD3DPixelShader *iface, =
SHADER_BUFFER *buffer) {=0A=
+static GLuint shader_glsl_generate_pshader(IWineD3DPixelShader *iface, =
SHADER_BUFFER *buffer, const struct ps_compile_args *args) {=0A=
     IWineD3DPixelShaderImpl *This =3D (IWineD3DPixelShaderImpl *)iface;=0A=
     const struct shader_reg_maps *reg_maps =3D =
&This->baseShader.reg_maps;=0A=
     CONST DWORD *function =3D This->baseShader.function;=0A=
diff --git a/dlls/wined3d/pixelshader.c b/dlls/wined3d/pixelshader.c=0A=
index b6b84b0..94a45cf 100644=0A=
--- a/dlls/wined3d/pixelshader.c=0A=
+++ b/dlls/wined3d/pixelshader.c=0A=
@@ -423,6 +423,7 @@ static GLuint =
pixelshader_compile(IWineD3DPixelShaderImpl *This, const struct ps=0A=
     CONST DWORD *function =3D This->baseShader.function;=0A=
     GLuint retval;=0A=
     SHADER_BUFFER buffer;=0A=
+    IWineD3DDeviceImpl *device =3D (IWineD3DDeviceImpl *) =
This->baseShader.device;=0A=
 =0A=
     TRACE("(%p) : function %p\n", This, function);=0A=
 =0A=
@@ -435,7 +436,7 @@ static GLuint =
pixelshader_compile(IWineD3DPixelShaderImpl *This, const struct ps=0A=
     /* Generate the HW shader */=0A=
     TRACE("(%p) : Generating hardware program\n", This);=0A=
     shader_buffer_init(&buffer);=0A=
-    retval =3D ((IWineD3DDeviceImpl =
*)This->baseShader.device)->shader_backend->shader_generate_pshader((IWin=
eD3DPixelShader *)This, &buffer);=0A=
+    retval =3D =
device->shader_backend->shader_generate_pshader((IWineD3DPixelShader =
*)This, &buffer, args);=0A=
     shader_buffer_free(&buffer);=0A=
 =0A=
     This->baseShader.is_compiled =3D TRUE;=0A=
diff --git a/dlls/wined3d/wined3d_private.h =
b/dlls/wined3d/wined3d_private.h=0A=
index 92a25b0..f7e617e 100644=0A=
--- a/dlls/wined3d/wined3d_private.h=0A=
+++ b/dlls/wined3d/wined3d_private.h=0A=
@@ -427,6 +427,28 @@ enum tex_types=0A=
     tex_type_count =3D 5,=0A=
 };=0A=
 =0A=
+enum vertexprocessing_mode {=0A=
+    fixedfunction,=0A=
+    vertexshader,=0A=
+    pretransformed=0A=
+};=0A=
+=0A=
+struct stb_const_desc {=0A=
+    char                    texunit;=0A=
+    UINT                    const_num;=0A=
+};=0A=
+=0A=
+/* Stateblock dependent parameters which have to be hardcoded=0A=
+ * into the shader code=0A=
+ */=0A=
+struct ps_compile_args {=0A=
+    struct color_fixup_desc     color_fixup[MAX_FRAGMENT_SAMPLERS];=0A=
+    BOOL                        srgb_correction;=0A=
+    enum vertexprocessing_mode  vp_mode;=0A=
+    /* Projected textures(ps 1.0-1.3) */=0A=
+    /* Texture types(2D, Cube, 3D) in ps 1.x */=0A=
+};=0A=
+=0A=
 typedef struct {=0A=
     const SHADER_HANDLER *shader_instruction_handler_table;=0A=
     void (*shader_select)(IWineD3DDevice *iface, BOOL usePS, BOOL =
useVS);=0A=
@@ -439,7 +461,7 @@ typedef struct {=0A=
     HRESULT (*shader_alloc_private)(IWineD3DDevice *iface);=0A=
     void (*shader_free_private)(IWineD3DDevice *iface);=0A=
     BOOL (*shader_dirtifyable_constants)(IWineD3DDevice *iface);=0A=
-    GLuint (*shader_generate_pshader)(IWineD3DPixelShader *iface, =
SHADER_BUFFER *buffer);=0A=
+    GLuint (*shader_generate_pshader)(IWineD3DPixelShader *iface, =
SHADER_BUFFER *buffer, const struct ps_compile_args *args);=0A=
     void (*shader_generate_vshader)(IWineD3DVertexShader *iface, =
SHADER_BUFFER *buffer);=0A=
     void (*shader_get_caps)(WINED3DDEVTYPE devtype, const =
WineD3D_GL_Info *gl_info, struct shader_caps *caps);=0A=
     BOOL (*shader_color_fixup_supported)(struct color_fixup_desc fixup);=0A=
@@ -2349,29 +2371,6 @@ HRESULT =
IWineD3DVertexShaderImpl_CompileShader(IWineD3DVertexShader *iface);=0A=
 =
/************************************************************************=
*****=0A=
  * IDirect3DPixelShader implementation structure=0A=
  */=0A=
-=0A=
-enum vertexprocessing_mode {=0A=
-    fixedfunction,=0A=
-    vertexshader,=0A=
-    pretransformed=0A=
-};=0A=
-=0A=
-struct stb_const_desc {=0A=
-    char                    texunit;=0A=
-    UINT                    const_num;=0A=
-};=0A=
-=0A=
-/* Stateblock dependent parameters which have to be hardcoded=0A=
- * into the shader code=0A=
- */=0A=
-struct ps_compile_args {=0A=
-    struct color_fixup_desc     color_fixup[MAX_FRAGMENT_SAMPLERS];=0A=
-    BOOL                        srgb_correction;=0A=
-    enum vertexprocessing_mode  vp_mode;=0A=
-    /* Projected textures(ps 1.0-1.3) */=0A=
-    /* Texture types(2D, Cube, 3D) in ps 1.x */=0A=
-};=0A=
-=0A=
 struct ps_compiled_shader {=0A=
     struct ps_compile_args      args;=0A=
     GLuint                      prgId;=0A=
-- =0A=
1.5.6.4=0A=
=0A=

------=_NextPart_000_0023_01C9613A.8D096390--




More information about the wine-patches mailing list