Conor McCarthy : vkd3d-shader/sm4: Skip second-order extended operands.

Alexandre Julliard julliard at winehq.org
Tue Sep 28 16:01:44 CDT 2021


Module: vkd3d
Branch: master
Commit: 04bb6c395fa68d0f29891b2968a5003106f2271f
URL:    https://source.winehq.org/git/vkd3d.git/?a=commit;h=04bb6c395fa68d0f29891b2968a5003106f2271f

Author: Conor McCarthy <cmccarthy at codeweavers.com>
Date:   Tue Sep 28 16:07:24 2021 +0200

vkd3d-shader/sm4: Skip second-order extended operands.

Signed-off-by: Conor McCarthy <cmccarthy at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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 6afb92c..23814a3 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);
         }




More information about the wine-cvs mailing list