Module: wine Branch: master Commit: 99a4287f5daefc54a1c179d033575585408fbbcc URL: http://source.winehq.org/git/wine.git/?a=commit;h=99a4287f5daefc54a1c179d033...
Author: Rico Schüller kgbricola@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)); }