[WINED3D] Resend: share shader_dump_ins_modifiers()
Ivan Gyurdiev
ivg2 at cornell.edu
Wed May 10 12:53:07 CDT 2006
This is a resend. No changes were made to the original patch.
Changelog was:
=================================
Share shader_dump_ins_modifiers(), and make vertex shaders use it.
The saturate modifer (_sat) is valid on vs_3_0+, and it isn't being
shown in the trace.
-------------- next part --------------
---
dlls/wined3d/baseshader.c | 25 +++++++++++++++++++++++++
dlls/wined3d/pixelshader.c | 29 ++---------------------------
dlls/wined3d/vertexshader.c | 5 ++++-
dlls/wined3d/wined3d_private.h | 3 +++
4 files changed, 34 insertions(+), 28 deletions(-)
86da179d6413d4b85ead702d3aae5028fc188715
diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c
index b065336..2eb1d3c 100644
--- a/dlls/wined3d/baseshader.c
+++ b/dlls/wined3d/baseshader.c
@@ -234,4 +234,29 @@ void shader_program_dump_decl_usage(
}
}
+void shader_dump_ins_modifiers(const DWORD output) {
+
+ DWORD shift = (output & D3DSP_DSTSHIFT_MASK) >> D3DSP_DSTSHIFT_SHIFT;
+ DWORD mmask = output & D3DSP_DSTMOD_MASK;
+
+ switch (shift) {
+ case 0: break;
+ case 13: TRACE("_d8"); break;
+ case 14: TRACE("_d4"); break;
+ case 15: TRACE("_d2"); break;
+ case 1: TRACE("_x2"); break;
+ case 2: TRACE("_x4"); break;
+ case 3: TRACE("_x8"); break;
+ default: TRACE("_unhandled_shift(%ld)", shift); break;
+ }
+
+ switch(mmask) {
+ case D3DSPDM_NONE: break;
+ case D3DSPDM_SATURATE: TRACE("_sat"); break;
+ case D3DSPDM_PARTIALPRECISION: TRACE("_pp"); break;
+ case D3DSPDM_MSAMPCENTROID: TRACE("_centroid"); break;
+ default: TRACE("_unhandled_modifier(%#lx)", mmask); break;
+ }
+}
+
/* TODO: Move other shared code here */
diff --git a/dlls/wined3d/pixelshader.c b/dlls/wined3d/pixelshader.c
index 798708d..191866d 100644
--- a/dlls/wined3d/pixelshader.c
+++ b/dlls/wined3d/pixelshader.c
@@ -1486,31 +1486,6 @@ #if 1 /* if were using the data buffer o
#endif
}
-inline static void pshader_program_dump_ins_modifiers(const DWORD output) {
-
- DWORD shift = (output & D3DSP_DSTSHIFT_MASK) >> D3DSP_DSTSHIFT_SHIFT;
- DWORD mmask = output & D3DSP_DSTMOD_MASK;
-
- switch (shift) {
- case 0: break;
- case 13: TRACE("_d8"); break;
- case 14: TRACE("_d4"); break;
- case 15: TRACE("_d2"); break;
- case 1: TRACE("_x2"); break;
- case 2: TRACE("_x4"); break;
- case 3: TRACE("_x8"); break;
- default: TRACE("_unhandled_shift(%ld)", shift); break;
- }
-
- switch(mmask) {
- case D3DSPDM_NONE: break;
- case D3DSPDM_SATURATE: TRACE("_sat"); break;
- case D3DSPDM_PARTIALPRECISION: TRACE("_pp"); break;
- case D3DSPDM_MSAMPCENTROID: TRACE("_centroid"); break;
- default: TRACE("_unhandled_modifier(%#lx)", mmask); break;
- }
-}
-
inline static void pshader_program_dump_ps_param(const DWORD param, int input) {
static const char* rastout_reg_names[] = { "oC0", "oC1", "oC2", "oC3", "oDepth" };
static const char swizzle_reg_chars[] = "rgba";
@@ -1684,7 +1659,7 @@ HRESULT WINAPI IWineD3DPixelShaderImpl_S
else
TRACE("dcl");
- pshader_program_dump_ins_modifiers(param);
+ shader_dump_ins_modifiers(param);
TRACE(" ");
pshader_program_dump_ps_param(param, 0);
pToken += 2;
@@ -1710,7 +1685,7 @@ HRESULT WINAPI IWineD3DPixelShaderImpl_S
} else {
TRACE("%s", curOpcode->name);
if (curOpcode->num_params > 0) {
- pshader_program_dump_ins_modifiers(*pToken);
+ shader_dump_ins_modifiers(*pToken);
TRACE(" ");
pshader_program_dump_ps_param(*pToken, 0);
++pToken;
diff --git a/dlls/wined3d/vertexshader.c b/dlls/wined3d/vertexshader.c
index 0d60adf..04beabc 100644
--- a/dlls/wined3d/vertexshader.c
+++ b/dlls/wined3d/vertexshader.c
@@ -1734,6 +1734,7 @@ HRESULT WINAPI IWineD3DVertexShaderImpl_
parse_decl_usage(This, usage, param & D3DSP_REGNUM_MASK);
shader_program_dump_decl_usage(usage, param);
+ shader_dump_ins_modifiers(param);
TRACE(" ");
vshader_program_dump_vs_param(param, 0);
pToken += 2;
@@ -1757,8 +1758,10 @@ HRESULT WINAPI IWineD3DVertexShaderImpl_
++pToken;
++len;
} else {
- TRACE("%s ", curOpcode->name);
+ TRACE("%s", curOpcode->name);
if (curOpcode->num_params > 0) {
+ shader_dump_ins_modifiers(*pToken);
+ TRACE(" ");
vshader_program_dump_vs_param(*pToken, 0);
++pToken;
++len;
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 0ed390a..568cae4 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1244,6 +1244,9 @@ extern void shader_program_dump_decl_usa
DWORD dcl,
DWORD param);
+extern void shader_dump_ins_modifiers(
+ const DWORD output);
+
inline static int shader_get_regtype(const DWORD param) {
return (((param & D3DSP_REGTYPE_MASK) >> D3DSP_REGTYPE_SHIFT) |
((param & D3DSP_REGTYPE_MASK2) >> D3DSP_REGTYPE_SHIFT2));
--
1.3.1
More information about the wine-patches
mailing list