Commit f2f1af27 authored by Mike Gorchak's avatar Mike Gorchak

Support for BGR565 pixel format has been added, mainly for OpenGL ES renderer....

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
parent e526b618
......@@ -158,6 +158,9 @@ enum
SDL_PIXELFORMAT_ARGB4444 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
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_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
SDL_PACKEDLAYOUT_1555, 16, 2),
......@@ -167,6 +170,9 @@ enum
SDL_PIXELFORMAT_RGB565 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
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_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0,
24, 3),
......
......@@ -72,6 +72,12 @@ SDL_PixelFormatEnumToMasks(Uint32 format, int *bpp, Uint32 * Rmask,
masks[2] = 0x000003E0;
masks[3] = 0x0000001F;
break;
case SDL_PACKEDLAYOUT_5551:
masks[0] = 0x0000F800;
masks[1] = 0x000007C0;
masks[2] = 0x0000003E;
masks[3] = 0x00000001;
break;
case SDL_PACKEDLAYOUT_565:
masks[0] = 0x00000000;
masks[1] = 0x0000F800;
......@@ -90,6 +96,12 @@ SDL_PixelFormatEnumToMasks(Uint32 format, int *bpp, Uint32 * Rmask,
masks[2] = 0x000FFC00;
masks[3] = 0x000003FF;
break;
case SDL_PACKEDLAYOUT_1010102:
masks[0] = 0xFFC00000;
masks[1] = 0x003FF000;
masks[2] = 0x00000FFC;
masks[3] = 0x00000003;
break;
default:
/* Unknown layout */
return SDL_FALSE;
......@@ -176,7 +188,12 @@ SDL_MasksToPixelFormatEnum(int bpp, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask,
break;
case 16:
switch (Rmask) {
case 0x000F:
return SDL_PIXELFORMAT_ABGR4444;
case 0x001F:
if (Gmask == 0x07E0) {
return SDL_PIXELFORMAT_BGR565;
}
return SDL_PIXELFORMAT_ABGR1555;
case 0x0F00:
return SDL_PIXELFORMAT_ARGB4444;
......
......@@ -30,7 +30,7 @@
#include "SDL_rect_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 */
/* 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_BLEND | SDL_BLENDMODE_ADD | SDL_BLENDMODE_MOD),
(SDL_TEXTURESCALEMODE_NONE | SDL_TEXTURESCALEMODE_FAST |
SDL_TEXTURESCALEMODE_SLOW), 2,
SDL_TEXTURESCALEMODE_SLOW), 5,
{
/* OpenGL ES 1.x supported formats list */
SDL_PIXELFORMAT_ABGR4444,
SDL_PIXELFORMAT_ABGR1555,
SDL_PIXELFORMAT_BGR565,
SDL_PIXELFORMAT_BGR24,
SDL_PIXELFORMAT_ABGR8888},
0,
......@@ -384,24 +387,21 @@ GLES_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
format = GL_RGBA;
type = GL_UNSIGNED_BYTE;
break;
/*
These formats would be supported if SDL had the necessary pixel formats
case SDL_PIXELFORMAT_BGR565:
internalFormat = GL_RGB;
format = GL_RGB;
type = GL_UNSIGNED_SHORT_5_6_5;
break;
case SDL_PIXELFORMAT_ABGR5551:
internalFormat = GL_RGBA;
format = GL_RGBA;
type = GL_UNSIGNED_SHORT_5_5_5_1;
break;
case SDL_PIXELFORMAT_ABGR4444:
internalFormat = GL_RGBA;
format = GL_RGBA;
type = GL_UNSIGNED_SHORT_4_4_4_4;
break;
*/
case SDL_PIXELFORMAT_BGR565:
internalFormat = GL_RGB;
format = GL_RGB;
type = GL_UNSIGNED_SHORT_5_6_5;
break;
case SDL_PIXELFORMAT_ABGR1555:
internalFormat = GL_RGBA;
format = GL_RGBA;
type = GL_UNSIGNED_SHORT_5_5_5_1;
break;
case SDL_PIXELFORMAT_ABGR4444:
internalFormat = GL_RGBA;
format = GL_RGBA;
type = GL_UNSIGNED_SHORT_4_4_4_4;
break;
default:
SDL_SetError("Unsupported texture format");
return -1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment