[PATCH vkd3d 4/4] vkd3d-shader/sm4: Skip second-order extended operands.
Henri Verbeet
hverbeet at codeweavers.com
Tue Sep 28 09:07:24 CDT 2021
From: Conor McCarthy <cmccarthy at codeweavers.com>
Signed-off-by: Conor McCarthy <cmccarthy at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
---
libs/vkd3d-shader/dxbc.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c
index 6afb92c5..23814a35 100644
--- a/libs/vkd3d-shader/dxbc.c
+++ b/libs/vkd3d-shader/dxbc.c
@@ -1213,6 +1213,12 @@ static bool shader_sm4_read_param(struct vkd3d_sm4_data *priv, const DWORD **ptr
}
extended = *(*ptr)++;
+ if (extended & VKD3D_SM4_EXTENDED_OPERAND)
+ {
+ FIXME("Skipping second-order extended operand.\n");
+ *ptr += *ptr < end;
+ }
+
type = extended & VKD3D_SM4_EXTENDED_OPERAND_TYPE_MASK;
if (type == VKD3D_SM4_EXTENDED_OPERAND_MODIFIER)
{
@@ -1254,7 +1260,8 @@ static bool shader_sm4_read_param(struct vkd3d_sm4_data *priv, const DWORD **ptr
param->non_uniform = true;
extended &= ~(VKD3D_SM4_EXTENDED_OPERAND_TYPE_MASK | VKD3D_SM4_REGISTER_MODIFIER_MASK
- | VKD3D_SM4_REGISTER_PRECISION_MASK | VKD3D_SM4_REGISTER_NON_UNIFORM_MASK);
+ | VKD3D_SM4_REGISTER_PRECISION_MASK | VKD3D_SM4_REGISTER_NON_UNIFORM_MASK
+ | VKD3D_SM4_EXTENDED_OPERAND);
if (extended)
FIXME("Skipping unhandled extended operand bits 0x%08x.\n", extended);
}
--
2.20.1
More information about the wine-devel
mailing list