[dx81] VS fix for 3dmark
Jason Edmeades
us at the-edmeades.demon.co.uk
Wed Sep 24 19:28:22 CDT 2003
After all the previous software vertex shader fixes, 3dmark still wasnt
right. This one resolves it, and with this patch, a 3dmark2001se version
installed on windows and copied onto wine (install doesnt work yet) will
display most tests about right in low res mode only, once. Note you can
compile out the vertex shader support and it still works (probably a
better idea if you are after a measurement!), but I am using it as a
testbed for the software vertexshader code as well.
FYI To get them to run multiple times I have found a horrendous hole in
our light code, and have a patch which works for 3dmark but not much
else... As soon as I have it working without any obvious regressions it
will probably be my next patch but its large and ugly.
This will then leave the high res modes, which needs render to texture
support which is completely broken (I love it when a fixme says expect a
crash...). Its on my list , but time is short at the moment.
Changelog
Add real support for VS1.1, ie make the relative addressing mode work
Jason
-------------- next part --------------
diff -u3 dlls/d3d8/dx80/shader.c dlls/d3d8/shader.c
--- dlls/d3d8/dx80/shader.c 2003-09-18 20:18:25.000000000 +0100
+++ dlls/d3d8/shader.c 2003-09-23 00:10:59.000000000 +0100
@@ -410,7 +410,7 @@
TRACE("V[%lu]", reg);
break;
case D3DSPR_CONST:
- TRACE("C[%s%lu]", (reg & D3DVS_ADDRMODE_RELATIVE) ? "a0.x + " : "", reg);
+ TRACE("C[%s%lu]", (param & D3DVS_ADDRMODE_RELATIVE) ? "a0.x + " : "", reg);
break;
case D3DSPR_ADDR: /*case D3DSPR_TEXTURE:*/
TRACE("a[%lu]", reg);
@@ -656,7 +656,7 @@
p[i] = &input->V[reg];
break;
case D3DSPR_CONST:
- if (reg & D3DVS_ADDRMODE_RELATIVE) {
+ if (pToken[i] & D3DVS_ADDRMODE_RELATIVE) {
p[i] = &vshader->data->C[(DWORD) A[0].x + reg];
} else {
p[i] = &vshader->data->C[reg];
@@ -1050,7 +1050,7 @@
TRACE("V[%lu]", reg);
break;
case D3DSPR_CONST:
- TRACE("C[%s%lu]", (reg & D3DVS_ADDRMODE_RELATIVE) ? "a0.x + " : "", reg);
+ TRACE("C[%s%lu]", (param & D3DVS_ADDRMODE_RELATIVE) ? "a0.x + " : "", reg);
break;
case D3DSPR_TEXTURE: /* case D3DSPR_ADDR: */
TRACE("t[%lu]", reg);
More information about the wine-patches
mailing list