Nikolay Sivov : d3d10/effect: Make it clear which assignment types are supported in state groups.

Alexandre Julliard julliard at winehq.org
Fri Oct 1 18:02:23 CDT 2021


Module: wine
Branch: master
Commit: 0182f1f8489c607e1859c8fcd1e9f49f2b498bbd
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=0182f1f8489c607e1859c8fcd1e9f49f2b498bbd

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Fri Oct  1 09:14:00 2021 +0300

d3d10/effect: Make it clear which assignment types are supported in state groups.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/d3d10/d3d10_private.h |  8 +++++---
 dlls/d3d10/effect.c        | 25 ++++++++++++++++++-------
 2 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/dlls/d3d10/d3d10_private.h b/dlls/d3d10/d3d10_private.h
index f980007427f..3fd17c7400d 100644
--- a/dlls/d3d10/d3d10_private.h
+++ b/dlls/d3d10/d3d10_private.h
@@ -60,9 +60,11 @@ enum d3d10_effect_object_type_flags
 
 enum d3d10_effect_object_operation
 {
-    D3D10_EOO_VALUE = 1,
-    D3D10_EOO_PARSED_OBJECT = 2,
-    D3D10_EOO_PARSED_OBJECT_INDEX = 3,
+    D3D10_EOO_CONST = 1,
+    D3D10_EOO_VAR = 2,
+    D3D10_EOO_CONST_INDEX = 3,
+    D3D10_EOO_VAR_INDEX = 4,
+    D3D10_EOO_INDEX_EXPRESSION = 5,
     D3D10_EOO_ANONYMOUS_SHADER = 7,
 };
 
diff --git a/dlls/d3d10/effect.c b/dlls/d3d10/effect.c
index 5d5db4eea6c..1823ffdc04b 100644
--- a/dlls/d3d10/effect.c
+++ b/dlls/d3d10/effect.c
@@ -1741,11 +1741,22 @@ static BOOL parse_fx10_state_group(const char *data, size_t data_size,
             return FALSE;
         }
 
-        if (!read_value_list(data, data_size, value_offset, property_info->type, idx,
-                property_info->size, (char *)container + property_info->offset))
+        switch (operation)
         {
-            ERR("Failed to read values for property %#x.\n", id);
-            return FALSE;
+            case D3D10_EOO_CONST:
+
+                /* Constant values output directly to backing store. */
+                if (!read_value_list(data, data_size, value_offset, property_info->type, idx,
+                        property_info->size, (char *)container + property_info->offset))
+                {
+                    ERR("Failed to read values for property %#x.\n", id);
+                    return FALSE;
+                }
+                break;
+
+            default:
+                FIXME("Unhandled operation %#x.\n", operation);
+                return E_FAIL;
         }
     }
 
@@ -1787,7 +1798,7 @@ static HRESULT parse_fx10_object(const char *data, size_t data_size,
 
     switch(operation)
     {
-        case D3D10_EOO_VALUE:
+        case D3D10_EOO_CONST:
             TRACE("Copy variable values\n");
 
             switch (o->type)
@@ -1837,7 +1848,7 @@ static HRESULT parse_fx10_object(const char *data, size_t data_size,
             }
             break;
 
-        case D3D10_EOO_PARSED_OBJECT:
+        case D3D10_EOO_VAR:
             /* This is a local object, we've parsed in parse_fx10_local_object. */
             if (!fx10_get_string(data, data_size, offset, &name, &name_len))
             {
@@ -1849,7 +1860,7 @@ static HRESULT parse_fx10_object(const char *data, size_t data_size,
             variable = e->lpVtbl->GetVariableByName(e, name);
             break;
 
-        case D3D10_EOO_PARSED_OBJECT_INDEX:
+        case D3D10_EOO_CONST_INDEX:
             /* This is a local object, we've parsed in parse_fx10_local_object, which has an array index. */
             if (offset >= data_size || !require_space(offset, 2, sizeof(DWORD), data_size))
             {




More information about the wine-cvs mailing list