From 46b13aaa585ebdd1c418a9df03bf3851190eebfd Mon Sep 17 00:00:00 2001 From: "H. Verbeet" Date: Wed, 22 Mar 2006 19:46:59 +0000 Subject: [PATCH] wined3d: glTypeLookup cleanup. Use a struct instead of an UINT array as entries in the glTypeLookup table. --- dlls/wined3d/vertexdeclaration.c | 2 +- dlls/wined3d/wined3d_private.h | 20 ++++++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/dlls/wined3d/vertexdeclaration.c b/dlls/wined3d/vertexdeclaration.c index 5d216af04b4..653f2b78f27 100644 --- a/dlls/wined3d/vertexdeclaration.c +++ b/dlls/wined3d/vertexdeclaration.c @@ -297,7 +297,7 @@ IWineD3DVertexDeclarationImpl *This = (IWineD3DVertexDeclarationImpl *)iface; convToW[nTokens].Type = type; convToW[nTokens].Offset = offset; convToW[nTokens].Reg = reg; - offset += glTypeLookup[type][1] * glTypeLookup[type][4]; + offset += glTypeLookup[type].size * glTypeLookup[type].typesize; ++nTokens; } else if (D3DVSD_TOKEN_STREAMDATA == tokentype && 0x10000000 & tokentype ) { TRACE(" 0x%08lx SKIP(%lu)\n", tokentype, ((tokentype & D3DVSD_SKIPCOUNTMASK) >> D3DVSD_SKIPCOUNTSHIFT)); diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index d6e851a938d..9afa988d690 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -81,8 +81,16 @@ extern DWORD *stateLookup[MAX_LOOKUPS]; extern DWORD minMipLookup[D3DTEXF_ANISOTROPIC + 1][D3DTEXF_LINEAR + 1]; +typedef struct _WINED3DGLTYPE { + int d3dType; + GLint size; + GLenum glType; + GLboolean normalized; + int typesize; +} WINED3DGLTYPE; + /* NOTE: Make sure these are in the correct numerical order. (see /include/d3d9types.h typedef enum _D3DDECLTYPE) */ -UINT static const glTypeLookup[D3DDECLTYPE_UNUSED][5] = { +WINED3DGLTYPE static const glTypeLookup[D3DDECLTYPE_UNUSED] = { {D3DDECLTYPE_FLOAT1, 1, GL_FLOAT , GL_FALSE ,sizeof(float)}, {D3DDECLTYPE_FLOAT2, 2, GL_FLOAT , GL_FALSE ,sizeof(float)}, {D3DDECLTYPE_FLOAT3, 3, GL_FLOAT , GL_FALSE ,sizeof(float)}, @@ -101,11 +109,11 @@ UINT static const glTypeLookup[D3DDECLTYPE_UNUSED][5] = { {D3DDECLTYPE_FLOAT16_2, 2, GL_FLOAT , GL_FALSE ,sizeof(short int)}, {D3DDECLTYPE_FLOAT16_4, 4, GL_FLOAT , GL_FALSE ,sizeof(short int)}}; -#define WINED3D_ATR_TYPE(_attribute) glTypeLookup[sd->u.s._attribute.dwType][0] -#define WINED3D_ATR_SIZE(_attribute) glTypeLookup[sd->u.s._attribute.dwType][1] -#define WINED3D_ATR_GLTYPE(_attribute) glTypeLookup[sd->u.s._attribute.dwType][2] -#define WINED3D_ATR_NORMALIZED(_attribute) glTypeLookup[sd->u.s._attribute.dwType][3] -#define WINED3D_ATR_TYPESIZE(_attribute) glTypeLookup[sd->u.s._attribute.dwType][4] +#define WINED3D_ATR_TYPE(_attribute) glTypeLookup[sd->u.s._attribute.dwType].d3dType +#define WINED3D_ATR_SIZE(_attribute) glTypeLookup[sd->u.s._attribute.dwType].size +#define WINED3D_ATR_GLTYPE(_attribute) glTypeLookup[sd->u.s._attribute.dwType].glType +#define WINED3D_ATR_NORMALIZED(_attribute) glTypeLookup[sd->u.s._attribute.dwType].normalized +#define WINED3D_ATR_TYPESIZE(_attribute) glTypeLookup[sd->u.s._attribute.dwType].typesize /** * Settings