[PATCH vkd3d v2 7/9] vkd3d-shader: Extract operand modifier for non-uniform descriptor indexing.
Conor McCarthy
cmccarthy at codeweavers.com
Mon Aug 23 10:23:26 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 | 7 ++++++-
libs/vkd3d-shader/sm4.h | 1 +
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c
index c188a2b6..156b81a3 100644
--- a/libs/vkd3d-shader/dxbc.c
+++ b/libs/vkd3d-shader/dxbc.c
@@ -1206,6 +1206,8 @@ static bool shader_sm4_read_param(struct vkd3d_sm4_data *priv, const DWORD **ptr
{
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;
+ unsigned int non_uniform =
+ (m & VKD3D_SM4_REGISTER_NON_UNIFORM_MASK) >> VKD3D_SM4_REGISTER_NON_UNIFORM_SHIFT;
switch (op_modifier & VKD3D_SM4_REGISTER_MODIFIER_ABS_NEGATE)
{
@@ -1230,13 +1232,16 @@ static bool shader_sm4_read_param(struct vkd3d_sm4_data *priv, const DWORD **ptr
if (min_precis)
WARN("Ignoring minimum precision %#x.\n", min_precis);
+
+ if (non_uniform)
+ FIXME("Ignoring extended modifier NON_UNIFORM.\n");
}
else if (type)
{
FIXME("Unhandled extended operand type %#x.\n", type);
}
- m &= ~0u << VKD3D_SM4_REGISTER_NON_UNIFORM_SHIFT;
+ m &= ~VKD3D_SM4_REGISTER_NON_UNIFORM_MASK & (~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 2e2eea75..6a4b1a8d 100644
--- a/libs/vkd3d-shader/sm4.h
+++ b/libs/vkd3d-shader/sm4.h
@@ -105,6 +105,7 @@
#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_REGISTER_NON_UNIFORM_MASK (0x1u << VKD3D_SM4_REGISTER_NON_UNIFORM_SHIFT)
#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