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