Commit d4dd9869 authored by Ivan Gyurdiev's avatar Ivan Gyurdiev Committed by Alexandre Julliard

wined3d: Allow multiple output modifiers.

parent c94ecdff
...@@ -547,13 +547,13 @@ void shader_dump_ins_modifiers(const DWORD output) { ...@@ -547,13 +547,13 @@ void shader_dump_ins_modifiers(const DWORD output) {
default: TRACE("_unhandled_shift(%ld)", shift); break; default: TRACE("_unhandled_shift(%ld)", shift); break;
} }
switch(mmask) { if (mmask & D3DSPDM_SATURATE) TRACE("_sat");
case D3DSPDM_NONE: break; if (mmask & D3DSPDM_PARTIALPRECISION) TRACE("_pp");
case D3DSPDM_SATURATE: TRACE("_sat"); break; if (mmask & D3DSPDM_MSAMPCENTROID) TRACE("_centroid");
case D3DSPDM_PARTIALPRECISION: TRACE("_pp"); break;
case D3DSPDM_MSAMPCENTROID: TRACE("_centroid"); break; mmask &= ~(D3DSPDM_SATURATE | D3DSPDM_PARTIALPRECISION | D3DSPDM_MSAMPCENTROID);
default: TRACE("_unhandled_modifier(%#lx)", mmask); break; if (mmask)
} FIXME("_unrecognized_modifier(%#lx)", mmask >> D3DSP_DSTMOD_SHIFT);
} }
/* TODO: Move other shared code here */ /* TODO: Move other shared code here */
...@@ -981,9 +981,13 @@ void pshader_hw_map2gl(SHADER_OPCODE_ARG* arg) { ...@@ -981,9 +981,13 @@ void pshader_hw_map2gl(SHADER_OPCODE_ARG* arg) {
unsigned int i; unsigned int i;
char tmpLine[256]; char tmpLine[256];
/* Output token related */
char output_rname[256]; char output_rname[256];
char output_wmask[20]; char output_wmask[20];
BOOL saturate = FALSE; BOOL saturate = FALSE;
BOOL centroid = FALSE;
BOOL partialprecision = FALSE;
DWORD shift; DWORD shift;
TRACE("Appending glname %s to tmpLine\n", curOpcode->glname); TRACE("Appending glname %s to tmpLine\n", curOpcode->glname);
...@@ -992,17 +996,19 @@ void pshader_hw_map2gl(SHADER_OPCODE_ARG* arg) { ...@@ -992,17 +996,19 @@ void pshader_hw_map2gl(SHADER_OPCODE_ARG* arg) {
/* Process modifiers */ /* Process modifiers */
if (0 != (dst & D3DSP_DSTMOD_MASK)) { if (0 != (dst & D3DSP_DSTMOD_MASK)) {
DWORD mask = dst & D3DSP_DSTMOD_MASK; DWORD mask = dst & D3DSP_DSTMOD_MASK;
switch (mask) {
case D3DSPDM_SATURATE: saturate = TRUE; break; saturate = mask & D3DSPDM_SATURATE;
#if 0 /* as yet unhandled modifiers */ centroid = mask & D3DSPDM_MSAMPCENTROID;
case D3DSPDM_CENTROID: centroid = TRUE; break; partialprecision = mask & D3DSPDM_PARTIALPRECISION;
case D3DSPDM_PP: partialpresision = TRUE; break; mask &= ~(D3DSPDM_MSAMPCENTROID | D3DSPDM_PARTIALPRECISION | D3DSPDM_SATURATE);
#endif
default: if (mask)
TRACE("_unhandled_modifier(0x%08lx)\n", mask); FIXME("Unrecognized modifier(0x%#lx)\n", mask >> D3DSP_DSTMOD_SHIFT);
}
} if (centroid)
shift = (dst & D3DSP_DSTSHIFT_MASK) >> D3DSP_DSTSHIFT_SHIFT; FIXME("Unhandled modifier(0x%#lx)\n", mask >> D3DSP_DSTMOD_SHIFT);
}
shift = (dst & D3DSP_DSTSHIFT_MASK) >> D3DSP_DSTSHIFT_SHIFT;
/* Generate input and output registers */ /* Generate input and output registers */
if (curOpcode->num_params > 0) { if (curOpcode->num_params > 0) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment