Rico Schüller : d3d10: Improve parse_fx10.

Alexandre Julliard julliard at winehq.org
Mon Jun 1 10:01:05 CDT 2009


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

Author: Rico Schüller <kgbricola at web.de>
Date:   Fri May 29 23:35:07 2009 +0200

d3d10: Improve parse_fx10.

---

 dlls/d3d10/d3d10_private.h |    6 ++++++
 dlls/d3d10/effect.c        |   42 +++++++++++++++++++++++++++---------------
 2 files changed, 33 insertions(+), 15 deletions(-)

diff --git a/dlls/d3d10/d3d10_private.h b/dlls/d3d10/d3d10_private.h
index 1488b99..fc8e932 100644
--- a/dlls/d3d10/d3d10_private.h
+++ b/dlls/d3d10/d3d10_private.h
@@ -90,9 +90,15 @@ struct d3d10_effect
     LONG refcount;
 
     ID3D10Device *device;
+    DWORD version;
+    DWORD localbuffers_count;
+    DWORD localobjects_count;
     DWORD technique_count;
     DWORD index_offset;
+    DWORD dephstencilstate_count;
     DWORD blendstate_count;
+    DWORD rasterizerstate_count;
+    DWORD samplerstate_count;
     struct d3d10_effect_technique *techniques;
 };
 
diff --git a/dlls/d3d10/effect.c b/dlls/d3d10/effect.c
index eecf511..eff753f 100644
--- a/dlls/d3d10/effect.c
+++ b/dlls/d3d10/effect.c
@@ -448,19 +448,26 @@ static HRESULT parse_fx10(struct d3d10_effect *e, const char *data, DWORD data_s
     const char *ptr = data;
     DWORD unknown;
 
-    /* version info? */
-    skip_dword_unknown(&ptr, 2);
+    /* Compiled target version (e.g. fx_4_0=0xfeff1001, fx_4_1=0xfeff1011). */
+    read_dword(&ptr, &e->version);
+    TRACE("Target: %#x\n", e->version);
 
+    read_dword(&ptr, &e->localbuffers_count);
+    TRACE("Localbuffers count: %u\n", e->localbuffers_count);
+
+    /* Number of variables in local buffers? */
     read_dword(&ptr, &unknown);
     FIXME("Unknown 0: %u\n", unknown);
+
+    read_dword(&ptr, &e->localobjects_count);
+    TRACE("Localobjects count: %u\n", e->localobjects_count);
+
     read_dword(&ptr, &unknown);
     FIXME("Unknown 1: %u\n", unknown);
     read_dword(&ptr, &unknown);
     FIXME("Unknown 2: %u\n", unknown);
     read_dword(&ptr, &unknown);
     FIXME("Unknown 3: %u\n", unknown);
-    read_dword(&ptr, &unknown);
-    FIXME("Unknown 4: %u\n", unknown);
 
     read_dword(&ptr, &e->technique_count);
     TRACE("Technique count: %u\n", e->technique_count);
@@ -469,27 +476,32 @@ static HRESULT parse_fx10(struct d3d10_effect *e, const char *data, DWORD data_s
     TRACE("Index offset: %#x\n", e->index_offset);
 
     read_dword(&ptr, &unknown);
+    FIXME("Unknown 4: %u\n", unknown);
+    read_dword(&ptr, &unknown);
     FIXME("Unknown 5: %u\n", unknown);
+
+    read_dword(&ptr, &e->dephstencilstate_count);
+    TRACE("Depthstencilstate count: %u\n", e->dephstencilstate_count);
+
+    read_dword(&ptr, &e->blendstate_count);
+    TRACE("Blendstate count: %u\n", e->blendstate_count);
+
+    read_dword(&ptr, &e->rasterizerstate_count);
+    TRACE("Rasterizerstate count: %u\n", e->rasterizerstate_count);
+
+    read_dword(&ptr, &e->samplerstate_count);
+    TRACE("Samplerstate count: %u\n", e->samplerstate_count);
+
     read_dword(&ptr, &unknown);
     FIXME("Unknown 6: %u\n", unknown);
     read_dword(&ptr, &unknown);
     FIXME("Unknown 7: %u\n", unknown);
 
-    read_dword(&ptr, &e->blendstate_count);
-    TRACE("Blendstate count: %u\n", e->blendstate_count);
-
+    /* Number of function calls in all passes? */
     read_dword(&ptr, &unknown);
     FIXME("Unknown 8: %u\n", unknown);
     read_dword(&ptr, &unknown);
     FIXME("Unknown 9: %u\n", unknown);
-    read_dword(&ptr, &unknown);
-    FIXME("Unknown 10: %u\n", unknown);
-    read_dword(&ptr, &unknown);
-    FIXME("Unknown 11: %u\n", unknown);
-    read_dword(&ptr, &unknown);
-    FIXME("Unknown 12: %u\n", unknown);
-    read_dword(&ptr, &unknown);
-    FIXME("Unknown 13: %u\n", unknown);
 
     return parse_fx10_body(e, ptr, data_size - (ptr - data));
 }




More information about the wine-cvs mailing list