[8/13] WineD3D: Remove dead code from drawprim.c

Stefan Dösinger stefan at codeweavers.com
Tue Feb 20 15:48:05 CST 2007


-------------- next part --------------
From 423c2bae97354e394d1dddb0fabb2f15dcd95550 Mon Sep 17 00:00:00 2001
From: Stefan Doesinger <stefan at codeweavers.com>
Date: Tue, 20 Feb 2007 16:03:21 +0100
Subject: [PATCH] WineD3D: Remove dead code from drawprim.c

This removes some #if 0'ed code from drawprim, namely software vertex shaders and 2 incorrect
lines for setting hardware index buffers. The sw vb code copied from d3d8 was the wrong
approch(interpretion instead of cross compiling shader asm -> x86 instructions), and if we
really want that code back we can get it from the git history anyway(It doesn't work at this
point, thats the other thing)

GL_INDEX_ARRAY and glIndexPointer set a pointer to an array of color indices, not vertex
indices, thus the 2 other disabled lines are wrong too.
---
 dlls/wined3d/drawprim.c |  278 -----------------------------------------------
 1 files changed, 0 insertions(+), 278 deletions(-)

diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c
index 0a2ec8e..c115f2e 100644
--- a/dlls/wined3d/drawprim.c
+++ b/dlls/wined3d/drawprim.c
@@ -403,137 +403,6 @@ void primitiveConvertToStridedData(IWineD3DDevice *iface, WineDirect3DVertexStri
     }
 }
 
-#if 0 /* TODO: Software Shaders */
-/* Draw a single vertex using this information */
-static void draw_vertex(IWineD3DDevice *iface,                         /* interface    */
-                 BOOL isXYZ,    float x, float y, float z, float rhw,  /* xyzn position*/
-                 BOOL isNormal, float nx, float ny, float nz,          /* normal       */
-                 BOOL isDiffuse, float *dRGBA,                         /* 1st   colors */
-                 BOOL isSpecular, float *sRGB,                         /* 2ndry colors */
-                 BOOL isPtSize, float ptSize,                       /* pointSize    */
-                 WINED3DVECTOR_4 *texcoords, int *numcoords)        /* texture info */
-{
-    unsigned int textureNo;
-    float s, t, r, q;
-    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
-
-    /* Diffuse -------------------------------- */
-    if (isDiffuse) {
-        glColor4fv(dRGBA);
-        VTRACE(("glColor4f: r,g,b,a=%f,%f,%f,%f\n", dRGBA[0], dRGBA[1], dRGBA[2], dRGBA[3]));
-    }
-
-    /* Specular Colour ------------------------------------------*/
-    if (isSpecular) {
-        if (GL_SUPPORT(EXT_SECONDARY_COLOR)) {
-          GL_EXTCALL(glSecondaryColor3fvEXT(sRGB));
-          VTRACE(("glSecondaryColor4f: r,g,b=%f,%f,%f\n", sRGB[0], sRGB[1], sRGB[2]));
-        } else {
-	  VTRACE(("Specular color extensions not supplied\n"));
-	}
-    }
-
-    /* Normal -------------------------------- */
-    if (isNormal) {
-        VTRACE(("glNormal:nx,ny,nz=%f,%f,%f\n", nx,ny,nz));
-        glNormal3f(nx, ny, nz);
-    }
-
-    /* Point Size ----------------------------------------------*/
-    if (isPtSize) {
-
-        /* no such functionality in the fixed function GL pipeline */
-        FIXME("Cannot change ptSize here in openGl\n");
-    }
-
-    /* Texture coords --------------------------- */
-    for (textureNo = 0; textureNo < GL_LIMITS(textures); ++textureNo) {
-
-        if (!GL_SUPPORT(ARB_MULTITEXTURE) && textureNo > 0) {
-            FIXME("Program using multiple concurrent textures which this opengl implementation doesn't support\n");
-            continue ;
-        }
-
-        /* Query tex coords */
-        if (This->stateBlock->textures[textureNo] != NULL) {
-
-            int    coordIdx = This->stateBlock->textureState[textureNo][WINED3DTSS_TEXCOORDINDEX];
-            if (coordIdx >= MAX_TEXTURES) {
-                VTRACE(("tex: %d - Skip tex coords, as being system generated\n", textureNo));
-                continue;
-            } else if (numcoords[coordIdx] == 0) {
-                TRACE("tex: %d - Skipping tex coords, as no data supplied or no coords supplied\n", textureNo);
-                continue;
-            } else {
-
-                /* Initialize vars */
-                s = 0.0f;
-                t = 0.0f;
-                r = 0.0f;
-                q = 0.0f;
-
-                switch (numcoords[coordIdx]) {
-                case 4: q = texcoords[coordIdx].w; /* drop through */
-                case 3: r = texcoords[coordIdx].z; /* drop through */
-                case 2: t = texcoords[coordIdx].y; /* drop through */
-                case 1: s = texcoords[coordIdx].x;
-                }
-
-                switch (numcoords[coordIdx]) {   /* Supply the provided texture coords */
-                case WINED3DTTFF_COUNT1:
-                    VTRACE(("tex:%d, s=%f\n", textureNo, s));
-                    if (GL_SUPPORT(ARB_MULTITEXTURE)) {
-                        GLMULTITEXCOORD1F(textureNo, s);
-                    } else {
-                        glTexCoord1f(s);
-                    }
-                    break;
-                case WINED3DTTFF_COUNT2:
-                    VTRACE(("tex:%d, s=%f, t=%f\n", textureNo, s, t));
-                    if (GL_SUPPORT(ARB_MULTITEXTURE)) {
-                        GLMULTITEXCOORD2F(textureNo, s, t);
-                    } else {
-                        glTexCoord2f(s, t);
-                    }
-                    break;
-                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);
-                    } else {
-                        glTexCoord3f(s, t, r);
-                    }
-                    break;
-                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);
-                    } else {
-                        glTexCoord4f(s, t, r, q);
-                    }
-                    break;
-                default:
-                    FIXME("Should not get here as numCoords should be 0->4 (%x)!\n", numcoords[coordIdx]);
-                }
-            }
-        }
-    } /* End of textures */
-
-    /* Position -------------------------------- */
-    if (isXYZ) {
-        if (1.0f == rhw || rhw < 0.00001f) {
-            VTRACE(("Vertex: glVertex:x,y,z=%f,%f,%f\n", x,y,z));
-            glVertex3f(x, y, z);
-        } else {
-            /* Cannot optimize by dividing through by rhw as rhw is required
-               later for perspective in the GL pipeline for vertex shaders   */
-            VTRACE(("Vertex: glVertex:x,y,z=%f,%f,%f / rhw=%f\n", x,y,z,rhw));
-            glVertex4f(x,y,z,rhw);
-        }
-    }
-}
-#endif /* TODO: Software shaders */
-
 static void drawStridedFast(IWineD3DDevice *iface,UINT numberOfVertices, GLenum glPrimitiveType,
                      const void *idxData, short idxSize, ULONG minIndex, ULONG startIdx, ULONG startVertex) {
     IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
@@ -542,10 +411,6 @@ static void drawStridedFast(IWineD3DDevice *iface,UINT numberOfVertices, GLenum
         TRACE("(%p) : glElements(%x, %d, %d, ...)\n", This, glPrimitiveType, numberOfVertices, minIndex);
         idxData = idxData == (void *)-1 ? NULL : idxData;
 #if 1
-#if 0
-        glIndexPointer(idxSize == 2 ? GL_UNSIGNED_SHORT : GL_UNSIGNED_INT, idxSize, startIdx);
-        glEnableClientState(GL_INDEX_ARRAY);
-#endif
         glDrawElements(glPrimitiveType, numberOfVertices, idxSize == 2 ? GL_UNSIGNED_SHORT : GL_UNSIGNED_INT,
                      (const char *)idxData+(idxSize * startIdx));
 #else /* using drawRangeElements may be faster */
@@ -886,149 +751,6 @@ static void drawStridedSlow(IWineD3DDevice *iface, WineDirect3DVertexStridedData
     checkGLcall("glEnd and previous calls");
 }
 
-#if 0 /* TODO: Software/Hardware vertex blending support */
-/*
- * Draw with emulated vertex shaders
- * Note: strided data is uninitialized, as we need to pass the vertex
- *     shader directly as ordering irs yet
- */
-void drawStridedSoftwareVS(IWineD3DDevice *iface, WineDirect3DVertexStridedData *sd,
-                     int PrimitiveType, ULONG NumPrimitives,
-                     const void *idxData, short idxSize, ULONG minIndex, ULONG startIdx) {
-
-    unsigned int               textureNo    = 0;
-    GLenum                     glPrimType   = GL_POINTS;
-    int                        NumVertexes  = NumPrimitives;
-    const short               *pIdxBufS     = NULL;
-    const long                *pIdxBufL     = NULL;
-    LONG                       SkipnStrides = 0;
-    LONG                       vx_index;
-    float x  = 0.0f, y  = 0.0f, z = 0.0f;  /* x,y,z coordinates          */
-    float rhw = 0.0f;                      /* rhw                        */
-    float ptSize = 0.0f;                   /* Point size                 */
-    D3DVECTOR_4 texcoords[8];              /* Texture Coords             */
-    int   numcoords[8];                    /* Number of coords           */
-    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
-
-    IDirect3DVertexShaderImpl* vertexShader = NULL;
-
-    TRACE("Using slow software vertex shader code\n");
-
-    /* Variable Initialization */
-    if (idxData != NULL) {
-        if (idxSize == 2) pIdxBufS = (const short *) idxData;
-        else pIdxBufL = (const long *) idxData;
-    }
-
-    /* Ok, Work out which primitive is requested and how many vertexes that will be */
-    NumVertexes = primitiveToGl(PrimitiveType, NumPrimitives, &glPrimType);
-
-    /* Retrieve the VS information */
-    vertexShader = (IWineD3DVertexShaderImp *)This->stateBlock->VertexShader;
-
-    /* Start drawing in GL */
-    VTRACE(("glBegin(%x)\n", glPrimType));
-    glBegin(glPrimType);
-
-    /* For each primitive */
-    for (vx_index = 0; vx_index < NumVertexes; ++vx_index) {
-
-        /* For indexed data, we need to go a few more strides in */
-        if (idxData != NULL) {
-
-            /* Indexed so work out the number of strides to skip */
-            if (idxSize == 2) {
-                VTRACE(("Idx for vertex %d = %d\n", vx_index, pIdxBufS[startIdx+vx_index]));
-                SkipnStrides = pIdxBufS[startIdx+vx_index];
-            } else {
-                VTRACE(("Idx for vertex %d = %d\n", vx_index, pIdxBufL[startIdx+vx_index]));
-                SkipnStrides = pIdxBufL[startIdx+vx_index];
-            }
-        }
-
-        /* Fill the vertex shader input */
-        IDirect3DDeviceImpl_FillVertexShaderInputSW(This, vertexShader, SkipnStrides);
-
-        /* Initialize the output fields to the same defaults as it would normally have */
-        memset(&vertexShader->output, 0, sizeof(VSHADEROUTPUTDATA8));
-        vertexShader->output.oD[0].x = 1.0;
-        vertexShader->output.oD[0].y = 1.0;
-        vertexShader->output.oD[0].z = 1.0;
-        vertexShader->output.oD[0].w = 1.0;
-
-        /* Now execute the vertex shader */
-        IDirect3DVertexShaderImpl_ExecuteSW(vertexShader, &vertexShader->input, &vertexShader->output);
-
-        /*
-        TRACE_VECTOR(vertexShader->output.oPos);
-        TRACE_VECTOR(vertexShader->output.oD[0]);
-        TRACE_VECTOR(vertexShader->output.oD[1]);
-        TRACE_VECTOR(vertexShader->output.oT[0]);
-        TRACE_VECTOR(vertexShader->output.oT[1]);
-        TRACE_VECTOR(vertexShader->input.V[0]);
-        TRACE_VECTOR(vertexShader->data->C[0]);
-        TRACE_VECTOR(vertexShader->data->C[1]);
-        TRACE_VECTOR(vertexShader->data->C[2]);
-        TRACE_VECTOR(vertexShader->data->C[3]);
-        TRACE_VECTOR(vertexShader->data->C[4]);
-        TRACE_VECTOR(vertexShader->data->C[5]);
-        TRACE_VECTOR(vertexShader->data->C[6]);
-        TRACE_VECTOR(vertexShader->data->C[7]);
-        */
-
-        /* Extract out the output */
-        /* FIXME: Fog coords? */
-        x = vertexShader->output.oPos.x;
-        y = vertexShader->output.oPos.y;
-        z = vertexShader->output.oPos.z;
-        rhw = vertexShader->output.oPos.w;
-        ptSize = vertexShader->output.oPts.x; /* Fixme - Is this right? */
-
-        /** Update textures coords using vertexShader->output.oT[0->7] */
-        memset(texcoords, 0x00, sizeof(texcoords));
-        memset(numcoords, 0x00, sizeof(numcoords));
-        for (textureNo = 0; textureNo < GL_LIMITS(textures); ++textureNo) {
-            if (This->stateBlock->textures[textureNo] != NULL) {
-               texcoords[textureNo].x = vertexShader->output.oT[textureNo].x;
-               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] != 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;
-                   case WINED3DRTYPE_VOLUMETEXTURE: numcoords[textureNo] = 3; break;
-                   default:                         numcoords[textureNo] = 4;
-                   }
-               }
-            } else {
-                numcoords[textureNo] = 0;
-            }
-        }
-
-        /* Draw using this information */
-        draw_vertex(iface,
-                    TRUE, x, y, z, rhw,
-                    TRUE, 0.0f, 0.0f, 1.0f,
-                    TRUE, (float*) &vertexShader->output.oD[0],
-                    TRUE, (float*) &vertexShader->output.oD[1],
-                    FALSE, ptSize,         /* FIXME: Change back when supported */
-                    texcoords, numcoords);
-
-        /* For non indexed mode, step onto next parts */
-        if (idxData == NULL) {
-           ++SkipnStrides;
-        }
-
-    } /* for each vertex */
-
-    glEnd();
-    checkGLcall("glEnd and previous calls");
-}
-
-#endif
-
 static void check_fbo_status(IWineD3DDevice *iface) {
     IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
 
-- 
1.4.4.3



More information about the wine-patches mailing list