changeset 2237:e57a883ffa86

Advertise the most efficient format for the screen. Of course SDL code needs to be fixed to handle framebuffers with alpha...
author Sam Lantinga <slouken@libsdl.org>
date Mon, 13 Aug 2007 02:38:59 +0000
parents 741afd8402cf
children 93ea84f77d83
files src/video/SDL_renderer_gl.c src/video/cocoa/SDL_cocoamodes.m
diffstat 2 files changed, 5 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- 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;