Module: wine Branch: master Commit: cacff4b3a0e49d2e47f87ae8ec5fb88096d288cb URL: http://source.winehq.org/git/wine.git/?a=commit;h=cacff4b3a0e49d2e47f87ae8ec...
Author: Rico Schüller kgbricola@web.de Date: Thu Feb 10 20:06:12 2011 +0100
d3dcompiler: Implement ID3DShaderReflection::GetResourceBindingDescByName().
---
dlls/d3dcompiler_43/reflection.c | 27 +++++++++++++++++++++++++-- 1 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/dlls/d3dcompiler_43/reflection.c b/dlls/d3dcompiler_43/reflection.c index f3646e8..e1ba543 100644 --- a/dlls/d3dcompiler_43/reflection.c +++ b/dlls/d3dcompiler_43/reflection.c @@ -296,9 +296,32 @@ static struct ID3D11ShaderReflectionVariable * STDMETHODCALLTYPE d3dcompiler_sha static HRESULT STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetResourceBindingDescByName( ID3D11ShaderReflection *iface, LPCSTR name, D3D11_SHADER_INPUT_BIND_DESC *desc) { - FIXME("iface %p, name %s, desc %p stub!\n", iface, name, desc); + struct d3dcompiler_shader_reflection *This = impl_from_ID3D11ShaderReflection(iface); + unsigned int i;
- return E_NOTIMPL; + TRACE("iface %p, name %s, desc %p\n", iface, debugstr_a(name), desc); + + if (!desc || !name) + { + WARN("Invalid argument specified\n"); + return E_INVALIDARG; + } + + for (i = 0; i < This->bound_resource_count; ++i) + { + D3D11_SHADER_INPUT_BIND_DESC *d = &This->bound_resources[i]; + + if (!strcmp(d->Name, name)) + { + TRACE("Returning D3D11_SHADER_INPUT_BIND_DESC %p.\n", d); + *desc = *d; + return S_OK; + } + } + + WARN("Invalid name specified\n"); + + return E_INVALIDARG; }
static UINT STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetMovInstructionCount(