Support for BGR565 pixel format has been added, mainly for OpenGL ES renderer. OpenGL ES renderer now have new texture formats.

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%403619
This commit is contained in:
Mike Gorchak 2009-06-03 10:40:44 +00:00
parent e526b61873
commit f2f1af2732
3 changed files with 43 additions and 20 deletions

View file

@ -158,6 +158,9 @@ enum
SDL_PIXELFORMAT_ARGB4444 = SDL_PIXELFORMAT_ARGB4444 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
SDL_PACKEDLAYOUT_4444, 16, 2), SDL_PACKEDLAYOUT_4444, 16, 2),
SDL_PIXELFORMAT_ABGR4444 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
SDL_PACKEDLAYOUT_4444, 16, 2),
SDL_PIXELFORMAT_ARGB1555 = SDL_PIXELFORMAT_ARGB1555 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
SDL_PACKEDLAYOUT_1555, 16, 2), SDL_PACKEDLAYOUT_1555, 16, 2),
@ -167,6 +170,9 @@ enum
SDL_PIXELFORMAT_RGB565 = SDL_PIXELFORMAT_RGB565 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
SDL_PACKEDLAYOUT_565, 16, 2), SDL_PACKEDLAYOUT_565, 16, 2),
SDL_PIXELFORMAT_BGR565 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
SDL_PACKEDLAYOUT_565, 16, 2),
SDL_PIXELFORMAT_RGB24 = SDL_PIXELFORMAT_RGB24 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0, SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0,
24, 3), 24, 3),

View file

@ -72,6 +72,12 @@ SDL_PixelFormatEnumToMasks(Uint32 format, int *bpp, Uint32 * Rmask,
masks[2] = 0x000003E0; masks[2] = 0x000003E0;
masks[3] = 0x0000001F; masks[3] = 0x0000001F;
break; break;
case SDL_PACKEDLAYOUT_5551:
masks[0] = 0x0000F800;
masks[1] = 0x000007C0;
masks[2] = 0x0000003E;
masks[3] = 0x00000001;
break;
case SDL_PACKEDLAYOUT_565: case SDL_PACKEDLAYOUT_565:
masks[0] = 0x00000000; masks[0] = 0x00000000;
masks[1] = 0x0000F800; masks[1] = 0x0000F800;
@ -90,6 +96,12 @@ SDL_PixelFormatEnumToMasks(Uint32 format, int *bpp, Uint32 * Rmask,
masks[2] = 0x000FFC00; masks[2] = 0x000FFC00;
masks[3] = 0x000003FF; masks[3] = 0x000003FF;
break; break;
case SDL_PACKEDLAYOUT_1010102:
masks[0] = 0xFFC00000;
masks[1] = 0x003FF000;
masks[2] = 0x00000FFC;
masks[3] = 0x00000003;
break;
default: default:
/* Unknown layout */ /* Unknown layout */
return SDL_FALSE; return SDL_FALSE;
@ -176,7 +188,12 @@ SDL_MasksToPixelFormatEnum(int bpp, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask,
break; break;
case 16: case 16:
switch (Rmask) { switch (Rmask) {
case 0x000F:
return SDL_PIXELFORMAT_ABGR4444;
case 0x001F: case 0x001F:
if (Gmask == 0x07E0) {
return SDL_PIXELFORMAT_BGR565;
}
return SDL_PIXELFORMAT_ABGR1555; return SDL_PIXELFORMAT_ABGR1555;
case 0x0F00: case 0x0F00:
return SDL_PIXELFORMAT_ARGB4444; return SDL_PIXELFORMAT_ARGB4444;

View file

@ -30,7 +30,7 @@
#include "SDL_rect_c.h" #include "SDL_rect_c.h"
#include "SDL_yuv_sw_c.h" #include "SDL_yuv_sw_c.h"
#ifdef __QNXNTO__ #if defined(SDL_VIDEO_DRIVER_QNXGF) || defined(SDL_VIDEO_DRIVER_PHOTON)
/* Empty function stub to get OpenGL ES 1.0 support without */ /* Empty function stub to get OpenGL ES 1.0 support without */
/* OpenGL ES extension GL_OES_draw_texture_supported */ /* OpenGL ES extension GL_OES_draw_texture_supported */
@ -110,9 +110,12 @@ SDL_RenderDriver GL_ES_RenderDriver = {
(SDL_BLENDMODE_NONE | SDL_BLENDMODE_MASK | (SDL_BLENDMODE_NONE | SDL_BLENDMODE_MASK |
SDL_BLENDMODE_BLEND | SDL_BLENDMODE_ADD | SDL_BLENDMODE_MOD), SDL_BLENDMODE_BLEND | SDL_BLENDMODE_ADD | SDL_BLENDMODE_MOD),
(SDL_TEXTURESCALEMODE_NONE | SDL_TEXTURESCALEMODE_FAST | (SDL_TEXTURESCALEMODE_NONE | SDL_TEXTURESCALEMODE_FAST |
SDL_TEXTURESCALEMODE_SLOW), 2, SDL_TEXTURESCALEMODE_SLOW), 5,
{ {
/* OpenGL ES 1.x supported formats list */ /* OpenGL ES 1.x supported formats list */
SDL_PIXELFORMAT_ABGR4444,
SDL_PIXELFORMAT_ABGR1555,
SDL_PIXELFORMAT_BGR565,
SDL_PIXELFORMAT_BGR24, SDL_PIXELFORMAT_BGR24,
SDL_PIXELFORMAT_ABGR8888}, SDL_PIXELFORMAT_ABGR8888},
0, 0,
@ -384,24 +387,21 @@ GLES_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
format = GL_RGBA; format = GL_RGBA;
type = GL_UNSIGNED_BYTE; type = GL_UNSIGNED_BYTE;
break; break;
/* case SDL_PIXELFORMAT_BGR565:
These formats would be supported if SDL had the necessary pixel formats internalFormat = GL_RGB;
case SDL_PIXELFORMAT_BGR565: format = GL_RGB;
internalFormat = GL_RGB; type = GL_UNSIGNED_SHORT_5_6_5;
format = GL_RGB; break;
type = GL_UNSIGNED_SHORT_5_6_5; case SDL_PIXELFORMAT_ABGR1555:
break; internalFormat = GL_RGBA;
case SDL_PIXELFORMAT_ABGR5551: format = GL_RGBA;
internalFormat = GL_RGBA; type = GL_UNSIGNED_SHORT_5_5_5_1;
format = GL_RGBA; break;
type = GL_UNSIGNED_SHORT_5_5_5_1; case SDL_PIXELFORMAT_ABGR4444:
break; internalFormat = GL_RGBA;
case SDL_PIXELFORMAT_ABGR4444: format = GL_RGBA;
internalFormat = GL_RGBA; type = GL_UNSIGNED_SHORT_4_4_4_4;
format = GL_RGBA; break;
type = GL_UNSIGNED_SHORT_4_4_4_4;
break;
*/
default: default:
SDL_SetError("Unsupported texture format"); SDL_SetError("Unsupported texture format");
return -1; return -1;