Module: wine Branch: master Commit: ddc948b974b9ad8e1ff6dc6e176293431c82aa2d URL: http://source.winehq.org/git/wine.git/?a=commit;h=ddc948b974b9ad8e1ff6dc6e17...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Wed Jul 15 12:21:19 2009 +0200
d3d10: Do all effect object parsing in parse_fx10_object().
---
dlls/d3d10/effect.c | 38 +++++++++++++++++++------------------- 1 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/dlls/d3d10/effect.c b/dlls/d3d10/effect.c index ba62cfc..0750069 100644 --- a/dlls/d3d10/effect.c +++ b/dlls/d3d10/effect.c @@ -248,43 +248,51 @@ static HRESULT parse_shader(struct d3d10_effect_object *o, const char *data) return parse_dxbc(ptr, dxbc_size, shader_chunk_handler, s); }
-static HRESULT parse_fx10_object(struct d3d10_effect_object *o, const char *data) +static HRESULT parse_fx10_object(struct d3d10_effect_object *o, const char **ptr, const char *data) { - const char *ptr; + const char *data_ptr; DWORD offset; HRESULT hr;
- ptr = data + o->idx_offset; - read_dword(&ptr, &offset); + read_dword(ptr, &o->type); + TRACE("Effect object is of type %#x.\n", o->type);
- TRACE("Effect object of type %#x starts at offset %#x.\n", o->type, offset); + skip_dword_unknown(ptr, 2); + + read_dword(ptr, &offset); + TRACE("Effect object idx is at offset %#x.\n", offset); + + data_ptr = data + offset; + read_dword(&data_ptr, &offset); + + TRACE("Effect object starts at offset %#x.\n", offset);
/* FIXME: This probably isn't completely correct. */ if (offset == 1) { WARN("Skipping effect object.\n"); - ptr = NULL; + data_ptr = NULL; } else { - ptr = data + offset; + data_ptr = data + offset; }
switch (o->type) { case D3D10_EOT_VERTEXSHADER: TRACE("Vertex shader\n"); - hr = parse_shader(o, ptr); + hr = parse_shader(o, data_ptr); break;
case D3D10_EOT_PIXELSHADER: TRACE("Pixel shader\n"); - hr = parse_shader(o, ptr); + hr = parse_shader(o, data_ptr); break;
case D3D10_EOT_GEOMETRYSHADER: TRACE("Geometry shader\n"); - hr = parse_shader(o, ptr); + hr = parse_shader(o, data_ptr); break;
default: @@ -331,15 +339,7 @@ static HRESULT parse_fx10_pass(struct d3d10_effect_pass *p, const char **ptr, co
o->pass = p;
- read_dword(ptr, &o->type); - TRACE("Effect object %u is of type %#x.\n", i, o->type); - - skip_dword_unknown(ptr, 2); - - read_dword(ptr, &o->idx_offset); - TRACE("Effect object %u idx is at offset %#x.\n", i, o->idx_offset); - - hr = parse_fx10_object(o, data); + hr = parse_fx10_object(o, ptr, data); if (FAILED(hr)) return hr; }