Advertise the most efficient format for the screen. Of course SDL code needs
authorSam Lantinga <slouken@libsdl.org>
Mon, 13 Aug 2007 02:38:59 +0000
changeset 2237 e57a883ffa86
parent 2236 741afd8402cf
child 2238 93ea84f77d83
Advertise the most efficient format for the screen. Of course SDL code needs to be fixed to handle framebuffers with alpha...
src/video/SDL_renderer_gl.c
src/video/cocoa/SDL_cocoamodes.m
--- a/src/video/SDL_renderer_gl.c	Sun Aug 12 18:53:51 2007 +0000
+++ b/src/video/SDL_renderer_gl.c	Mon Aug 13 02:38:59 2007 +0000
@@ -457,15 +457,9 @@
         type = GL_UNSIGNED_BYTE;
         break;
     case SDL_PIXELFORMAT_RGB888:
-#ifdef __MACOSX__
-        internalFormat = GL_RGBA;
-        format = GL_BGRA;
-        type = GL_UNSIGNED_INT_8_8_8_8_REV;
-#else
         internalFormat = GL_RGB8;
         format = GL_BGRA;
         type = GL_UNSIGNED_BYTE;
-#endif
         break;
     case SDL_PIXELFORMAT_BGR24:
         internalFormat = GL_RGB8;
@@ -574,13 +568,14 @@
         renderdata->glTexParameteri(data->type, GL_TEXTURE_STORAGE_HINT_APPLE,
                                     GL_STORAGE_CACHED_APPLE);
     }
-    if (data->pixels && internalFormat == GL_RGBA && format == GL_BGRA
-        && type == GL_UNSIGNED_INT_8_8_8_8_REV && data->pixels) {
+    if (texture->access == SDL_TEXTUREACCESS_STREAMING && texture->format == SDL_PIXELFORMAT_ARGB8888 ) {
+        /*
         if (renderdata->glTextureRangeAPPLE) {
             renderdata->glTextureRangeAPPLE(data->type,
                                             texture->h * data->pitch,
                                             data->pixels);
         }
+        */
         renderdata->glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE);
         renderdata->glTexImage2D(data->type, 0, internalFormat, texture_w,
                                  texture_h, 0, format, type, data->pixels);
@@ -806,19 +801,6 @@
         int bpp = SDL_BYTESPERPIXEL(texture->format);
         int pitch = texturedata->pitch;
 
-#ifdef __MACOSX__
-        if (texture->format == SDL_PIXELFORMAT_RGB888) {
-            int i;
-            Uint8 *p = (Uint8 *) texturedata->pixels;
-#if SDL_BYTEORDER == SDL_LIL_ENDIAN
-            p += 3;
-#endif
-            for (i = texture->h * pitch / 4; i--;) {
-                *p = 0xff;
-                p += 4;
-            }
-        }
-#endif
         SetupTextureUpdate(data, texture, pitch);
         data->glBindTexture(texturedata->type, texturedata->texture);
         for (dirty = texturedata->dirty.list; dirty; dirty = dirty->next) {
--- a/src/video/cocoa/SDL_cocoamodes.m	Sun Aug 12 18:53:51 2007 +0000
+++ b/src/video/cocoa/SDL_cocoamodes.m	Mon Aug 13 02:38:59 2007 +0000
@@ -118,10 +118,10 @@
         mode->format = SDL_PIXELFORMAT_INDEX8;
         break;
     case 16:
-        mode->format = SDL_PIXELFORMAT_RGB555;
+        mode->format = SDL_PIXELFORMAT_ARGB1555;
         break;
     case 32:
-        mode->format = SDL_PIXELFORMAT_RGB888;
+        mode->format = SDL_PIXELFORMAT_ARGB8888;
         break;
     }
     mode->w = width;