diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c index 894380fa2a..e77148bb46 100644 --- a/src/render/opengl/SDL_render_gl.c +++ b/src/render/opengl/SDL_render_gl.c @@ -412,18 +412,46 @@ convert_format(GL_RenderData *renderdata, Uint32 pixel_format, GLint *internalFormat, GLenum *format, GLenum *type) { switch (pixel_format) { + case SDL_PIXELFORMAT_RGBA32: + case SDL_PIXELFORMAT_RGBX32: + *internalFormat = GL_RGBA; + *format = GL_RGBA; + *type = GL_UNSIGNED_BYTE; + break; + case SDL_PIXELFORMAT_RGB24: + *internalFormat = GL_RGB; + *format = GL_RGB; + *type = GL_UNSIGNED_BYTE; + break; case SDL_PIXELFORMAT_ARGB8888: - case SDL_PIXELFORMAT_RGB888: + case SDL_PIXELFORMAT_XRGB8888: *internalFormat = GL_RGBA8; *format = GL_BGRA; *type = GL_UNSIGNED_INT_8_8_8_8_REV; break; +#if SDL_BYTEORDER == SDL_BIG_ENDIAN case SDL_PIXELFORMAT_ABGR8888: - case SDL_PIXELFORMAT_BGR888: + case SDL_PIXELFORMAT_XBGR8888: *internalFormat = GL_RGBA8; *format = GL_RGBA; *type = GL_UNSIGNED_INT_8_8_8_8_REV; break; +#endif + case SDL_PIXELFORMAT_RGB565: + *internalFormat = GL_RGB; + *format = GL_RGB; + *type = GL_UNSIGNED_SHORT_5_6_5; + break; + case SDL_PIXELFORMAT_RGBA5551: + *internalFormat = GL_RGBA; + *format = GL_RGBA; + *type = GL_UNSIGNED_SHORT_5_5_5_1; + break; + case SDL_PIXELFORMAT_RGBA4444: + *internalFormat = GL_RGBA; + *format = GL_RGBA; + *type = GL_UNSIGNED_SHORT_4_4_4_4; + break; case SDL_PIXELFORMAT_YV12: case SDL_PIXELFORMAT_IYUV: case SDL_PIXELFORMAT_NV12: @@ -564,6 +592,7 @@ static int GL_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture) renderdata->glTexParameteri(textype, GL_TEXTURE_STORAGE_HINT_APPLE, GL_STORAGE_CACHED_APPLE); } + /* TODO: Should this handle other 32-bit pixel formats? */ if (texture->access == SDL_TEXTUREACCESS_STREAMING && texture->format == SDL_PIXELFORMAT_ARGB8888 && (texture->w % 8) == 0) { renderdata->glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE); renderdata->glPixelStorei(GL_UNPACK_ALIGNMENT, 1); @@ -635,10 +664,10 @@ static int GL_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture) } #endif - if (texture->format == SDL_PIXELFORMAT_ABGR8888 || texture->format == SDL_PIXELFORMAT_ARGB8888) { - data->shader = SHADER_RGBA; - } else { + if (texture->format == SDL_PIXELFORMAT_XBGR8888 || texture->format == SDL_PIXELFORMAT_XRGB8888 || texture->format == SDL_PIXELFORMAT_RGBX32) { data->shader = SHADER_RGB; + } else { + data->shader = SHADER_RGBA; } #if SDL_HAVE_YUV @@ -1417,7 +1446,7 @@ static int GL_RenderReadPixels(SDL_Renderer *renderer, const SDL_Rect *rect, Uint32 pixel_format, void *pixels, int pitch) { GL_RenderData *data = (GL_RenderData *)renderer->driverdata; - Uint32 temp_format = renderer->target ? renderer->target->format : SDL_PIXELFORMAT_ARGB8888; + Uint32 temp_format = renderer->target ? renderer->target->format : SDL_PIXELFORMAT_RGBA32; void *temp_pixels; int temp_pitch; GLint internalFormat; @@ -1891,6 +1920,10 @@ static int GL_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, Uint32 #ifdef __MACOSX__ renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_UYVY; #endif +#if SDL_BYTEORDER == SDL_BIG_ENDIAN + renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_ABGR8888, + renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_XBGR8888, +#endif renderer->rect_index_order[0] = 0; renderer->rect_index_order[1] = 1; @@ -1949,11 +1982,15 @@ SDL_RenderDriver GL_RenderDriver = { GL_CreateRenderer, { "opengl", (SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_TARGETTEXTURE), - 4, - { SDL_PIXELFORMAT_ARGB8888, - SDL_PIXELFORMAT_ABGR8888, - SDL_PIXELFORMAT_RGB888, - SDL_PIXELFORMAT_BGR888 }, + 8, + { SDL_PIXELFORMAT_RGBA32, + SDL_PIXELFORMAT_RGBX32, + SDL_PIXELFORMAT_RGB24, + SDL_PIXELFORMAT_ARGB8888, + SDL_PIXELFORMAT_XRGB8888, + SDL_PIXELFORMAT_RGB565, + SDL_PIXELFORMAT_RGBA5551, + SDL_PIXELFORMAT_RGBA4444 }, 0, 0 } }; diff --git a/src/render/opengles/SDL_render_gles.c b/src/render/opengles/SDL_render_gles.c index 914758395b..d9cd4056f8 100644 --- a/src/render/opengles/SDL_render_gles.c +++ b/src/render/opengles/SDL_render_gles.c @@ -327,6 +327,26 @@ static int GLES_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture) format = GL_RGBA; type = GL_UNSIGNED_BYTE; break; + case SDL_PIXELFORMAT_RGB24: + internalFormat = GL_RGB; + format = GL_RGB; + type = GL_UNSIGNED_BYTE; + break; + case SDL_PIXELFORMAT_RGB565: + internalFormat = GL_RGB; + format = GL_RGB; + type = GL_UNSIGNED_SHORT_5_6_5; + break; + case SDL_PIXELFORMAT_RGBA5551: + internalFormat = GL_RGBA; + format = GL_RGBA; + type = GL_UNSIGNED_SHORT_5_5_5_1; + break; + case SDL_PIXELFORMAT_RGBA4444: + internalFormat = GL_RGBA; + format = GL_RGBA; + type = GL_UNSIGNED_SHORT_4_4_4_4; + break; default: return SDL_SetError("Texture format not supported"); } @@ -900,7 +920,8 @@ static int GLES_RenderReadPixels(SDL_Renderer *renderer, const SDL_Rect *rect, Uint32 pixel_format, void *pixels, int pitch) { GLES_RenderData *data = (GLES_RenderData *)renderer->driverdata; - Uint32 temp_format = renderer->target ? renderer->target->format : SDL_PIXELFORMAT_RGBA32; + /* GLES only supports RGBA32 or an implementation-defined format */ + Uint32 temp_format = SDL_PIXELFORMAT_RGBA32; void *temp_pixels; int temp_pitch; Uint8 *src, *dst, *tmp; @@ -1201,8 +1222,12 @@ SDL_RenderDriver GLES_RenderDriver = { GLES_CreateRenderer, { "opengles", (SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC), - 1, - { SDL_PIXELFORMAT_RGBA32 }, + 5, + { SDL_PIXELFORMAT_RGBA32, + SDL_PIXELFORMAT_RGB24, + SDL_PIXELFORMAT_RGB565, + SDL_PIXELFORMAT_RGBA5551, + SDL_PIXELFORMAT_RGBA4444 }, 0, 0 } }; diff --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c index 1db5a274ac..2d729db994 100644 --- a/src/render/opengles2/SDL_render_gles2.c +++ b/src/render/opengles2/SDL_render_gles2.c @@ -114,10 +114,10 @@ typedef enum { GLES2_IMAGESOURCE_INVALID, GLES2_IMAGESOURCE_SOLID, - GLES2_IMAGESOURCE_TEXTURE_ABGR, - GLES2_IMAGESOURCE_TEXTURE_ARGB, - GLES2_IMAGESOURCE_TEXTURE_RGB, - GLES2_IMAGESOURCE_TEXTURE_BGR, + GLES2_IMAGESOURCE_TEXTURE, + GLES2_IMAGESOURCE_TEXTURE_SWAPRB, + GLES2_IMAGESOURCE_TEXTURE_SWAPRB_OPAQUE, + GLES2_IMAGESOURCE_TEXTURE_OPAQUE, GLES2_IMAGESOURCE_TEXTURE_YUV, GLES2_IMAGESOURCE_TEXTURE_NV12, GLES2_IMAGESOURCE_TEXTURE_NV21, @@ -612,17 +612,17 @@ static int GLES2_SelectProgram(GLES2_RenderData *data, GLES2_ImageSource source, case GLES2_IMAGESOURCE_SOLID: ftype = GLES2_SHADER_FRAGMENT_SOLID; break; - case GLES2_IMAGESOURCE_TEXTURE_ABGR: - ftype = GLES2_SHADER_FRAGMENT_TEXTURE_ABGR; + case GLES2_IMAGESOURCE_TEXTURE: + ftype = GLES2_SHADER_FRAGMENT_TEXTURE; break; - case GLES2_IMAGESOURCE_TEXTURE_ARGB: - ftype = GLES2_SHADER_FRAGMENT_TEXTURE_ARGB; + case GLES2_IMAGESOURCE_TEXTURE_SWAPRB: + ftype = GLES2_SHADER_FRAGMENT_TEXTURE_SWAPRB; break; - case GLES2_IMAGESOURCE_TEXTURE_RGB: - ftype = GLES2_SHADER_FRAGMENT_TEXTURE_RGB; + case GLES2_IMAGESOURCE_TEXTURE_SWAPRB_OPAQUE: + ftype = GLES2_SHADER_FRAGMENT_TEXTURE_SWAPRB_OPAQUE; break; - case GLES2_IMAGESOURCE_TEXTURE_BGR: - ftype = GLES2_SHADER_FRAGMENT_TEXTURE_BGR; + case GLES2_IMAGESOURCE_TEXTURE_OPAQUE: + ftype = GLES2_SHADER_FRAGMENT_TEXTURE_OPAQUE; break; #if SDL_HAVE_YUV case GLES2_IMAGESOURCE_TEXTURE_YUV: @@ -739,7 +739,7 @@ static int GLES2_QueueSetViewport(SDL_Renderer *renderer, SDL_RenderCommand *cmd static int GLES2_QueueDrawPoints(SDL_Renderer *renderer, SDL_RenderCommand *cmd, const SDL_FPoint *points, int count) { - const SDL_bool colorswap = (renderer->target && (renderer->target->format == SDL_PIXELFORMAT_BGRA32 || renderer->target->format == SDL_PIXELFORMAT_BGRX32)); + const SDL_bool colorswap = (renderer->target && (renderer->target->format == SDL_PIXELFORMAT_BGRA32 || renderer->target->format == SDL_PIXELFORMAT_BGRX32 || renderer->target->format == SDL_PIXELFORMAT_BGR24)); SDL_VertexSolid *verts = (SDL_VertexSolid *)SDL_AllocateRenderVertices(renderer, count * sizeof(*verts), 0, &cmd->data.draw.first); int i; SDL_Color color; @@ -771,7 +771,7 @@ static int GLES2_QueueDrawPoints(SDL_Renderer *renderer, SDL_RenderCommand *cmd, static int GLES2_QueueDrawLines(SDL_Renderer *renderer, SDL_RenderCommand *cmd, const SDL_FPoint *points, int count) { - const SDL_bool colorswap = (renderer->target && (renderer->target->format == SDL_PIXELFORMAT_BGRA32 || renderer->target->format == SDL_PIXELFORMAT_BGRX32)); + const SDL_bool colorswap = (renderer->target && (renderer->target->format == SDL_PIXELFORMAT_BGRA32 || renderer->target->format == SDL_PIXELFORMAT_BGRX32 || renderer->target->format == SDL_PIXELFORMAT_BGR24)); int i; GLfloat prevx, prevy; SDL_VertexSolid *verts = (SDL_VertexSolid *)SDL_AllocateRenderVertices(renderer, count * sizeof(*verts), 0, &cmd->data.draw.first); @@ -831,7 +831,7 @@ static int GLES2_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, S float scale_x, float scale_y) { int i; - const SDL_bool colorswap = (renderer->target && (renderer->target->format == SDL_PIXELFORMAT_BGRA32 || renderer->target->format == SDL_PIXELFORMAT_BGRX32)); + const SDL_bool colorswap = (renderer->target && (renderer->target->format == SDL_PIXELFORMAT_BGRA32 || renderer->target->format == SDL_PIXELFORMAT_BGRX32 || renderer->target->format == SDL_PIXELFORMAT_BGR24)); int count = indices ? num_indices : num_vertices; cmd->data.draw.count = count; @@ -1020,7 +1020,7 @@ static int SetDrawState(GLES2_RenderData *data, const SDL_RenderCommand *cmd, co static int SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, void *vertices) { GLES2_RenderData *data = (GLES2_RenderData *)renderer->driverdata; - GLES2_ImageSource sourceType = GLES2_IMAGESOURCE_TEXTURE_ABGR; + GLES2_ImageSource sourceType = GLES2_IMAGESOURCE_TEXTURE; SDL_Texture *texture = cmd->data.draw.texture; int ret; @@ -1030,50 +1030,77 @@ static int SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, vo if (renderer->target->format != texture->format) { switch (texture->format) { case SDL_PIXELFORMAT_BGRA32: + case SDL_PIXELFORMAT_BGR24: switch (renderer->target->format) { + case SDL_PIXELFORMAT_BGRA32: + case SDL_PIXELFORMAT_BGRX32: + case SDL_PIXELFORMAT_BGR24: + sourceType = GLES2_IMAGESOURCE_TEXTURE; + break; case SDL_PIXELFORMAT_RGBA32: case SDL_PIXELFORMAT_RGBX32: - sourceType = GLES2_IMAGESOURCE_TEXTURE_ARGB; - break; - case SDL_PIXELFORMAT_BGRX32: - sourceType = GLES2_IMAGESOURCE_TEXTURE_ABGR; + case SDL_PIXELFORMAT_RGB24: + case SDL_PIXELFORMAT_RGB565: + case SDL_PIXELFORMAT_RGBA5551: + case SDL_PIXELFORMAT_RGBA4444: + sourceType = GLES2_IMAGESOURCE_TEXTURE_SWAPRB; break; } break; case SDL_PIXELFORMAT_RGBA32: + case SDL_PIXELFORMAT_RGB24: + case SDL_PIXELFORMAT_RGB565: + case SDL_PIXELFORMAT_RGBA5551: + case SDL_PIXELFORMAT_RGBA4444: switch (renderer->target->format) { case SDL_PIXELFORMAT_BGRA32: case SDL_PIXELFORMAT_BGRX32: - sourceType = GLES2_IMAGESOURCE_TEXTURE_ARGB; + case SDL_PIXELFORMAT_BGR24: + sourceType = GLES2_IMAGESOURCE_TEXTURE_SWAPRB; break; + case SDL_PIXELFORMAT_RGBA32: case SDL_PIXELFORMAT_RGBX32: - sourceType = GLES2_IMAGESOURCE_TEXTURE_ABGR; + case SDL_PIXELFORMAT_RGB24: + case SDL_PIXELFORMAT_RGB565: + case SDL_PIXELFORMAT_RGBA5551: + case SDL_PIXELFORMAT_RGBA4444: + sourceType = GLES2_IMAGESOURCE_TEXTURE; break; } break; case SDL_PIXELFORMAT_BGRX32: switch (renderer->target->format) { case SDL_PIXELFORMAT_RGBA32: - sourceType = GLES2_IMAGESOURCE_TEXTURE_ARGB; + case SDL_PIXELFORMAT_RGB24: + case SDL_PIXELFORMAT_RGB565: + case SDL_PIXELFORMAT_RGBA5551: + case SDL_PIXELFORMAT_RGBA4444: + sourceType = GLES2_IMAGESOURCE_TEXTURE_SWAPRB; break; case SDL_PIXELFORMAT_BGRA32: - sourceType = GLES2_IMAGESOURCE_TEXTURE_BGR; + case SDL_PIXELFORMAT_BGR24: + sourceType = GLES2_IMAGESOURCE_TEXTURE_OPAQUE; break; case SDL_PIXELFORMAT_RGBX32: - sourceType = GLES2_IMAGESOURCE_TEXTURE_ARGB; + sourceType = GLES2_IMAGESOURCE_TEXTURE_SWAPRB; break; } break; case SDL_PIXELFORMAT_RGBX32: switch (renderer->target->format) { case SDL_PIXELFORMAT_RGBA32: - sourceType = GLES2_IMAGESOURCE_TEXTURE_BGR; + case SDL_PIXELFORMAT_RGB24: + case SDL_PIXELFORMAT_RGB565: + case SDL_PIXELFORMAT_RGBA5551: + case SDL_PIXELFORMAT_RGBA4444: + sourceType = GLES2_IMAGESOURCE_TEXTURE_OPAQUE; break; case SDL_PIXELFORMAT_BGRA32: - sourceType = GLES2_IMAGESOURCE_TEXTURE_RGB; + case SDL_PIXELFORMAT_BGR24: + sourceType = GLES2_IMAGESOURCE_TEXTURE_SWAPRB_OPAQUE; break; case SDL_PIXELFORMAT_BGRX32: - sourceType = GLES2_IMAGESOURCE_TEXTURE_ARGB; + sourceType = GLES2_IMAGESOURCE_TEXTURE_SWAPRB; break; } break; @@ -1096,21 +1123,25 @@ static int SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, vo return SDL_SetError("Unsupported texture format"); } } else { - sourceType = GLES2_IMAGESOURCE_TEXTURE_ABGR; /* Texture formats match, use the non color mapping shader (even if the formats are not ABGR) */ + sourceType = GLES2_IMAGESOURCE_TEXTURE; /* Texture formats match, use the non color mapping shader (even if the formats are not ABGR) */ } } else { switch (texture->format) { - case SDL_PIXELFORMAT_BGRA32: - sourceType = GLES2_IMAGESOURCE_TEXTURE_ARGB; - break; case SDL_PIXELFORMAT_RGBA32: - sourceType = GLES2_IMAGESOURCE_TEXTURE_ABGR; + case SDL_PIXELFORMAT_RGB24: + case SDL_PIXELFORMAT_RGB565: + case SDL_PIXELFORMAT_RGBA5551: + case SDL_PIXELFORMAT_RGBA4444: + sourceType = GLES2_IMAGESOURCE_TEXTURE; + break; + case SDL_PIXELFORMAT_BGRA32: + sourceType = GLES2_IMAGESOURCE_TEXTURE_SWAPRB; break; case SDL_PIXELFORMAT_BGRX32: - sourceType = GLES2_IMAGESOURCE_TEXTURE_RGB; + sourceType = GLES2_IMAGESOURCE_TEXTURE_SWAPRB_OPAQUE; break; case SDL_PIXELFORMAT_RGBX32: - sourceType = GLES2_IMAGESOURCE_TEXTURE_BGR; + sourceType = GLES2_IMAGESOURCE_TEXTURE_OPAQUE; break; #if SDL_HAVE_YUV case SDL_PIXELFORMAT_IYUV: @@ -1162,7 +1193,7 @@ static int SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, vo static int GLES2_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd, void *vertices, size_t vertsize) { GLES2_RenderData *data = (GLES2_RenderData *)renderer->driverdata; - const SDL_bool colorswap = (renderer->target && (renderer->target->format == SDL_PIXELFORMAT_BGRA32 || renderer->target->format == SDL_PIXELFORMAT_BGRX32)); + const SDL_bool colorswap = (renderer->target && (renderer->target->format == SDL_PIXELFORMAT_BGRA32 || renderer->target->format == SDL_PIXELFORMAT_BGRX32 || renderer->target->format == SDL_PIXELFORMAT_BGR24)); #if USE_VERTEX_BUFFER_OBJECTS const int vboidx = data->current_vertex_buffer; @@ -1430,6 +1461,23 @@ static int GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture) format = GL_RGBA; type = GL_UNSIGNED_BYTE; break; + case SDL_PIXELFORMAT_RGB24: + case SDL_PIXELFORMAT_BGR24: + format = GL_RGB; + type = GL_UNSIGNED_BYTE; + break; + case SDL_PIXELFORMAT_RGB565: + format = GL_RGB; + type = GL_UNSIGNED_SHORT_5_6_5; + break; + case SDL_PIXELFORMAT_RGBA5551: + format = GL_RGBA; + type = GL_UNSIGNED_SHORT_5_5_5_1; + break; + case SDL_PIXELFORMAT_RGBA4444: + format = GL_RGBA; + type = GL_UNSIGNED_SHORT_4_4_4_4; + break; #if SDL_HAVE_YUV case SDL_PIXELFORMAT_IYUV: case SDL_PIXELFORMAT_YV12: @@ -1894,7 +1942,8 @@ static int GLES2_RenderReadPixels(SDL_Renderer *renderer, const SDL_Rect *rect, Uint32 pixel_format, void *pixels, int pitch) { GLES2_RenderData *data = (GLES2_RenderData *)renderer->driverdata; - Uint32 temp_format = renderer->target ? renderer->target->format : SDL_PIXELFORMAT_RGBA32; + /* GLES only supports RGBA32 or an implementation-defined format */ + Uint32 temp_format = (renderer->target && SDL_PIXELLAYOUT(renderer->target->format) == SDL_PACKEDLAYOUT_8888) ? renderer->target->format : SDL_PIXELFORMAT_RGBA32; size_t buflen; void *temp_pixels; int temp_pitch; @@ -2220,11 +2269,16 @@ SDL_RenderDriver GLES2_RenderDriver = { GLES2_CreateRenderer, { "opengles2", (SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_TARGETTEXTURE), - 4, + 9, { SDL_PIXELFORMAT_RGBA32, SDL_PIXELFORMAT_BGRA32, SDL_PIXELFORMAT_BGRX32, - SDL_PIXELFORMAT_RGBX32 }, + SDL_PIXELFORMAT_RGBX32, + SDL_PIXELFORMAT_RGB24, + SDL_PIXELFORMAT_BGR24, + SDL_PIXELFORMAT_RGB565, + SDL_PIXELFORMAT_RGBA5551, + SDL_PIXELFORMAT_RGBA4444 }, 0, 0 } }; diff --git a/src/render/opengles2/SDL_shaders_gles2.c b/src/render/opengles2/SDL_shaders_gles2.c index a6056f8a77..39a4e4f8e4 100644 --- a/src/render/opengles2/SDL_shaders_gles2.c +++ b/src/render/opengles2/SDL_shaders_gles2.c @@ -91,7 +91,7 @@ static const char GLES2_Fragment_Solid[] = \ "}\n" \ ; -static const char GLES2_Fragment_TextureABGR[] = \ +static const char GLES2_Fragment_Texture[] = \ "uniform sampler2D u_texture;\n" \ "varying mediump vec4 v_color;\n" \ "varying SDL_TEXCOORD_PRECISION vec2 v_texCoord;\n" \ @@ -104,7 +104,7 @@ static const char GLES2_Fragment_TextureABGR[] = \ ; /* ARGB to ABGR conversion */ -static const char GLES2_Fragment_TextureARGB[] = \ +static const char GLES2_Fragment_TextureSwapRB[] = \ "uniform sampler2D u_texture;\n" \ "varying mediump vec4 v_color;\n" \ "varying SDL_TEXCOORD_PRECISION vec2 v_texCoord;\n" \ @@ -120,7 +120,7 @@ static const char GLES2_Fragment_TextureARGB[] = \ ; /* RGB to ABGR conversion */ -static const char GLES2_Fragment_TextureRGB[] = \ +static const char GLES2_Fragment_TextureSwapRBOpaque[] = \ "uniform sampler2D u_texture;\n" \ "varying mediump vec4 v_color;\n" \ "varying SDL_TEXCOORD_PRECISION vec2 v_texCoord;\n" \ @@ -137,7 +137,7 @@ static const char GLES2_Fragment_TextureRGB[] = \ ; /* BGR to ABGR conversion */ -static const char GLES2_Fragment_TextureBGR[] = \ +static const char GLES2_Fragment_TextureOpaque[] = \ "uniform sampler2D u_texture;\n" \ "varying mediump vec4 v_color;\n" \ "varying SDL_TEXCOORD_PRECISION vec2 v_texCoord;\n" \ @@ -405,14 +405,14 @@ const char *GLES2_GetShader(GLES2_ShaderType type) return GLES2_Vertex_Default; case GLES2_SHADER_FRAGMENT_SOLID: return GLES2_Fragment_Solid; - case GLES2_SHADER_FRAGMENT_TEXTURE_ABGR: - return GLES2_Fragment_TextureABGR; - case GLES2_SHADER_FRAGMENT_TEXTURE_ARGB: - return GLES2_Fragment_TextureARGB; - case GLES2_SHADER_FRAGMENT_TEXTURE_RGB: - return GLES2_Fragment_TextureRGB; - case GLES2_SHADER_FRAGMENT_TEXTURE_BGR: - return GLES2_Fragment_TextureBGR; + case GLES2_SHADER_FRAGMENT_TEXTURE: + return GLES2_Fragment_Texture; + case GLES2_SHADER_FRAGMENT_TEXTURE_SWAPRB: + return GLES2_Fragment_TextureSwapRB; + case GLES2_SHADER_FRAGMENT_TEXTURE_SWAPRB_OPAQUE: + return GLES2_Fragment_TextureSwapRBOpaque; + case GLES2_SHADER_FRAGMENT_TEXTURE_OPAQUE: + return GLES2_Fragment_TextureOpaque; #if SDL_HAVE_YUV case GLES2_SHADER_FRAGMENT_TEXTURE_YUV_JPEG: return GLES2_Fragment_TextureYUVJPEG; diff --git a/src/render/opengles2/SDL_shaders_gles2.h b/src/render/opengles2/SDL_shaders_gles2.h index ffa5e1ef5f..1874bfb5fd 100644 --- a/src/render/opengles2/SDL_shaders_gles2.h +++ b/src/render/opengles2/SDL_shaders_gles2.h @@ -39,10 +39,10 @@ typedef enum { GLES2_SHADER_VERTEX_DEFAULT = 0, GLES2_SHADER_FRAGMENT_SOLID, - GLES2_SHADER_FRAGMENT_TEXTURE_ABGR, - GLES2_SHADER_FRAGMENT_TEXTURE_ARGB, - GLES2_SHADER_FRAGMENT_TEXTURE_BGR, - GLES2_SHADER_FRAGMENT_TEXTURE_RGB, + GLES2_SHADER_FRAGMENT_TEXTURE, + GLES2_SHADER_FRAGMENT_TEXTURE_SWAPRB, + GLES2_SHADER_FRAGMENT_TEXTURE_OPAQUE, + GLES2_SHADER_FRAGMENT_TEXTURE_SWAPRB_OPAQUE, #if SDL_HAVE_YUV GLES2_SHADER_FRAGMENT_TEXTURE_YUV_JPEG, GLES2_SHADER_FRAGMENT_TEXTURE_YUV_BT601,