[PATCH vkd3d v2 6/9] vkd3d-shader: Extract minimum precision operand modifier.
Conor McCarthy
cmccarthy at codeweavers.com
Mon Aug 23 10:23:25 CDT 2021
The modifier if present is ignored and a warning emitted.
Signed-off-by: Conor McCarthy <cmccarthy at codeweavers.com>
---
libs/vkd3d-shader/dxbc.c | 6 +++++-
libs/vkd3d-shader/sm4.h | 3 +++
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c
index 8bb07a2b..c188a2b6 100644
--- a/libs/vkd3d-shader/dxbc.c
+++ b/libs/vkd3d-shader/dxbc.c
@@ -1204,6 +1204,7 @@ static bool shader_sm4_read_param(struct vkd3d_sm4_data *priv, const DWORD **ptr
if (type == VKD3D_SM4_EXTENDED_OPERAND_MODIFIER)
{
+ unsigned int min_precis = (m & VKD3D_SM4_REGISTER_MIN_PRECIS_MASK) >> VKD3D_SM4_REGISTER_MIN_PRECIS_SHIFT;
unsigned int op_modifier = (m & VKD3D_SM4_REGISTER_MODIFIER_MASK) >> VKD3D_SM4_REGISTER_MODIFIER_SHIFT;
switch (op_modifier & VKD3D_SM4_REGISTER_MODIFIER_ABS_NEGATE)
@@ -1226,13 +1227,16 @@ static bool shader_sm4_read_param(struct vkd3d_sm4_data *priv, const DWORD **ptr
op_modifier &= ~VKD3D_SM4_REGISTER_MODIFIER_ABS_NEGATE;
if (op_modifier)
FIXME("Skipping modifier flags %#x.\n", op_modifier);
+
+ if (min_precis)
+ WARN("Ignoring minimum precision %#x.\n", min_precis);
}
else if (type)
{
FIXME("Unhandled extended operand type %#x.\n", type);
}
- m &= ~0u << VKD3D_SM4_REGISTER_MIN_PRECIS_SHIFT;
+ m &= ~0u << VKD3D_SM4_REGISTER_NON_UNIFORM_SHIFT;
if (m)
FIXME("Skipping modifier 0x%08x.\n", m);
}
diff --git a/libs/vkd3d-shader/sm4.h b/libs/vkd3d-shader/sm4.h
index 8dd00590..2e2eea75 100644
--- a/libs/vkd3d-shader/sm4.h
+++ b/libs/vkd3d-shader/sm4.h
@@ -102,6 +102,9 @@
#define VKD3D_SM4_REGISTER_MODIFIER_MASK (0xffu << VKD3D_SM4_REGISTER_MODIFIER_SHIFT)
#define VKD3D_SM4_REGISTER_MIN_PRECIS_SHIFT 14
+#define VKD3D_SM4_REGISTER_MIN_PRECIS_MASK (0x7u << VKD3D_SM4_REGISTER_MIN_PRECIS_SHIFT)
+
+#define VKD3D_SM4_REGISTER_NON_UNIFORM_SHIFT 17
#define VKD3D_SM4_ADDRESSING_SHIFT2 28
#define VKD3D_SM4_ADDRESSING_MASK2 (0x3u << VKD3D_SM4_ADDRESSING_SHIFT2)
--
2.32.0
More information about the wine-devel
mailing list