Module: wine Branch: master Commit: a76ac0a894f2d046ba7f69795fc421a8ec061e65 URL: http://source.winehq.org/git/wine.git/?a=commit;h=a76ac0a894f2d046ba7f69795f...
Author: Travis Athougies iammisc@gmail.com Date: Wed Jun 22 13:10:51 2011 -0700
d3dx9_36: Implemented support for samplers in ID3DXConstantTable.
---
dlls/d3dx9_36/shader.c | 27 +++++++++++++++++++++------ 1 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c index 0e0709d..bddef33 100644 --- a/dlls/d3dx9_36/shader.c +++ b/dlls/d3dx9_36/shader.c @@ -748,13 +748,23 @@ static HRESULT WINAPI ID3DXConstantTableImpl_GetConstantDesc(ID3DXConstantTable* return D3D_OK; }
-static UINT WINAPI ID3DXConstantTableImpl_GetSamplerIndex(LPD3DXCONSTANTTABLE iface, D3DXHANDLE constant) +static UINT WINAPI ID3DXConstantTableImpl_GetSamplerIndex(ID3DXConstantTable *iface, D3DXHANDLE constant) { ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface); + D3DXCONSTANT_DESC desc; + UINT count = 1; + HRESULT res; + + TRACE("(%p)->(%p)\n", This, constant); + + res = ID3DXConstantTable_GetConstantDesc(iface, constant, &desc, &count); + if (FAILED(res)) + return (UINT)-1;
- FIXME("(%p)->(%p): stub\n", This, constant); + if (desc.RegisterSet != D3DXRS_SAMPLER) + return (UINT)-1;
- return (UINT)-1; + return desc.RegisterIndex; }
static D3DXHANDLE WINAPI ID3DXConstantTableImpl_GetConstant(ID3DXConstantTable* iface, D3DXHANDLE constant, UINT index) @@ -1225,10 +1235,15 @@ HRESULT WINAPI D3DXGetShaderConstantTableEx(CONST DWORD* byte_code, if (hr != D3D_OK) goto error;
- if (constant_info[i].RegisterSet != D3DXRS_FLOAT4) - FIXME("Don't know how to calculate Bytes for non D3DXRS_FLOAT4 constants\n"); + if (constant_info[i].RegisterSet != D3DXRS_FLOAT4 && + constant_info[i].RegisterSet != D3DXRS_SAMPLER) + FIXME("Don't know how to calculate Bytes for constants of type %d\n", + constant_info[i].RegisterSet);
- /* D3DXRS_FLOAT4 has a base size of 4 (not taking into account dimensions and element count) */ + /* + * D3DXRS_FLOAT4 and D3DXRS_SAMPLER have a base size of 4 + * (not taking into account dimensions and element count) + */ object->constants[i].desc.Bytes = 4;
/* Take into account dimensions and elements */