[PATCH] wined3d: Add #defines and logs for missing new SM5 modifiers.
Guillaume Charifi
guillaume.charifi at sfr.fr
Thu Jun 2 08:49:18 CDT 2016
Signed-off-by: Guillaume Charifi <guillaume.charifi at sfr.fr>
---
dlls/wined3d/shader_sm4.c | 78 ++++++++++++++++++++++++++++++++---------------
1 file changed, 54 insertions(+), 24 deletions(-)
diff --git a/dlls/wined3d/shader_sm4.c b/dlls/wined3d/shader_sm4.c
index eb8e4e5..3adaf70 100644
--- a/dlls/wined3d/shader_sm4.c
+++ b/dlls/wined3d/shader_sm4.c
@@ -25,6 +25,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d_shader);
WINE_DECLARE_DEBUG_CHANNEL(d3d_bytecode);
#define WINED3D_SM4_INSTRUCTION_MODIFIER (0x1u << 31)
+#define WINED3D_SM4_MODIFIER_TYPE_MASK 0x3f
#define WINED3D_SM4_MODIFIER_AOFFIMMI 0x1
#define WINED3D_SM4_AOFFIMMI_U_SHIFT 9
@@ -34,6 +35,22 @@ WINE_DECLARE_DEBUG_CHANNEL(d3d_bytecode);
#define WINED3D_SM4_AOFFIMMI_W_SHIFT 17
#define WINED3D_SM4_AOFFIMMI_W_MASK (0xfu << WINED3D_SM4_AOFFIMMI_W_SHIFT)
+#define WINED3D_SM5_MODIFIER_RESDIM 0x2
+#define WINED3D_SM5_RESDIM_RES_TYPE_SHIFT 6
+#define WINED3D_SM5_RESDIM_RES_TYPE_MASK (0x1fu << WINED3D_SM5_RESDIM_RES_TYPE_SHIFT)
+#define WINED3D_SM5_RESDIM_BUF_STRIDE_SHIFT 11
+#define WINED3D_SM5_RESDIM_BUF_STRIDE_MASK (0xfffu << WINED3D_SM5_RESDIM_BUF_STRIDE_SHIFT)
+
+#define WINED3D_SM5_MODIFIER_RETTYPE 0x3
+#define WINED3D_SM5_RETTYPE_X_SHIFT 6
+#define WINED3D_SM5_RETTYPE_X_MASK (0xfu << WINED3D_SM5_RETTYPE_X_SHIFT)
+#define WINED3D_SM5_RETTYPE_Y_SHIFT 10
+#define WINED3D_SM5_RETTYPE_Y_MASK (0xfu << WINED3D_SM5_RETTYPE_Y_SHIFT)
+#define WINED3D_SM5_RETTYPE_Z_SHIFT 14
+#define WINED3D_SM5_RETTYPE_Z_MASK (0xfu << WINED3D_SM5_RETTYPE_Z_SHIFT)
+#define WINED3D_SM5_RETTYPE_W_SHIFT 18
+#define WINED3D_SM5_RETTYPE_W_MASK (0xfu << WINED3D_SM5_RETTYPE_W_SHIFT)
+
#define WINED3D_SM4_INSTRUCTION_LENGTH_SHIFT 24
#define WINED3D_SM4_INSTRUCTION_LENGTH_MASK (0x1fu << WINED3D_SM4_INSTRUCTION_LENGTH_SHIFT)
@@ -1163,32 +1180,45 @@ static BOOL shader_sm4_read_dst_param(struct wined3d_sm4_data *priv, const DWORD
static void shader_sm4_read_instruction_modifier(DWORD modifier, struct wined3d_shader_instruction *ins)
{
- static const DWORD recognized_bits = WINED3D_SM4_INSTRUCTION_MODIFIER
- | WINED3D_SM4_MODIFIER_AOFFIMMI
- | WINED3D_SM4_AOFFIMMI_U_MASK
- | WINED3D_SM4_AOFFIMMI_V_MASK
- | WINED3D_SM4_AOFFIMMI_W_MASK;
-
- if (modifier & ~recognized_bits)
+ switch (modifier & WINED3D_SM4_MODIFIER_TYPE_MASK)
{
- FIXME("Unhandled modifier 0x%08x.\n", modifier);
- }
- else
- {
- /* Bit fields are used for sign extension */
- struct
+ case WINED3D_SM4_MODIFIER_AOFFIMMI:
{
- int u : 4;
- int v : 4;
- int w : 4;
- }
- aoffimmi;
- aoffimmi.u = (modifier & WINED3D_SM4_AOFFIMMI_U_MASK) >> WINED3D_SM4_AOFFIMMI_U_SHIFT;
- aoffimmi.v = (modifier & WINED3D_SM4_AOFFIMMI_V_MASK) >> WINED3D_SM4_AOFFIMMI_V_SHIFT;
- aoffimmi.w = (modifier & WINED3D_SM4_AOFFIMMI_W_MASK) >> WINED3D_SM4_AOFFIMMI_W_SHIFT;
- ins->texel_offset.u = aoffimmi.u;
- ins->texel_offset.v = aoffimmi.v;
- ins->texel_offset.w = aoffimmi.w;
+ /* Bit fields are used for sign extension */
+ struct {
+ int u : 4;
+ int v : 4;
+ int w : 4;
+ } aoffimmi;
+
+ aoffimmi.u = (modifier & WINED3D_SM4_AOFFIMMI_U_MASK) >> WINED3D_SM4_AOFFIMMI_U_SHIFT;
+ aoffimmi.v = (modifier & WINED3D_SM4_AOFFIMMI_V_MASK) >> WINED3D_SM4_AOFFIMMI_V_SHIFT;
+ aoffimmi.w = (modifier & WINED3D_SM4_AOFFIMMI_W_MASK) >> WINED3D_SM4_AOFFIMMI_W_SHIFT;
+ ins->texel_offset.u = aoffimmi.u;
+ ins->texel_offset.v = aoffimmi.v;
+ ins->texel_offset.w = aoffimmi.w;
+ break;
+ };
+
+ case WINED3D_SM5_MODIFIER_RESDIM:
+ FIXME("Unhandled modifier 0x%08x (WINED3D_SM5_MODIFIER_RESDIM, res_type=0x%02x).\n",
+ modifier,
+ (modifier & WINED3D_SM5_RESDIM_RES_TYPE_MASK) >> WINED3D_SM5_RESDIM_RES_TYPE_SHIFT
+ );
+ break;
+
+ case WINED3D_SM5_MODIFIER_RETTYPE:
+ FIXME("Unhandled modifier 0x%08x (WINED3D_SM5_MODIFIER_RETTYPE, x=0x%01x, y=0x%01x, z=0x%01x, w=0x%01x).\n",
+ modifier,
+ (modifier & WINED3D_SM5_RETTYPE_X_MASK) >> WINED3D_SM5_RETTYPE_X_SHIFT,
+ (modifier & WINED3D_SM5_RETTYPE_Y_MASK) >> WINED3D_SM5_RETTYPE_Y_SHIFT,
+ (modifier & WINED3D_SM5_RETTYPE_Z_MASK) >> WINED3D_SM5_RETTYPE_Z_SHIFT,
+ (modifier & WINED3D_SM5_RETTYPE_W_MASK) >> WINED3D_SM5_RETTYPE_W_SHIFT
+ );
+ break;
+
+ default:
+ FIXME("Unhandled modifier 0x%08x.\n", modifier);
}
}
--
2.7.4
More information about the wine-patches
mailing list