Fixed bug in texture format. gsoc2009_ps3
authorMartin Lowinski <martin@goldtopf.org>
Mon, 10 Aug 2009 13:28:58 +0000
branchgsoc2009_ps3
changeset 3153 a16c4ec43631
parent 3152 7f3341cccf42
child 3154 95e48f7a3a93
Fixed bug in texture format.
src/video/ps3/SDL_ps3render.c
--- a/src/video/ps3/SDL_ps3render.c	Thu Aug 06 12:24:47 2009 +0000
+++ b/src/video/ps3/SDL_ps3render.c	Mon Aug 10 13:28:58 2009 +0000
@@ -326,9 +326,6 @@
                 /* We should never get here (caught above) */
                 break;
         }
-        if ((texture->format & SDL_PIXELFORMAT_YV12 || texture->format & SDL_PIXELFORMAT_IYUV)
-                && texture->w % 16 == 0 && texture->h % 16 == 0) {
-        }
     } else {
         data->pixels = NULL;
         data->pixels = SDL_malloc(texture->h * data->pitch);
@@ -536,8 +533,8 @@
     deprintf(1, "texture->h = %u\n", texture->h);
 
     if (SDL_ISPIXELFORMAT_FOURCC(texture->format)) {
-        deprintf(1, "SDL_ISPIXELFORMAT_FOURCC = true\n");
-        if ((texture->format & SDL_PIXELFORMAT_YV12 || texture->format & SDL_PIXELFORMAT_IYUV)
+        deprintf(1, "Texture is in a FOURCC format\n");
+        if ((texture->format == SDL_PIXELFORMAT_YV12 || texture->format == SDL_PIXELFORMAT_IYUV)
                 && texture->w % 8 == 0 && texture->h % 8 == 0
                 && dstrect->w % 8 == 0 && dstrect->h % 8 == 0) {
             deprintf(1, "Use SPE for scaling/converting\n");
@@ -546,7 +543,7 @@
             Uint8 *lum, *Cr, *Cb;
             Uint8 *scaler_out = NULL;
             Uint8 *dstpixels;
-            switch (swdata->format) {
+            switch (texture->format) {
                 case SDL_PIXELFORMAT_YV12:
                     lum = swdata->planes[0];
                     Cr = swdata->planes[1];
@@ -558,10 +555,13 @@
                     Cb = swdata->planes[1];
                     break;
                 default:
+                    /* We should never get here (caught above) */
                     return -1;
             }
 
             if (srcrect->w != dstrect->w || srcrect->h != dstrect->h) {
+                deprintf(1, "We need to scale the texture from %u x %u to %u x %u\n",
+                        srcrect->w, srcrect->h, dstrect->w, dstrect->h);
                 /* Alloc mem for scaled YUV picture */
                 scaler_out = (Uint8 *) memalign(16, dstrect->w * dstrect->h + ((dstrect->w * dstrect->h) >> 1));
                 if (scaler_out == NULL) {