[PATCH vkd3d 4/6] libs/vkd3d-shader: Recognize more shader registers.

Józef Kucia joseph.kucia at gmail.com
Tue May 29 05:50:31 CDT 2018


From: Józef Kucia <jkucia at codeweavers.com>

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
 libs/vkd3d-shader/dxbc.c                 | 9 ++++++++-
 libs/vkd3d-shader/vkd3d_shader_private.h | 5 +++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c
index c8e5b0802987..b8e22ac78081 100644
--- a/libs/vkd3d-shader/dxbc.c
+++ b/libs/vkd3d-shader/dxbc.c
@@ -295,6 +295,7 @@ enum vkd3d_sm4_opcode
     VKD3D_SM5_OP_IMM_ATOMIC_UMAX                  = 0xbc,
     VKD3D_SM5_OP_IMM_ATOMIC_UMIN                  = 0xbd,
     VKD3D_SM5_OP_SYNC                             = 0xbe,
+    VKD3D_SM5_OP_EVAL_SAMPLE_INDEX                = 0xcc,
     VKD3D_SM5_OP_DCL_GS_INSTANCES                 = 0xce,
 };
 
@@ -312,6 +313,7 @@ enum vkd3d_sm4_register_type
     VKD3D_SM4_RT_PRIMID                  = 0x0b,
     VKD3D_SM4_RT_DEPTHOUT                = 0x0c,
     VKD3D_SM4_RT_NULL                    = 0x0d,
+    VKD3D_SM4_RT_RASTERIZER              = 0x0e,
     VKD3D_SM4_RT_OMASK                   = 0x0f,
     VKD3D_SM5_RT_STREAM                  = 0x10,
     VKD3D_SM5_RT_FUNCTION_BODY           = 0x11,
@@ -331,6 +333,8 @@ enum vkd3d_sm4_register_type
     VKD3D_SM5_RT_COVERAGE                = 0x23,
     VKD3D_SM5_RT_LOCAL_THREAD_INDEX      = 0x24,
     VKD3D_SM5_RT_GS_INSTANCE_ID          = 0x25,
+    VKD3D_SM5_RT_DEPTHOUT_GREATER_EQUAL  = 0x26,
+    VKD3D_SM5_RT_DEPTHOUT_LESS_EQUAL     = 0x27,
 };
 
 enum vkd3d_sm4_output_primitive_type
@@ -1103,6 +1107,7 @@ static const struct vkd3d_sm4_opcode_info opcode_table[] =
     {VKD3D_SM5_OP_IMM_ATOMIC_UMIN,                  VKD3DSIH_IMM_ATOMIC_UMIN,                  "uU",   "iu"},
     {VKD3D_SM5_OP_SYNC,                             VKD3DSIH_SYNC,                             "",     "",
             shader_sm5_read_sync},
+    {VKD3D_SM5_OP_EVAL_SAMPLE_INDEX,                VKD3DSIH_EVAL_SAMPLE_INDEX,                "f",    "fi"},
     {VKD3D_SM5_OP_DCL_GS_INSTANCES,                 VKD3DSIH_DCL_GS_INSTANCES,                 "",     "",
             shader_sm4_read_declaration_count},
 };
@@ -1123,7 +1128,7 @@ static const enum vkd3d_shader_register_type register_type_table[] =
     /* VKD3D_SM4_RT_PRIMID */                  VKD3DSPR_PRIMID,
     /* VKD3D_SM4_RT_DEPTHOUT */                VKD3DSPR_DEPTHOUT,
     /* VKD3D_SM4_RT_NULL */                    VKD3DSPR_NULL,
-    /* UNKNOWN */                              ~0u,
+    /* VKD3D_SM4_RT_RASTERIZER */              VKD3DSPR_RASTERIZER,
     /* VKD3D_SM4_RT_OMASK */                   VKD3DSPR_SAMPLEMASK,
     /* VKD3D_SM5_RT_STREAM */                  VKD3DSPR_STREAM,
     /* VKD3D_SM5_RT_FUNCTION_BODY */           VKD3DSPR_FUNCTIONBODY,
@@ -1147,6 +1152,8 @@ static const enum vkd3d_shader_register_type register_type_table[] =
     /* VKD3D_SM5_RT_COVERAGE */                VKD3DSPR_COVERAGE,
     /* VKD3D_SM5_RT_LOCAL_THREAD_INDEX */      VKD3DSPR_LOCALTHREADINDEX,
     /* VKD3D_SM5_RT_GS_INSTANCE_ID */          VKD3DSPR_GSINSTID,
+    /* VKD3D_SM5_RT_DEPTHOUT_GREATER_EQUAL */  VKD3DSPR_DEPTHOUTGE,
+    /* VKD3D_SM5_RT_DEPTHOUT_LESS_EQUAL */     VKD3DSPR_DEPTHOUTLE,
 };
 
 static const struct vkd3d_sm4_opcode_info *get_opcode_info(enum vkd3d_sm4_opcode opcode)
diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h
index 1721977581df..ba8c6c906958 100644
--- a/libs/vkd3d-shader/vkd3d_shader_private.h
+++ b/libs/vkd3d-shader/vkd3d_shader_private.h
@@ -156,6 +156,7 @@ enum VKD3D_SHADER_INSTRUCTION_HANDLER
     VKD3DSIH_ENDREP,
     VKD3DSIH_ENDSWITCH,
     VKD3DSIH_EQ,
+    VKD3DSIH_EVAL_SAMPLE_INDEX,
     VKD3DSIH_EXP,
     VKD3DSIH_EXPP,
     VKD3DSIH_F16TOF32,
@@ -352,6 +353,9 @@ enum vkd3d_shader_register_type
     VKD3DSPR_COVERAGE,
     VKD3DSPR_SAMPLEMASK,
     VKD3DSPR_GSINSTID,
+    VKD3DSPR_DEPTHOUTGE,
+    VKD3DSPR_DEPTHOUTLE,
+    VKD3DSPR_RASTERIZER,
 
     VKD3DSPR_INVALID = ~0u,
 };
@@ -436,6 +440,7 @@ enum vkd3d_shader_interpolation_mode
 enum vkd3d_shader_global_flags
 {
     VKD3DSGF_REFACTORING_ALLOWED               = 0x1,
+    VKD3DSGF_FORCE_EARLY_DEPTH_STENCIL         = 0x4,
     VKD3DSGF_ENABLE_RAW_AND_STRUCTURED_BUFFERS = 0x8,
 };
 
-- 
2.16.1




More information about the wine-devel mailing list