=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: wined3d: Clean up SM1 frontend.

Alexandre Julliard julliard at winehq.org
Wed May 25 10:41:09 CDT 2016


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

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Wed May 25 10:51:19 2016 +0200

wined3d: Clean up SM1 frontend.

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_sm1.c | 56 ++++++++++++++++++++++-------------------------
 1 file changed, 26 insertions(+), 30 deletions(-)

diff --git a/dlls/wined3d/shader_sm1.c b/dlls/wined3d/shader_sm1.c
index 2a1f4a4..fc79f6b 100644
--- a/dlls/wined3d/shader_sm1.c
+++ b/dlls/wined3d/shader_sm1.c
@@ -202,8 +202,8 @@ enum wined3d_sm1_opcode
 struct wined3d_sm1_opcode_info
 {
     enum wined3d_sm1_opcode opcode;
-    UINT dst_count;
-    UINT param_count;
+    unsigned int dst_count;
+    unsigned int param_count;
     enum WINED3D_SHADER_INSTRUCTION_HANDLER handler_idx;
     DWORD min_version;
     DWORD max_version;
@@ -398,9 +398,10 @@ static const enum wined3d_shader_resource_type resource_type_table[] =
 /* Read a parameter opcode from the input stream,
  * and possibly a relative addressing token.
  * Return the number of tokens read */
-static int shader_get_param(const struct wined3d_sm1_data *priv, const DWORD *ptr, DWORD *token, DWORD *addr_token)
+static unsigned int shader_get_param(const struct wined3d_sm1_data *priv, const DWORD *ptr,
+        DWORD *token, DWORD *addr_token)
 {
-    UINT count = 1;
+    unsigned int count = 1;
 
     *token = *ptr;
 
@@ -427,15 +428,15 @@ static int shader_get_param(const struct wined3d_sm1_data *priv, const DWORD *pt
     return count;
 }
 
-static const struct wined3d_sm1_opcode_info *shader_get_opcode(const struct wined3d_sm1_data *priv, DWORD code)
+static const struct wined3d_sm1_opcode_info *shader_get_opcode(const struct wined3d_sm1_data *priv, DWORD token)
 {
     DWORD shader_version = WINED3D_SHADER_VERSION(priv->shader_version.major, priv->shader_version.minor);
     const struct wined3d_sm1_opcode_info *opcode_table = priv->opcode_table;
-    DWORD i = 0;
+    unsigned int i = 0;
 
     while (opcode_table[i].handler_idx != WINED3DSIH_TABLE_SIZE)
     {
-        if ((code & WINED3D_SM1_OPCODE_MASK) == opcode_table[i].opcode
+        if ((token & WINED3D_SM1_OPCODE_MASK) == opcode_table[i].opcode
                 && shader_version >= opcode_table[i].min_version
                 && (!opcode_table[i].max_version || shader_version <= opcode_table[i].max_version))
         {
@@ -444,19 +445,20 @@ static const struct wined3d_sm1_opcode_info *shader_get_opcode(const struct wine
         ++i;
     }
 
-    FIXME("Unsupported opcode %#x(%d) masked %#x, shader version %#x\n",
-            code, code, code & WINED3D_SM1_OPCODE_MASK, shader_version);
+    FIXME("Unsupported opcode %#x, token 0x%08x, shader version %#x.\n",
+            token & WINED3D_SM1_OPCODE_MASK, token, shader_version);
 
     return NULL;
 }
 
 /* Return the number of parameters to skip for an opcode */
-static int shader_skip_opcode(const struct wined3d_sm1_data *priv,
+static unsigned int shader_skip_opcode(const struct wined3d_sm1_data *priv,
         const struct wined3d_sm1_opcode_info *opcode_info, DWORD opcode_token)
 {
+    unsigned int length;
     /* Shaders >= 2.0 may contain address tokens, but fortunately they
      * have a useful length mask - use it here. Shaders 1.0 contain no such tokens */
-    DWORD length = (opcode_token & WINED3D_SM1_INSTRUCTION_LENGTH_MASK) >> WINED3D_SM1_INSTRUCTION_LENGTH_SHIFT;
+    length = (opcode_token & WINED3D_SM1_INSTRUCTION_LENGTH_MASK) >> WINED3D_SM1_INSTRUCTION_LENGTH_SHIFT;
     return (priv->shader_version.major >= 2) ? length : opcode_info->param_count;
 }
 
@@ -495,10 +497,9 @@ static void shader_parse_dst_param(DWORD param, const struct wined3d_shader_src_
  * Note: This function assumes source or destination token format.
  * It will not work with specially-formatted tokens like DEF or DCL,
  * but hopefully those would be recognized */
-static int shader_skip_unrecognized(const struct wined3d_sm1_data *priv, const DWORD *ptr)
+static unsigned int shader_skip_unrecognized(const struct wined3d_sm1_data *priv, const DWORD *ptr)
 {
-    int tokens_read = 0;
-    int i = 0;
+    unsigned int tokens_read = 0, i = 0;
 
     /* TODO: Think of a good name for 0x80000000 and replace it with a constant */
     while (*ptr & 0x80000000)
@@ -509,9 +510,10 @@ static int shader_skip_unrecognized(const struct wined3d_sm1_data *priv, const D
         tokens_read += shader_get_param(priv, ptr, &token, &addr_token);
         ptr += tokens_read;
 
-        FIXME("Unrecognized opcode param: token=0x%08x addr_token=0x%08x name=", token, addr_token);
+        FIXME("Unrecognized opcode param: token=0x%08x addr_token=0x%08x.\n", token, addr_token);
 
-        if (token & WINED3D_SM1_ADDRESS_MODE_RELATIVE) shader_parse_src_param(addr_token, NULL, &rel_addr);
+        if (token & WINED3D_SM1_ADDRESS_MODE_RELATIVE)
+            shader_parse_src_param(addr_token, NULL, &rel_addr);
 
         if (!i)
         {
@@ -525,7 +527,6 @@ static int shader_skip_unrecognized(const struct wined3d_sm1_data *priv, const D
 
             shader_parse_src_param(token, token & WINED3D_SM1_ADDRESS_MODE_RELATIVE ? &rel_addr : NULL, &src);
         }
-        FIXME("\n");
         ++i;
     }
     return tokens_read;
@@ -544,14 +545,11 @@ static void *shader_sm1_init(const DWORD *byte_code, const struct wined3d_shader
         return NULL;
     }
 
-    priv = HeapAlloc(GetProcessHeap(), 0, sizeof(*priv));
-    if (!priv)
+    if (!(priv = HeapAlloc(GetProcessHeap(), 0, sizeof(*priv))))
         return NULL;
 
     if (output_signature->element_count)
-    {
         FIXME("SM 1-3 shader shouldn't have output signatures.\n");
-    }
 
     switch (*byte_code >> 16)
     {
@@ -566,7 +564,7 @@ static void *shader_sm1_init(const DWORD *byte_code, const struct wined3d_shader
             break;
 
         default:
-            FIXME("Unrecognized shader type %#x\n", *byte_code >> 16);
+            FIXME("Unrecognized shader type %#x.\n", *byte_code >> 16);
             HeapFree(GetProcessHeap(), 0, priv);
             return NULL;
     }
@@ -585,7 +583,7 @@ static void shader_sm1_read_header(void *data, const DWORD **ptr, struct wined3d
     DWORD version_token;
 
     version_token = *(*ptr)++;
-    TRACE("version: 0x%08x\n", version_token);
+    TRACE("Version: 0x%08x.\n", version_token);
 
     priv->shader_version.major = WINED3D_SM1_VERSION_MAJOR(version_token);
     priv->shader_version.minor = WINED3D_SM1_VERSION_MINOR(version_token);
@@ -651,7 +649,7 @@ static void shader_sm1_read_semantic(const DWORD **ptr, struct wined3d_shader_se
 static void shader_sm1_read_immconst(const DWORD **ptr, struct wined3d_shader_src_param *src_param,
         enum wined3d_immconst_type type, enum wined3d_data_type data_type)
 {
-    UINT count = type == WINED3D_IMMCONST_VEC4 ? 4 : 1;
+    unsigned int count = type == WINED3D_IMMCONST_VEC4 ? 4 : 1;
     src_param->reg.type = WINED3DSPR_IMMCONST;
     src_param->reg.data_type = data_type;
     src_param->reg.idx[0].offset = ~0U;
@@ -762,15 +760,15 @@ static void shader_sm1_read_instruction(void *data, const DWORD **ptr, struct wi
         shader_sm1_read_dst_param(priv, &p, &priv->dst_param, &priv->dst_rel_addr);
         shader_sm1_read_immconst(&p, &priv->src_param[0], WINED3D_IMMCONST_VEC4, WINED3D_DATA_FLOAT);
     }
-    else if (ins->handler_idx == WINED3DSIH_DEFI)
+    else if (ins->handler_idx == WINED3DSIH_DEFB)
     {
         shader_sm1_read_dst_param(priv, &p, &priv->dst_param, &priv->dst_rel_addr);
-        shader_sm1_read_immconst(&p, &priv->src_param[0], WINED3D_IMMCONST_VEC4, WINED3D_DATA_INT);
+        shader_sm1_read_immconst(&p, &priv->src_param[0], WINED3D_IMMCONST_SCALAR, WINED3D_DATA_UINT);
     }
-    else if (ins->handler_idx == WINED3DSIH_DEFB)
+    else if (ins->handler_idx == WINED3DSIH_DEFI)
     {
         shader_sm1_read_dst_param(priv, &p, &priv->dst_param, &priv->dst_rel_addr);
-        shader_sm1_read_immconst(&p, &priv->src_param[0], WINED3D_IMMCONST_SCALAR, WINED3D_DATA_UINT);
+        shader_sm1_read_immconst(&p, &priv->src_param[0], WINED3D_IMMCONST_VEC4, WINED3D_DATA_INT);
     }
     else
     {
@@ -784,9 +782,7 @@ static void shader_sm1_read_instruction(void *data, const DWORD **ptr, struct wi
 
         /* Other source tokens */
         for (i = 0; i < ins->src_count; ++i)
-        {
             shader_sm1_read_src_param(priv, &p, &priv->src_param[i], &priv->src_rel_addr[i]);
-        }
     }
 
     shader_sm1_validate_instruction(ins);




More information about the wine-cvs mailing list