[PATCH vkd3d v2 8/9] vkd3d-shader: Skip second-order extended operand if present.

Conor McCarthy cmccarthy at codeweavers.com
Mon Aug 23 10:23:27 CDT 2021


Signed-off-by: Conor McCarthy <cmccarthy 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 156b81a3..4fa5213b 100644
--- a/libs/vkd3d-shader/dxbc.c
+++ b/libs/vkd3d-shader/dxbc.c
@@ -1241,7 +1241,14 @@ static bool shader_sm4_read_param(struct vkd3d_sm4_data *priv, const DWORD **ptr
             FIXME("Unhandled extended operand type %#x.\n", type);
         }
 
-        m &= ~VKD3D_SM4_REGISTER_NON_UNIFORM_MASK & (~0u << VKD3D_SM4_REGISTER_NON_UNIFORM_SHIFT);
+        if (m & VKD3D_SM4_EXTENDED_OPERAND)
+        {
+            FIXME("Skipping second-order extended operand.\n");
+            *ptr += *ptr < end;
+        }
+
+        m &= ~VKD3D_SM4_EXTENDED_OPERAND & ~VKD3D_SM4_REGISTER_NON_UNIFORM_MASK
+                & (~0u << VKD3D_SM4_REGISTER_NON_UNIFORM_SHIFT);
         if (m)
             FIXME("Skipping modifier 0x%08x.\n", m);
     }
-- 
2.32.0




More information about the wine-devel mailing list