mesa: fix texstore of DEPTH24_STENCIL8 if srcFormat is STENCIL_INDEX
authorMarek Olšák <maraeo@gmail.com>
Tue, 21 Jun 2011 03:10:26 +0000 (05:10 +0200)
committerMarek Olšák <maraeo@gmail.com>
Fri, 24 Jun 2011 20:09:27 +0000 (22:09 +0200)
NOTE: This is a candidate for the 7.10 branch.

src/mesa/main/texstore.c

index 6da3e4eb7b40b02b1bf6a3ddcae2f1f2955814b7..5c925a3d314ac37ff42b25db1b659bee81aa2083 100644 (file)
@@ -3308,10 +3308,12 @@ _mesa_texstore_z24_s8(TEXSTORE_PARAMS)
    GLint img, row;
 
    ASSERT(dstFormat == MESA_FORMAT_Z24_S8);
-   ASSERT(srcFormat == GL_DEPTH_STENCIL_EXT || srcFormat == GL_DEPTH_COMPONENT);
+   ASSERT(srcFormat == GL_DEPTH_STENCIL_EXT ||
+          srcFormat == GL_DEPTH_COMPONENT ||
+          srcFormat == GL_STENCIL_INDEX);
    ASSERT(srcFormat != GL_DEPTH_STENCIL_EXT || srcType == GL_UNSIGNED_INT_24_8_EXT);
 
-   if (srcFormat != GL_DEPTH_COMPONENT && ctx->Pixel.DepthScale == 1.0f &&
+   if (srcFormat == GL_DEPTH_STENCIL && ctx->Pixel.DepthScale == 1.0f &&
        ctx->Pixel.DepthBias == 0.0f &&
        !srcPacking->SwapBytes) {
       /* simple path */
@@ -3322,7 +3324,8 @@ _mesa_texstore_z24_s8(TEXSTORE_PARAMS)
                      srcWidth, srcHeight, srcDepth, srcFormat, srcType,
                      srcAddr, srcPacking);
    }
-   else if (srcFormat == GL_DEPTH_COMPONENT) {
+   else if (srcFormat == GL_DEPTH_COMPONENT ||
+            srcFormat == GL_STENCIL_INDEX) {
       /* In case we only upload depth we need to preserve the stencil */
       for (img = 0; img < srcDepth; img++) {
         GLuint *dstRow = (GLuint *) dstAddr