From: Conor McCarthy Subject: [PATCH vkd3d v2 6/9] vkd3d-shader: Extract minimum precision operand modifier. Message-Id: <20210823152328.33784-6-cmccarthy@codeweavers.com> Date: Tue, 24 Aug 2021 01:23:25 +1000 In-Reply-To: <20210823152328.33784-1-cmccarthy@codeweavers.com> References: <20210823152328.33784-1-cmccarthy@codeweavers.com> The modifier if present is ignored and a warning emitted. Signed-off-by: Conor McCarthy --- 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