=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: wined3d: Fix wined3d_sysval_semantic values for tessellation factors.

Alexandre Julliard julliard at winehq.org
Mon May 22 15:54:03 CDT 2017


Module: wine
Branch: master
Commit: 5666bb8ffa4e7fdb228aab5dd936744844b049dd
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=5666bb8ffa4e7fdb228aab5dd936744844b049dd

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Sat May 20 13:46:01 2017 +0200

wined3d: Fix wined3d_sysval_semantic values for tessellation factors.

Apparently, dcl_input_* instructions do not use the same values as
sysval semantics in shader signatures.

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wined3d/shader.c          | 63 +++++++++++++++++++++---------------------
 dlls/wined3d/wined3d_private.h | 28 ++++++++++++++++++-
 include/wine/wined3d.h         | 18 ++++--------
 3 files changed, 65 insertions(+), 44 deletions(-)

diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
index f066d78..a4d3a59 100644
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -298,33 +298,33 @@ static const char * const semantic_names[] =
 
 static const struct
 {
-    enum wined3d_sysval_semantic sysval_semantic;
+    enum wined3d_shader_input_sysval_semantic sysval_semantic;
     const char *sysval_name;
 }
-sysval_semantic_names[] =
+shader_input_sysval_semantic_names[] =
 {
-    {WINED3D_SV_POSITION,                   "SV_Position"},
-    {WINED3D_SV_CLIP_DISTANCE,              "SV_ClipDistance"},
-    {WINED3D_SV_CULL_DISTANCE,              "SV_CullDistance"},
-    {WINED3D_SV_RENDER_TARGET_ARRAY_INDEX,  "SV_RenderTargetArrayIndex"},
-    {WINED3D_SV_VIEWPORT_ARRAY_INDEX,       "SV_ViewportArrayIndex"},
-    {WINED3D_SV_VERTEX_ID,                  "SV_VertexID"},
-    {WINED3D_SV_INSTANCE_ID,                "SV_InstanceID"},
-    {WINED3D_SV_PRIMITIVE_ID,               "SV_PrimitiveID"},
-    {WINED3D_SV_IS_FRONT_FACE,              "SV_IsFrontFace"},
-    {WINED3D_SV_SAMPLE_INDEX,               "SV_SampleIndex"},
-    {WINED3D_SV_QUAD_U0_TESS_FACTOR,        "finalQuadUeq0EdgeTessFactor"},
-    {WINED3D_SV_QUAD_V0_TESS_FACTOR,        "finalQuadVeq0EdgeTessFactor"},
-    {WINED3D_SV_QUAD_U1_TESS_FACTOR,        "finalQuadUeq1EdgeTessFactor"},
-    {WINED3D_SV_QUAD_V1_TESS_FACTOR,        "finalQuadVeq1EdgeTessFactor"},
-    {WINED3D_SV_QUAD_U_INNER_TESS_FACTOR,   "finalQuadUInsideTessFactor"},
-    {WINED3D_SV_QUAD_V_INNER_TESS_FACTOR,   "finalQuadVInsideTessFactor"},
-    {WINED3D_SV_TRIANGLE_U_TESS_FACTOR,     "finalTriUeq0EdgeTessFactor"},
-    {WINED3D_SV_TRIANGLE_V_TESS_FACTOR,     "finalTriVeq0EdgeTessFactor"},
-    {WINED3D_SV_TRIANGLE_W_TESS_FACTOR,     "finalTriWeq0EdgeTessFactor"},
-    {WINED3D_SV_TRIANGLE_INNER_TESS_FACTOR, "finalTriInsideTessFactor"},
-    {WINED3D_SV_LINE_DETAIL_TESS_FACTOR,    "finalLineDetailTessFactor"},
-    {WINED3D_SV_LINE_DENSITY_TESS_FACTOR,   "finalLineDensityTessFactor"},
+    {WINED3D_SIV_POSITION,                   "position"},
+    {WINED3D_SIV_CLIP_DISTANCE,              "clip_distance"},
+    {WINED3D_SIV_CULL_DISTANCE,              "cull_distance"},
+    {WINED3D_SIV_RENDER_TARGET_ARRAY_INDEX,  "render_target_array_index"},
+    {WINED3D_SIV_VIEWPORT_ARRAY_INDEX,       "viewport_array_index"},
+    {WINED3D_SIV_VERTEX_ID,                  "vertex_id"},
+    {WINED3D_SIV_INSTANCE_ID,                "instance_id"},
+    {WINED3D_SIV_PRIMITIVE_ID,               "primitive_id"},
+    {WINED3D_SIV_IS_FRONT_FACE,              "is_front_face"},
+    {WINED3D_SIV_SAMPLE_INDEX,               "sample_index"},
+    {WINED3D_SIV_QUAD_U0_TESS_FACTOR,        "finalQuadUeq0EdgeTessFactor"},
+    {WINED3D_SIV_QUAD_V0_TESS_FACTOR,        "finalQuadVeq0EdgeTessFactor"},
+    {WINED3D_SIV_QUAD_U1_TESS_FACTOR,        "finalQuadUeq1EdgeTessFactor"},
+    {WINED3D_SIV_QUAD_V1_TESS_FACTOR,        "finalQuadVeq1EdgeTessFactor"},
+    {WINED3D_SIV_QUAD_U_INNER_TESS_FACTOR,   "finalQuadUInsideTessFactor"},
+    {WINED3D_SIV_QUAD_V_INNER_TESS_FACTOR,   "finalQuadVInsideTessFactor"},
+    {WINED3D_SIV_TRIANGLE_U_TESS_FACTOR,     "finalTriUeq0EdgeTessFactor"},
+    {WINED3D_SIV_TRIANGLE_V_TESS_FACTOR,     "finalTriVeq0EdgeTessFactor"},
+    {WINED3D_SIV_TRIANGLE_W_TESS_FACTOR,     "finalTriWeq0EdgeTessFactor"},
+    {WINED3D_SIV_TRIANGLE_INNER_TESS_FACTOR, "finalTriInsideTessFactor"},
+    {WINED3D_SIV_LINE_DETAIL_TESS_FACTOR,    "finalLineDetailTessFactor"},
+    {WINED3D_SIV_LINE_DENSITY_TESS_FACTOR,   "finalLineDensityTessFactor"},
 };
 
 static void shader_dump_src_param(struct wined3d_string_buffer *buffer,
@@ -1854,20 +1854,21 @@ static void shader_dump_tessellator_partitioning(struct wined3d_string_buffer *b
     }
 }
 
-static void shader_dump_sysval_semantic(struct wined3d_string_buffer *buffer, enum wined3d_sysval_semantic semantic)
+static void shader_dump_shader_input_sysval_semantic(struct wined3d_string_buffer *buffer,
+        enum wined3d_shader_input_sysval_semantic semantic)
 {
     unsigned int i;
 
-    for (i = 0; i < ARRAY_SIZE(sysval_semantic_names); ++i)
+    for (i = 0; i < ARRAY_SIZE(shader_input_sysval_semantic_names); ++i)
     {
-        if (sysval_semantic_names[i].sysval_semantic == semantic)
+        if (shader_input_sysval_semantic_names[i].sysval_semantic == semantic)
         {
-            shader_addline(buffer, "%s", sysval_semantic_names[i].sysval_name);
+            shader_addline(buffer, "%s", shader_input_sysval_semantic_names[i].sysval_name);
             return;
         }
     }
 
-    shader_addline(buffer, "unknown_sysval_semantic(%#x)", semantic);
+    shader_addline(buffer, "unknown_shader_input_sysval_semantic(%#x)", semantic);
 }
 
 static void shader_dump_decl_usage(struct wined3d_string_buffer *buffer,
@@ -2727,7 +2728,7 @@ static void shader_trace_init(const struct wined3d_shader_frontend *fe, void *fe
             shader_addline(&buffer, "%s ", shader_opcode_names[ins.handler_idx]);
             shader_dump_dst_param(&buffer, &ins.declaration.register_semantic.reg, &shader_version);
             shader_addline(&buffer, ", ");
-            shader_dump_sysval_semantic(&buffer, ins.declaration.register_semantic.sysval_semantic);
+            shader_dump_shader_input_sysval_semantic(&buffer, ins.declaration.register_semantic.sysval_semantic);
         }
         else if (ins.handler_idx == WINED3DSIH_DCL_INPUT_PS_SIV)
         {
@@ -2736,7 +2737,7 @@ static void shader_trace_init(const struct wined3d_shader_frontend *fe, void *fe
             shader_addline(&buffer, " ");
             shader_dump_dst_param(&buffer, &ins.declaration.register_semantic.reg, &shader_version);
             shader_addline(&buffer, ", ");
-            shader_dump_sysval_semantic(&buffer, ins.declaration.register_semantic.sysval_semantic);
+            shader_dump_shader_input_sysval_semantic(&buffer, ins.declaration.register_semantic.sysval_semantic);
         }
         else if (ins.handler_idx == WINED3DSIH_DCL_INPUT
                 || ins.handler_idx == WINED3DSIH_DCL_OUTPUT)
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 4242215..d177976 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1099,10 +1099,36 @@ struct wined3d_shader_semantic
     struct wined3d_shader_dst_param reg;
 };
 
+enum wined3d_shader_input_sysval_semantic
+{
+    WINED3D_SIV_POSITION                     = 1,
+    WINED3D_SIV_CLIP_DISTANCE                = 2,
+    WINED3D_SIV_CULL_DISTANCE                = 3,
+    WINED3D_SIV_RENDER_TARGET_ARRAY_INDEX    = 4,
+    WINED3D_SIV_VIEWPORT_ARRAY_INDEX         = 5,
+    WINED3D_SIV_VERTEX_ID                    = 6,
+    WINED3D_SIV_PRIMITIVE_ID                 = 7,
+    WINED3D_SIV_INSTANCE_ID                  = 8,
+    WINED3D_SIV_IS_FRONT_FACE                = 9,
+    WINED3D_SIV_SAMPLE_INDEX                 = 10,
+    WINED3D_SIV_QUAD_U0_TESS_FACTOR          = 11,
+    WINED3D_SIV_QUAD_V0_TESS_FACTOR          = 12,
+    WINED3D_SIV_QUAD_U1_TESS_FACTOR          = 13,
+    WINED3D_SIV_QUAD_V1_TESS_FACTOR          = 14,
+    WINED3D_SIV_QUAD_U_INNER_TESS_FACTOR     = 15,
+    WINED3D_SIV_QUAD_V_INNER_TESS_FACTOR     = 16,
+    WINED3D_SIV_TRIANGLE_U_TESS_FACTOR       = 17,
+    WINED3D_SIV_TRIANGLE_V_TESS_FACTOR       = 18,
+    WINED3D_SIV_TRIANGLE_W_TESS_FACTOR       = 19,
+    WINED3D_SIV_TRIANGLE_INNER_TESS_FACTOR   = 20,
+    WINED3D_SIV_LINE_DETAIL_TESS_FACTOR      = 21,
+    WINED3D_SIV_LINE_DENSITY_TESS_FACTOR     = 22,
+};
+
 struct wined3d_shader_register_semantic
 {
     struct wined3d_shader_dst_param reg;
-    enum wined3d_sysval_semantic sysval_semantic;
+    enum wined3d_shader_input_sysval_semantic sysval_semantic;
 };
 
 struct wined3d_shader_structured_resource
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index f41dfed..97947e4 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -763,18 +763,12 @@ enum wined3d_sysval_semantic
     WINED3D_SV_INSTANCE_ID                  = 8,
     WINED3D_SV_IS_FRONT_FACE                = 9,
     WINED3D_SV_SAMPLE_INDEX                 = 10,
-    WINED3D_SV_QUAD_U0_TESS_FACTOR          = 11,
-    WINED3D_SV_QUAD_V0_TESS_FACTOR          = 12,
-    WINED3D_SV_QUAD_U1_TESS_FACTOR          = 13,
-    WINED3D_SV_QUAD_V1_TESS_FACTOR          = 14,
-    WINED3D_SV_QUAD_U_INNER_TESS_FACTOR     = 15,
-    WINED3D_SV_QUAD_V_INNER_TESS_FACTOR     = 16,
-    WINED3D_SV_TRIANGLE_U_TESS_FACTOR       = 17,
-    WINED3D_SV_TRIANGLE_V_TESS_FACTOR       = 18,
-    WINED3D_SV_TRIANGLE_W_TESS_FACTOR       = 19,
-    WINED3D_SV_TRIANGLE_INNER_TESS_FACTOR   = 20,
-    WINED3D_SV_LINE_DETAIL_TESS_FACTOR      = 21,
-    WINED3D_SV_LINE_DENSITY_TESS_FACTOR     = 22,
+    WINED3D_SV_TESS_FACTOR_QUADEDGE         = 11,
+    WINED3D_SV_TESS_FACTOR_QUADINT          = 12,
+    WINED3D_SV_TESS_FACTOR_TRIEDGE          = 13,
+    WINED3D_SV_TESS_FACTOR_TRIINT           = 14,
+    WINED3D_SV_TESS_FACTOR_LINEDET          = 15,
+    WINED3D_SV_TESS_FACTOR_LINEDEN          = 16,
 };
 
 enum wined3d_component_type




More information about the wine-cvs mailing list