[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