From 9846602412ad38356d46541f4b0251192b9d36c2 Mon Sep 17 00:00:00 2001 From: Ivan Gyurdiev Date: Thu, 12 Oct 2006 23:36:09 -0400 Subject: [PATCH] wined3d: Add D3DTEXTURETRANSFORMTYPE to the WINED3D namespace. --- dlls/wined3d/arb_program_shader.c | 2 +- dlls/wined3d/cubetexture.c | 4 +++- dlls/wined3d/drawprim.c | 30 +++++++++++++++--------------- dlls/wined3d/glsl_shader.c | 2 +- dlls/wined3d/stateblock.c | 2 +- dlls/wined3d/texture.c | 2 +- dlls/wined3d/utils.c | 20 ++++++++++---------- include/wine/wined3d_types.h | 11 +++++++++++ 8 files changed, 43 insertions(+), 30 deletions(-) diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index ddfb3b4d949..b53bcb0fabd 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -673,7 +673,7 @@ void pshader_hw_tex(SHADER_OPCODE_ARG* arg) { tex_type = "2D"; } - if (deviceImpl->stateBlock->textureState[reg_sampler_code][WINED3DTSS_TEXTURETRANSFORMFLAGS] & D3DTTFF_PROJECTED) { + if (deviceImpl->stateBlock->textureState[reg_sampler_code][WINED3DTSS_TEXTURETRANSFORMFLAGS] & WINED3DTTFF_PROJECTED) { shader_addline(buffer, "TXP %s, %s, texture[%u], %s;\n", reg_dest, reg_coord, reg_sampler_code, tex_type); } else { diff --git a/dlls/wined3d/cubetexture.c b/dlls/wined3d/cubetexture.c index 61c2480ce42..06d6423ec07 100644 --- a/dlls/wined3d/cubetexture.c +++ b/dlls/wined3d/cubetexture.c @@ -232,7 +232,9 @@ static void WINAPI IWineD3DCubeTextureImpl_ApplyStateChanges(IWineD3DCubeTexture /* Apply non-power2 mappings and texture offsets so long as the texture coords aren't projected or generated */ if(This->pow2scalingFactor != 1.0f) { - if((textureStates[WINED3DTSS_TEXCOORDINDEX] & 0xFFFF0000) == D3DTSS_TCI_PASSTHRU && (~textureStates[WINED3DTSS_TEXTURETRANSFORMFLAGS] & D3DTTFF_PROJECTED)) { + if((textureStates[WINED3DTSS_TEXCOORDINDEX] & 0xFFFF0000) == D3DTSS_TCI_PASSTHRU && + (~textureStates[WINED3DTSS_TEXTURETRANSFORMFLAGS] & WINED3DTTFF_PROJECTED)) { + glMatrixMode(GL_TEXTURE); memset(matrix, 0 , sizeof(matrix)); diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c index e4c049a4f43..f880aadd12a 100644 --- a/dlls/wined3d/drawprim.c +++ b/dlls/wined3d/drawprim.c @@ -738,7 +738,7 @@ static void draw_vertex(IWineD3DDevice *iface, /* interf } switch (numcoords[coordIdx]) { /* Supply the provided texture coords */ - case D3DTTFF_COUNT1: + case WINED3DTTFF_COUNT1: VTRACE(("tex:%d, s=%f\n", textureNo, s)); if (GL_SUPPORT(ARB_MULTITEXTURE)) { GLMULTITEXCOORD1F(textureNo, s); @@ -746,7 +746,7 @@ static void draw_vertex(IWineD3DDevice *iface, /* interf glTexCoord1f(s); } break; - case D3DTTFF_COUNT2: + case WINED3DTTFF_COUNT2: VTRACE(("tex:%d, s=%f, t=%f\n", textureNo, s, t)); if (GL_SUPPORT(ARB_MULTITEXTURE)) { GLMULTITEXCOORD2F(textureNo, s, t); @@ -754,7 +754,7 @@ static void draw_vertex(IWineD3DDevice *iface, /* interf glTexCoord2f(s, t); } break; - case D3DTTFF_COUNT3: + case WINED3DTTFF_COUNT3: VTRACE(("tex:%d, s=%f, t=%f, r=%f\n", textureNo, s, t, r)); if (GL_SUPPORT(ARB_MULTITEXTURE)) { GLMULTITEXCOORD3F(textureNo, s, t, r); @@ -762,7 +762,7 @@ static void draw_vertex(IWineD3DDevice *iface, /* interf glTexCoord3f(s, t, r); } break; - case D3DTTFF_COUNT4: + case WINED3DTTFF_COUNT4: VTRACE(("tex:%d, s=%f, t=%f, r=%f, q=%f\n", textureNo, s, t, r, q)); if (GL_SUPPORT(ARB_MULTITEXTURE)) { GLMULTITEXCOORD4F(textureNo, s, t, r, q); @@ -1420,14 +1420,14 @@ static void drawStridedSlow(IWineD3DDevice *iface, WineDirect3DVertexStridedData /* Projected is more 'fun' - Move the last coord to the 'q' parameter (see comments under WINED3DTSS_TEXTURETRANSFORMFLAGS */ - if ((This->stateBlock->textureState[textureNo][WINED3DTSS_TEXTURETRANSFORMFLAGS] != D3DTTFF_DISABLE) && - (This->stateBlock->textureState[textureNo][WINED3DTSS_TEXTURETRANSFORMFLAGS] & D3DTTFF_PROJECTED)) { + if ((This->stateBlock->textureState[textureNo][WINED3DTSS_TEXTURETRANSFORMFLAGS] != WINED3DTTFF_DISABLE) && + (This->stateBlock->textureState[textureNo][WINED3DTSS_TEXTURETRANSFORMFLAGS] & WINED3DTTFF_PROJECTED)) { - if (This->stateBlock->textureState[textureNo][WINED3DTSS_TEXTURETRANSFORMFLAGS] & D3DTTFF_PROJECTED) { + if (This->stateBlock->textureState[textureNo][WINED3DTSS_TEXTURETRANSFORMFLAGS] & WINED3DTTFF_PROJECTED) { switch (coordsToUse) { case 0: /* Drop Through */ case 1: - FIXME("D3DTTFF_PROJECTED but only zero or one coordinate?\n"); + FIXME("WINED3DTTFF_PROJECTED but only zero or one coordinate?\n"); break; case 2: q = t; @@ -1443,13 +1443,13 @@ static void drawStridedSlow(IWineD3DDevice *iface, WineDirect3DVertexStridedData break; default: FIXME("Unexpected WINED3DTSS_TEXTURETRANSFORMFLAGS value of %d\n", - This->stateBlock->textureState[textureNo][WINED3DTSS_TEXTURETRANSFORMFLAGS] & D3DTTFF_PROJECTED); + This->stateBlock->textureState[textureNo][WINED3DTSS_TEXTURETRANSFORMFLAGS] & WINED3DTTFF_PROJECTED); } } } switch (coordsToUse) { /* Supply the provided texture coords */ - case D3DTTFF_COUNT1: + case WINED3DTTFF_COUNT1: VTRACE(("tex:%d, s=%f\n", textureNo, s)); if (GL_SUPPORT(ARB_MULTITEXTURE)) { GL_EXTCALL(glMultiTexCoord1fARB(texture_idx, s)); @@ -1457,7 +1457,7 @@ static void drawStridedSlow(IWineD3DDevice *iface, WineDirect3DVertexStridedData glTexCoord1f(s); } break; - case D3DTTFF_COUNT2: + case WINED3DTTFF_COUNT2: VTRACE(("tex:%d, s=%f, t=%f\n", textureNo, s, t)); if (GL_SUPPORT(ARB_MULTITEXTURE)) { GL_EXTCALL(glMultiTexCoord2fARB(texture_idx, s, t)); @@ -1465,7 +1465,7 @@ static void drawStridedSlow(IWineD3DDevice *iface, WineDirect3DVertexStridedData glTexCoord2f(s, t); } break; - case D3DTTFF_COUNT3: + case WINED3DTTFF_COUNT3: VTRACE(("tex:%d, s=%f, t=%f, r=%f\n", textureNo, s, t, r)); if (GL_SUPPORT(ARB_MULTITEXTURE)) { GL_EXTCALL(glMultiTexCoord3fARB(texture_idx, s, t, r)); @@ -1473,7 +1473,7 @@ static void drawStridedSlow(IWineD3DDevice *iface, WineDirect3DVertexStridedData glTexCoord3f(s, t, r); } break; - case D3DTTFF_COUNT4: + case WINED3DTTFF_COUNT4: VTRACE(("tex:%d, s=%f, t=%f, r=%f, q=%f\n", textureNo, s, t, r, q)); if (GL_SUPPORT(ARB_MULTITEXTURE)) { GL_EXTCALL(glMultiTexCoord4fARB(texture_idx, s, t, r, q)); @@ -1683,8 +1683,8 @@ void drawStridedSoftwareVS(IWineD3DDevice *iface, WineDirect3DVertexStridedData texcoords[textureNo].y = vertexShader->output.oT[textureNo].y; texcoords[textureNo].z = vertexShader->output.oT[textureNo].z; texcoords[textureNo].w = vertexShader->output.oT[textureNo].w; - if (This->stateBlock->texture_state[textureNo][WINED3DTSS_TEXTURETRANSFORMFLAGS] != D3DTTFF_DISABLE) { - numcoords[textureNo] = This->stateBlock->texture_state[textureNo][WINED3DTSS_TEXTURETRANSFORMFLAGS] & ~D3DTTFF_PROJECTED; + if (This->stateBlock->texture_state[textureNo][WINED3DTSS_TEXTURETRANSFORMFLAGS] != WINED3DTTFF_DISABLE) { + numcoords[textureNo] = This->stateBlock->texture_state[textureNo][WINED3DTSS_TEXTURETRANSFORMFLAGS] & ~WINED3DTTFF_PROJECTED; } else { switch (IDirect3DBaseTexture8Impl_GetType((LPDIRECT3DBASETEXTURE8) This->stateBlock->textures[textureNo])) { case WINED3DRTYPE_TEXTURE: numcoords[textureNo] = 2; break; diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index fde1b4c51a3..449bcba2470 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -1393,7 +1393,7 @@ void pshader_glsl_tex(SHADER_OPCODE_ARG* arg) { } sampler_type = arg->reg_maps->samplers[sampler_code] & WINED3DSP_TEXTURETYPE_MASK; - if(deviceImpl->stateBlock->textureState[sampler_code][WINED3DTSS_TEXTURETRANSFORMFLAGS] & D3DTTFF_PROJECTED) { + if(deviceImpl->stateBlock->textureState[sampler_code][WINED3DTSS_TEXTURETRANSFORMFLAGS] & WINED3DTTFF_PROJECTED) { switch(sampler_type) { case WINED3DSTT_2D: diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c index 8cc99ed060b..5a22b50615d 100644 --- a/dlls/wined3d/stateblock.c +++ b/dlls/wined3d/stateblock.c @@ -998,7 +998,7 @@ static HRESULT WINAPI IWineD3DStateBlockImpl_InitStartupStateBlock(IWineD3DStat This->textureState[i][WINED3DTSS_TEXCOORDINDEX ] = i; This->textureState[i][WINED3DTSS_BUMPENVLSCALE ] = (DWORD) 0.0; This->textureState[i][WINED3DTSS_BUMPENVLOFFSET ] = (DWORD) 0.0; - This->textureState[i][WINED3DTSS_TEXTURETRANSFORMFLAGS ] = D3DTTFF_DISABLE; + This->textureState[i][WINED3DTSS_TEXTURETRANSFORMFLAGS ] = WINED3DTTFF_DISABLE; This->textureState[i][WINED3DTSS_ADDRESSW ] = D3DTADDRESS_WRAP; This->textureState[i][WINED3DTSS_COLORARG0 ] = D3DTA_CURRENT; This->textureState[i][WINED3DTSS_ALPHAARG0 ] = D3DTA_CURRENT; diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c index d83a9a4c12a..70be7aa34d8 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c @@ -216,7 +216,7 @@ static void WINAPI IWineD3DTextureImpl_ApplyStateChanges(IWineD3DTexture *iface, if(This->pow2scalingFactorX != 1.0f || This->pow2scalingFactorY != 1.0f) { /* Apply non-power2 mappings and texture offsets so long as the texture coords aren't projected or generated */ if(((textureStates[WINED3DTSS_TEXCOORDINDEX] & 0xFFFF0000) == D3DTSS_TCI_PASSTHRU) && - (~textureStates[WINED3DTSS_TEXTURETRANSFORMFLAGS] & D3DTTFF_PROJECTED)) { + (~textureStates[WINED3DTSS_TEXTURETRANSFORMFLAGS] & WINED3DTTFF_PROJECTED)) { glMatrixMode(GL_TEXTURE); memset(matrix, 0 , sizeof(matrix)); matrix[0] = This->pow2scalingFactorX; diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index 2467ce365ac..1b4426d1833 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -2229,32 +2229,32 @@ void set_texture_matrix(const float *smat, DWORD flags, BOOL calculatedCoords) glMatrixMode(GL_TEXTURE); checkGLcall("glMatrixMode(GL_TEXTURE)"); - if (flags == D3DTTFF_DISABLE) { + if (flags == WINED3DTTFF_DISABLE) { glLoadIdentity(); checkGLcall("glLoadIdentity()"); return; } - if (flags == (D3DTTFF_COUNT1|D3DTTFF_PROJECTED)) { - ERR("Invalid texture transform flags: D3DTTFF_COUNT1|D3DTTFF_PROJECTED\n"); + if (flags == (WINED3DTTFF_COUNT1|WINED3DTTFF_PROJECTED)) { + ERR("Invalid texture transform flags: WINED3DTTFF_COUNT1|WINED3DTTFF_PROJECTED\n"); return; } memcpy(mat, smat, 16 * sizeof(float)); - switch (flags & ~D3DTTFF_PROJECTED) { - case D3DTTFF_COUNT1: mat[1] = mat[5] = mat[13] = 0; - case D3DTTFF_COUNT2: mat[2] = mat[6] = mat[10] = mat[14] = 0; + switch (flags & ~WINED3DTTFF_PROJECTED) { + case WINED3DTTFF_COUNT1: mat[1] = mat[5] = mat[13] = 0; + case WINED3DTTFF_COUNT2: mat[2] = mat[6] = mat[10] = mat[14] = 0; default: mat[3] = mat[7] = mat[11] = 0, mat[15] = 1; } - if (flags & D3DTTFF_PROJECTED) { - switch (flags & ~D3DTTFF_PROJECTED) { - case D3DTTFF_COUNT2: + if (flags & WINED3DTTFF_PROJECTED) { + switch (flags & ~WINED3DTTFF_PROJECTED) { + case WINED3DTTFF_COUNT2: mat[3] = mat[1], mat[7] = mat[5], mat[11] = mat[9], mat[15] = mat[13]; mat[1] = mat[5] = mat[9] = mat[13] = 0; break; - case D3DTTFF_COUNT3: + case WINED3DTTFF_COUNT3: mat[3] = mat[2], mat[7] = mat[6], mat[11] = mat[10], mat[15] = mat[14]; mat[2] = mat[6] = mat[10] = mat[14] = 0; break; diff --git a/include/wine/wined3d_types.h b/include/wine/wined3d_types.h index d1964ebab45..9492cbfe25c 100644 --- a/include/wine/wined3d_types.h +++ b/include/wine/wined3d_types.h @@ -551,6 +551,17 @@ typedef enum _WINED3DTEXTURESTAGESTATETYPE { #define WINED3D_HIGHEST_TEXTURE_STATE WINED3DTSS_CONSTANT +typedef enum _WINED3DTEXTURETRANSFORMFLAGS { + WINED3DTTFF_DISABLE = 0, + WINED3DTTFF_COUNT1 = 1, + WINED3DTTFF_COUNT2 = 2, + WINED3DTTFF_COUNT3 = 3, + WINED3DTTFF_COUNT4 = 4, + WINED3DTTFF_PROJECTED = 256, + + WINED3DTTFF_FORCE_DWORD = 0x7fffffff +} WINED3DTEXTURETRANSFORMFLAGS; + typedef enum _WINED3DTEXTUREOP { WINED3DTOP_DISABLE = 1, WINED3DTOP_SELECTARG1 = 2,