Henri Verbeet : wined3d: Recognize the SM4 ABS and NEG source modifiers.
Alexandre Julliard
julliard at winehq.org
Wed Oct 13 11:43:09 CDT 2010
Module: wine
Branch: master
Commit: e54d9afbc32edc9dba3faac7002eb3dae4ed160e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e54d9afbc32edc9dba3faac7002eb3dae4ed160e
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Wed Oct 13 12:26:33 2010 +0200
wined3d: Recognize the SM4 ABS and NEG source modifiers.
---
dlls/wined3d/shader_sm4.c | 25 +++++++++++++++++++++++--
1 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/dlls/wined3d/shader_sm4.c b/dlls/wined3d/shader_sm4.c
index 080f53b..47cece3 100644
--- a/dlls/wined3d/shader_sm4.c
+++ b/dlls/wined3d/shader_sm4.c
@@ -366,7 +366,29 @@ static void shader_sm4_read_src_param(void *data, const DWORD **ptr, struct wine
if (token & WINED3D_SM4_REGISTER_MODIFIER)
{
DWORD modifier = *(*ptr)++;
- FIXME("Skipping modifier 0x%08x.\n", modifier);
+
+ /* FIXME: This will probably break down at some point. The SM4
+ * modifiers look like flags, while wined3d currently has an enum
+ * with possible combinations, e.g. WINED3DSPSM_ABSNEG. */
+ switch (modifier)
+ {
+ case 0x41:
+ src_param->modifiers = WINED3DSPSM_NEG;
+ break;
+
+ case 0x81:
+ src_param->modifiers = WINED3DSPSM_ABS;
+ break;
+
+ default:
+ FIXME("Skipping modifier 0x%08x.\n", modifier);
+ src_param->modifiers = WINED3DSPSM_NONE;
+ break;
+ }
+ }
+ else
+ {
+ src_param->modifiers = WINED3DSPSM_NONE;
}
order = (token & WINED3D_SM4_REGISTER_ORDER_MASK) >> WINED3D_SM4_REGISTER_ORDER_SHIFT;
@@ -409,7 +431,6 @@ static void shader_sm4_read_src_param(void *data, const DWORD **ptr, struct wine
src_param->swizzle = (token & WINED3D_SM4_SWIZZLE_MASK) >> WINED3D_SM4_SWIZZLE_SHIFT;
}
- src_param->modifiers = 0;
src_param->reg.rel_addr = NULL;
map_register(priv, &src_param->reg);
More information about the wine-cvs
mailing list