Travis Athougies : d3dx9_36: Implemented support for samplers in ID3DXConstantTable.
Alexandre Julliard
julliard at winehq.org
Thu Jun 23 04:10:07 CDT 2011
Module: wine
Branch: master
Commit: a76ac0a894f2d046ba7f69795fc421a8ec061e65
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a76ac0a894f2d046ba7f69795fc421a8ec061e65
Author: Travis Athougies <iammisc at 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 */
More information about the wine-cvs
mailing list