Only build the MMX/SSE/SSE2 versions for ReadRGBASpan when the pixel format
authorIan Romanick <idr@us.ibm.com>
Sat, 16 Oct 2004 00:03:27 +0000 (00:03 +0000)
committerIan Romanick <idr@us.ibm.com>
Sat, 16 Oct 2004 00:03:27 +0000 (00:03 +0000)
matches what they optimized versions actually expect.

src/mesa/drivers/dri/common/spantmp2.h

index 01d7fea0c528cd8cd9d67cf113614c6d187c2a6c..6bdbe150c3b3ba9b7ebf3e3d4262cb2092d03138 100644 (file)
@@ -366,7 +366,9 @@ static void TAG(ReadRGBASpan)( const GLcontext *ctx,
 }
 
 
-#if defined(USE_MMX_ASM)
+#if defined(USE_MMX_ASM) && \
+   (SPANTMP_PIXEL_FMT == GL_BGRA) && \
+     (SPANTMP_PIXEL_TYPE == GL_UNSIGNED_INT_8_8_8_8_REV)
 static void TAG2(ReadRGBASpan,_MMX)( const GLcontext *ctx,
                               GLuint n, GLint x, GLint y,
                               GLubyte rgba[][4])
@@ -407,7 +409,9 @@ static void TAG2(ReadRGBASpan,_MMX)( const GLcontext *ctx,
 #endif
 
 
-#if defined(USE_SSE_ASM)
+#if defined(USE_SSE_ASM) && \
+   (SPANTMP_PIXEL_FMT == GL_BGRA) && \
+     (SPANTMP_PIXEL_TYPE == GL_UNSIGNED_INT_8_8_8_8_REV)
 static void TAG2(ReadRGBASpan,_SSE2)( const GLcontext *ctx,
                               GLuint n, GLint x, GLint y,
                               GLubyte rgba[][4])
@@ -437,7 +441,9 @@ static void TAG2(ReadRGBASpan,_SSE2)( const GLcontext *ctx,
 }
 #endif
 
-#if defined(USE_SSE_ASM)
+#if defined(USE_SSE_ASM) && \
+   (SPANTMP_PIXEL_FMT == GL_BGRA) && \
+     (SPANTMP_PIXEL_TYPE == GL_UNSIGNED_INT_8_8_8_8_REV)
 static void TAG2(ReadRGBASpan,_SSE)( const GLcontext *ctx,
                               GLuint n, GLint x, GLint y,
                               GLubyte rgba[][4])
@@ -523,6 +529,8 @@ static void TAG(InitPointers)(struct swrast_device_driver *swdd)
    swdd->WriteMonoRGBAPixels = TAG(WriteMonoRGBAPixels);
    swdd->ReadRGBAPixels = TAG(ReadRGBAPixels);
 
+#if (SPANTMP_PIXEL_FMT == GL_BGRA) && \
+     (SPANTMP_PIXEL_TYPE == GL_UNSIGNED_INT_8_8_8_8_REV)
 #if defined(USE_SSE_ASM)
    if ( cpu_has_xmm2 ) {
       if (DBG) fprintf( stderr, "Using %s version of ReadRGBASpan\n", "SSE2" );
@@ -543,6 +551,7 @@ static void TAG(InitPointers)(struct swrast_device_driver *swdd)
       swdd->ReadRGBASpan = TAG2(ReadRGBASpan, _MMX);
    }
    else
+#endif
 #endif
    {
       if (DBG) fprintf( stderr, "Using %s version of ReadRGBASpan\n", "C" );