From 5fca3f7890cbade76619787c59fc4092d7af7904 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 13 Aug 2007 02:38:59 +0000 Subject: [PATCH] Advertise the most efficient format for the screen. Of course SDL code needs to be fixed to handle framebuffers with alpha... --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%402599 --- src/video/SDL_renderer_gl.c | 24 +++--------------------- src/video/cocoa/SDL_cocoamodes.m | 4 ++-- 2 files changed, 5 insertions(+), 23 deletions(-) diff --git a/src/video/SDL_renderer_gl.c b/src/video/SDL_renderer_gl.c index 3eeeaafd7..e8a4c0943 100644 --- a/src/video/SDL_renderer_gl.c +++ b/src/video/SDL_renderer_gl.c @@ -457,15 +457,9 @@ GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) 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 @@ GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) 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 @@ GL_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, 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) { diff --git a/src/video/cocoa/SDL_cocoamodes.m b/src/video/cocoa/SDL_cocoamodes.m index 51ecf05bb..e2c2aac42 100644 --- a/src/video/cocoa/SDL_cocoamodes.m +++ b/src/video/cocoa/SDL_cocoamodes.m @@ -118,10 +118,10 @@ GetDisplayMode(CFDictionaryRef moderef, SDL_DisplayMode *mode) 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;