[PATCH 1/5] d3dx9_36: Separate calculation of Bytes (try 3)
Travis Athougies
iammisc at gmail.com
Thu Jul 14 16:06:48 CDT 2011
Changes from last patch:
- Patches now split into smaller patches
---
dlls/d3dx9_36/shader.c | 26 ++++++++++----------------
1 files changed, 10 insertions(+), 16 deletions(-)
diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c
index c3ae172..958c4e8 100644
--- a/dlls/d3dx9_36/shader.c
+++ b/dlls/d3dx9_36/shader.c
@@ -639,6 +639,15 @@ static inline int is_vertex_shader(DWORD version)
return (version & 0xFFFF0000) == 0xFFFE0000;
}
+static DWORD calc_bytes(D3DXCONSTANT_DESC *desc)
+{
+ if (desc->RegisterSet != D3DXRS_FLOAT4 && desc->RegisterSet != D3DXRS_SAMPLER)
+ FIXME("Don't know how to calculate Bytes for constants of type %d\n",
+ desc->RegisterSet);
+
+ return 4 * desc->Elements * desc->Rows * desc->Columns;
+}
+
/*** IUnknown methods ***/
static HRESULT WINAPI ID3DXConstantTableImpl_QueryInterface(ID3DXConstantTable* iface, REFIID riid, void** ppvObject)
{
@@ -1130,6 +1139,7 @@ static HRESULT parse_ctab_constant_type(const D3DXSHADER_TYPEINFO *type, ctab_co
constant->desc.Columns = type->Columns;
constant->desc.Elements = type->Elements;
constant->desc.StructMembers = type->StructMembers;
+ constant->desc.Bytes = calc_bytes(&constant->desc);
TRACE("class = %d, type = %d, rows = %d, columns = %d, elements = %d, struct_members = %d\n",
constant->desc.Class, constant->desc.Type, constant->desc.Elements,
@@ -1237,22 +1247,6 @@ HRESULT WINAPI D3DXGetShaderConstantTableEx(CONST DWORD* byte_code,
&object->constants[i]);
if (hr != D3D_OK)
goto error;
-
- 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 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 */
- object->constants[i].desc.Bytes *= object->constants[i].desc.Elements;
- object->constants[i].desc.Bytes *= object->constants[i].desc.Rows *
- object->constants[i].desc.Columns;
}
*constant_table = &object->ID3DXConstantTable_iface;
--
1.6.4.4
More information about the wine-patches
mailing list