[PATCH 3/7] d3d10: Add initial support for parsing structures.

Henri Verbeet hverbeet at codeweavers.com
Tue Sep 8 09:37:59 CDT 2009


---
 dlls/d3d10/effect.c |   26 ++++++++++++++++++++++++++
 1 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/dlls/d3d10/effect.c b/dlls/d3d10/effect.c
index f7583f9..afdc386 100644
--- a/dlls/d3d10/effect.c
+++ b/dlls/d3d10/effect.c
@@ -457,6 +457,32 @@ static void parse_fx10_type(const char *ptr, const char *data)
         TRACE("\tunknown bits: %#x.\n", tmp & ~(D3D10_FX10_TYPE_COLUMN_MASK | D3D10_FX10_TYPE_ROW_MASK
                 | D3D10_FX10_TYPE_BASETYPE_MASK | D3D10_FX10_TYPE_CLASS_MASK));
     }
+    else if (unknown0 == 3)
+    {
+        DWORD member_count;
+        unsigned int i;
+
+        TRACE("Type is a structure.\n");
+
+        read_dword(&ptr, &member_count);
+        TRACE("Member count: %u.\n", member_count);
+
+        for (i = 0; i < member_count; ++i)
+        {
+            read_dword(&ptr, &tmp);
+            TRACE("Member %u name at offset %#x.\n", i, tmp);
+            TRACE("Member %u name: %s.\n", i, debugstr_a(data + tmp));
+
+            /* Member semantic? */
+            skip_dword_unknown(&ptr, 1);
+
+            read_dword(&ptr, &tmp);
+            TRACE("Member %u offset in struct: %#x.\n", i, tmp);
+
+            read_dword(&ptr, &tmp);
+            TRACE("Member %u type info at offset %#x.\n", i, tmp);
+        }
+    }
 }
 
 static HRESULT parse_fx10_variable(struct d3d10_effect_variable *v, const char **ptr, const char *data)
-- 
1.6.0.6




More information about the wine-patches mailing list