|
@@ -69,7 +69,6 @@ typedef struct
|
|
|
GLenum pixel_type;
|
|
GLenum pixel_type;
|
|
|
void *pixel_data;
|
|
void *pixel_data;
|
|
|
int pitch;
|
|
int pitch;
|
|
|
-#ifdef SDL_HAVE_YUV
|
|
|
|
|
// YUV texture support
|
|
// YUV texture support
|
|
|
bool yuv;
|
|
bool yuv;
|
|
|
bool nv12;
|
|
bool nv12;
|
|
@@ -77,7 +76,6 @@ typedef struct
|
|
|
GLuint texture_v_external;
|
|
GLuint texture_v_external;
|
|
|
GLuint texture_u;
|
|
GLuint texture_u;
|
|
|
GLuint texture_u_external;
|
|
GLuint texture_u_external;
|
|
|
-#endif
|
|
|
|
|
GLfloat texel_size[4];
|
|
GLfloat texel_size[4];
|
|
|
SDL_ScaleMode texture_scale_mode;
|
|
SDL_ScaleMode texture_scale_mode;
|
|
|
SDL_TextureAddressMode texture_address_mode_u;
|
|
SDL_TextureAddressMode texture_address_mode_u;
|
|
@@ -684,7 +682,6 @@ static bool GLES2_SelectProgram(GLES2_RenderData *data, SDL_Texture *texture, GL
|
|
|
ftype = GLES2_SHADER_FRAGMENT_TEXTURE_BGR;
|
|
ftype = GLES2_SHADER_FRAGMENT_TEXTURE_BGR;
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
-#ifdef SDL_HAVE_YUV
|
|
|
|
|
case GLES2_IMAGESOURCE_TEXTURE_YUV:
|
|
case GLES2_IMAGESOURCE_TEXTURE_YUV:
|
|
|
ftype = GLES2_SHADER_FRAGMENT_TEXTURE_YUV;
|
|
ftype = GLES2_SHADER_FRAGMENT_TEXTURE_YUV;
|
|
|
shader_params = SDL_GetYCbCRtoRGBConversionMatrix(colorspace, 0, 0, 8);
|
|
shader_params = SDL_GetYCbCRtoRGBConversionMatrix(colorspace, 0, 0, 8);
|
|
@@ -720,7 +717,6 @@ static bool GLES2_SelectProgram(GLES2_RenderData *data, SDL_Texture *texture, GL
|
|
|
}
|
|
}
|
|
|
shader_params_len = 16 * sizeof(float);
|
|
shader_params_len = 16 * sizeof(float);
|
|
|
break;
|
|
break;
|
|
|
-#endif // SDL_HAVE_YUV
|
|
|
|
|
case GLES2_IMAGESOURCE_TEXTURE_EXTERNAL_OES:
|
|
case GLES2_IMAGESOURCE_TEXTURE_EXTERNAL_OES:
|
|
|
ftype = GLES2_SHADER_FRAGMENT_TEXTURE_EXTERNAL_OES;
|
|
ftype = GLES2_SHADER_FRAGMENT_TEXTURE_EXTERNAL_OES;
|
|
|
break;
|
|
break;
|
|
@@ -770,7 +766,6 @@ static bool GLES2_SelectProgram(GLES2_RenderData *data, SDL_Texture *texture, GL
|
|
|
if (shader_params &&
|
|
if (shader_params &&
|
|
|
(!program->shader_params ||
|
|
(!program->shader_params ||
|
|
|
SDL_memcmp(shader_params, program->shader_params, shader_params_len) != 0)) {
|
|
SDL_memcmp(shader_params, program->shader_params, shader_params_len) != 0)) {
|
|
|
-#ifdef SDL_HAVE_YUV
|
|
|
|
|
if (ftype >= GLES2_SHADER_FRAGMENT_TEXTURE_YUV) {
|
|
if (ftype >= GLES2_SHADER_FRAGMENT_TEXTURE_YUV) {
|
|
|
// YUV shader params are Yoffset, 0, Rcoeff, 0, Gcoeff, 0, Bcoeff, 0
|
|
// YUV shader params are Yoffset, 0, Rcoeff, 0, Gcoeff, 0, Bcoeff, 0
|
|
|
if (program->uniform_locations[GLES2_UNIFORM_OFFSET] != -1) {
|
|
if (program->uniform_locations[GLES2_UNIFORM_OFFSET] != -1) {
|
|
@@ -792,7 +787,6 @@ static bool GLES2_SelectProgram(GLES2_RenderData *data, SDL_Texture *texture, GL
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
-#endif
|
|
|
|
|
{
|
|
{
|
|
|
data->glUniform4f(program->uniform_locations[GLES2_UNIFORM_TEXEL_SIZE], shader_params[0], shader_params[1], shader_params[2], shader_params[3]);
|
|
data->glUniform4f(program->uniform_locations[GLES2_UNIFORM_TEXEL_SIZE], shader_params[0], shader_params[1], shader_params[2], shader_params[3]);
|
|
|
}
|
|
}
|
|
@@ -1242,7 +1236,6 @@ static bool SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, v
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
-#ifdef SDL_HAVE_YUV
|
|
|
|
|
case SDL_PIXELFORMAT_IYUV:
|
|
case SDL_PIXELFORMAT_IYUV:
|
|
|
case SDL_PIXELFORMAT_YV12:
|
|
case SDL_PIXELFORMAT_YV12:
|
|
|
case SDL_PIXELFORMAT_I444:
|
|
case SDL_PIXELFORMAT_I444:
|
|
@@ -1254,7 +1247,6 @@ static bool SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, v
|
|
|
case SDL_PIXELFORMAT_NV21:
|
|
case SDL_PIXELFORMAT_NV21:
|
|
|
sourceType = GLES2_IMAGESOURCE_TEXTURE_NV21;
|
|
sourceType = GLES2_IMAGESOURCE_TEXTURE_NV21;
|
|
|
break;
|
|
break;
|
|
|
-#endif
|
|
|
|
|
case SDL_PIXELFORMAT_EXTERNAL_OES:
|
|
case SDL_PIXELFORMAT_EXTERNAL_OES:
|
|
|
sourceType = GLES2_IMAGESOURCE_TEXTURE_EXTERNAL_OES;
|
|
sourceType = GLES2_IMAGESOURCE_TEXTURE_EXTERNAL_OES;
|
|
|
break;
|
|
break;
|
|
@@ -1281,7 +1273,6 @@ static bool SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, v
|
|
|
case SDL_PIXELFORMAT_RGBX32:
|
|
case SDL_PIXELFORMAT_RGBX32:
|
|
|
sourceType = GLES2_IMAGESOURCE_TEXTURE_BGR;
|
|
sourceType = GLES2_IMAGESOURCE_TEXTURE_BGR;
|
|
|
break;
|
|
break;
|
|
|
-#ifdef SDL_HAVE_YUV
|
|
|
|
|
case SDL_PIXELFORMAT_IYUV:
|
|
case SDL_PIXELFORMAT_IYUV:
|
|
|
case SDL_PIXELFORMAT_YV12:
|
|
case SDL_PIXELFORMAT_YV12:
|
|
|
case SDL_PIXELFORMAT_I444:
|
|
case SDL_PIXELFORMAT_I444:
|
|
@@ -1293,7 +1284,6 @@ static bool SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, v
|
|
|
case SDL_PIXELFORMAT_NV21:
|
|
case SDL_PIXELFORMAT_NV21:
|
|
|
sourceType = GLES2_IMAGESOURCE_TEXTURE_NV21;
|
|
sourceType = GLES2_IMAGESOURCE_TEXTURE_NV21;
|
|
|
break;
|
|
break;
|
|
|
-#endif
|
|
|
|
|
case SDL_PIXELFORMAT_EXTERNAL_OES:
|
|
case SDL_PIXELFORMAT_EXTERNAL_OES:
|
|
|
sourceType = GLES2_IMAGESOURCE_TEXTURE_EXTERNAL_OES;
|
|
sourceType = GLES2_IMAGESOURCE_TEXTURE_EXTERNAL_OES;
|
|
|
break;
|
|
break;
|
|
@@ -1305,7 +1295,6 @@ static bool SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, v
|
|
|
ret = SetDrawState(data, cmd, sourceType, vertices);
|
|
ret = SetDrawState(data, cmd, sourceType, vertices);
|
|
|
|
|
|
|
|
if (texture != data->drawstate.texture) {
|
|
if (texture != data->drawstate.texture) {
|
|
|
-#ifdef SDL_HAVE_YUV
|
|
|
|
|
if (tdata->yuv) {
|
|
if (tdata->yuv) {
|
|
|
data->glActiveTexture(GL_TEXTURE2);
|
|
data->glActiveTexture(GL_TEXTURE2);
|
|
|
data->glBindTexture(tdata->texture_type, tdata->texture_v);
|
|
data->glBindTexture(tdata->texture_type, tdata->texture_v);
|
|
@@ -1320,7 +1309,6 @@ static bool SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, v
|
|
|
|
|
|
|
|
data->glActiveTexture(GL_TEXTURE0);
|
|
data->glActiveTexture(GL_TEXTURE0);
|
|
|
}
|
|
}
|
|
|
-#endif
|
|
|
|
|
if (texture->palette) {
|
|
if (texture->palette) {
|
|
|
GLES2_PaletteData *palette = (GLES2_PaletteData *)texture->palette->internal;
|
|
GLES2_PaletteData *palette = (GLES2_PaletteData *)texture->palette->internal;
|
|
|
data->glActiveTexture(GL_TEXTURE1);
|
|
data->glActiveTexture(GL_TEXTURE1);
|
|
@@ -1334,7 +1322,6 @@ static bool SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, v
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (cmd->data.draw.texture_scale_mode != tdata->texture_scale_mode) {
|
|
if (cmd->data.draw.texture_scale_mode != tdata->texture_scale_mode) {
|
|
|
-#ifdef SDL_HAVE_YUV
|
|
|
|
|
if (tdata->yuv) {
|
|
if (tdata->yuv) {
|
|
|
data->glActiveTexture(GL_TEXTURE2);
|
|
data->glActiveTexture(GL_TEXTURE2);
|
|
|
if (!SetTextureScaleMode(data, tdata->texture_type, texture->format, cmd->data.draw.texture_scale_mode)) {
|
|
if (!SetTextureScaleMode(data, tdata->texture_type, texture->format, cmd->data.draw.texture_scale_mode)) {
|
|
@@ -1355,7 +1342,6 @@ static bool SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, v
|
|
|
|
|
|
|
|
data->glActiveTexture(GL_TEXTURE0);
|
|
data->glActiveTexture(GL_TEXTURE0);
|
|
|
}
|
|
}
|
|
|
-#endif
|
|
|
|
|
if (texture->palette) {
|
|
if (texture->palette) {
|
|
|
data->glActiveTexture(GL_TEXTURE1);
|
|
data->glActiveTexture(GL_TEXTURE1);
|
|
|
if (!SetTextureScaleMode(data, tdata->texture_type, SDL_PIXELFORMAT_UNKNOWN, SDL_SCALEMODE_NEAREST)) {
|
|
if (!SetTextureScaleMode(data, tdata->texture_type, SDL_PIXELFORMAT_UNKNOWN, SDL_SCALEMODE_NEAREST)) {
|
|
@@ -1373,7 +1359,6 @@ static bool SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, v
|
|
|
|
|
|
|
|
if (cmd->data.draw.texture_address_mode_u != tdata->texture_address_mode_u ||
|
|
if (cmd->data.draw.texture_address_mode_u != tdata->texture_address_mode_u ||
|
|
|
cmd->data.draw.texture_address_mode_v != tdata->texture_address_mode_v) {
|
|
cmd->data.draw.texture_address_mode_v != tdata->texture_address_mode_v) {
|
|
|
-#ifdef SDL_HAVE_YUV
|
|
|
|
|
if (tdata->yuv) {
|
|
if (tdata->yuv) {
|
|
|
data->glActiveTexture(GL_TEXTURE2);
|
|
data->glActiveTexture(GL_TEXTURE2);
|
|
|
SetTextureAddressMode(data, tdata->texture_type, cmd->data.draw.texture_address_mode_u, cmd->data.draw.texture_address_mode_v);
|
|
SetTextureAddressMode(data, tdata->texture_type, cmd->data.draw.texture_address_mode_u, cmd->data.draw.texture_address_mode_v);
|
|
@@ -1388,7 +1373,6 @@ static bool SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, v
|
|
|
|
|
|
|
|
data->glActiveTexture(GL_TEXTURE0);
|
|
data->glActiveTexture(GL_TEXTURE0);
|
|
|
}
|
|
}
|
|
|
-#endif
|
|
|
|
|
if (texture->palette) {
|
|
if (texture->palette) {
|
|
|
data->glActiveTexture(GL_TEXTURE1);
|
|
data->glActiveTexture(GL_TEXTURE1);
|
|
|
SetTextureAddressMode(data, tdata->texture_type, SDL_TEXTURE_ADDRESS_CLAMP, SDL_TEXTURE_ADDRESS_CLAMP);
|
|
SetTextureAddressMode(data, tdata->texture_type, SDL_TEXTURE_ADDRESS_CLAMP, SDL_TEXTURE_ADDRESS_CLAMP);
|
|
@@ -1744,13 +1728,11 @@ static bool GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
|
|
|
type = GL_UNSIGNED_BYTE;
|
|
type = GL_UNSIGNED_BYTE;
|
|
|
break;
|
|
break;
|
|
|
case SDL_PIXELFORMAT_INDEX8:
|
|
case SDL_PIXELFORMAT_INDEX8:
|
|
|
-#ifdef SDL_HAVE_YUV
|
|
|
|
|
case SDL_PIXELFORMAT_IYUV:
|
|
case SDL_PIXELFORMAT_IYUV:
|
|
|
case SDL_PIXELFORMAT_YV12:
|
|
case SDL_PIXELFORMAT_YV12:
|
|
|
case SDL_PIXELFORMAT_I444:
|
|
case SDL_PIXELFORMAT_I444:
|
|
|
case SDL_PIXELFORMAT_NV12:
|
|
case SDL_PIXELFORMAT_NV12:
|
|
|
case SDL_PIXELFORMAT_NV21:
|
|
case SDL_PIXELFORMAT_NV21:
|
|
|
-#endif
|
|
|
|
|
format = GL_LUMINANCE;
|
|
format = GL_LUMINANCE;
|
|
|
type = GL_UNSIGNED_BYTE;
|
|
type = GL_UNSIGNED_BYTE;
|
|
|
break;
|
|
break;
|
|
@@ -1785,10 +1767,8 @@ static bool GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
|
|
|
#endif
|
|
#endif
|
|
|
data->pixel_format = format;
|
|
data->pixel_format = format;
|
|
|
data->pixel_type = type;
|
|
data->pixel_type = type;
|
|
|
-#ifdef SDL_HAVE_YUV
|
|
|
|
|
data->yuv = ((texture->format == SDL_PIXELFORMAT_IYUV) || (texture->format == SDL_PIXELFORMAT_YV12) || (texture->format == SDL_PIXELFORMAT_I444));
|
|
data->yuv = ((texture->format == SDL_PIXELFORMAT_IYUV) || (texture->format == SDL_PIXELFORMAT_YV12) || (texture->format == SDL_PIXELFORMAT_I444));
|
|
|
data->nv12 = ((texture->format == SDL_PIXELFORMAT_NV12) || (texture->format == SDL_PIXELFORMAT_NV21));
|
|
data->nv12 = ((texture->format == SDL_PIXELFORMAT_NV12) || (texture->format == SDL_PIXELFORMAT_NV21));
|
|
|
-#endif
|
|
|
|
|
data->texture_scale_mode = texture->scaleMode;
|
|
data->texture_scale_mode = texture->scaleMode;
|
|
|
data->texture_address_mode_u = SDL_TEXTURE_ADDRESS_CLAMP;
|
|
data->texture_address_mode_u = SDL_TEXTURE_ADDRESS_CLAMP;
|
|
|
data->texture_address_mode_v = SDL_TEXTURE_ADDRESS_CLAMP;
|
|
data->texture_address_mode_v = SDL_TEXTURE_ADDRESS_CLAMP;
|
|
@@ -1798,7 +1778,6 @@ static bool GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
|
|
|
size_t size;
|
|
size_t size;
|
|
|
data->pitch = texture->w * SDL_BYTESPERPIXEL(texture->format);
|
|
data->pitch = texture->w * SDL_BYTESPERPIXEL(texture->format);
|
|
|
size = (size_t)texture->h * data->pitch;
|
|
size = (size_t)texture->h * data->pitch;
|
|
|
-#ifdef SDL_HAVE_YUV
|
|
|
|
|
if (data->yuv) {
|
|
if (data->yuv) {
|
|
|
// Need to add size for the U and V planes
|
|
// Need to add size for the U and V planes
|
|
|
if (texture->format == SDL_PIXELFORMAT_I444) {
|
|
if (texture->format == SDL_PIXELFORMAT_I444) {
|
|
@@ -1810,7 +1789,6 @@ static bool GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
|
|
|
// Need to add size for the U/V plane
|
|
// Need to add size for the U/V plane
|
|
|
size += 2 * ((texture->h + 1) / 2) * ((data->pitch + 1) / 2);
|
|
size += 2 * ((texture->h + 1) / 2) * ((data->pitch + 1) / 2);
|
|
|
}
|
|
}
|
|
|
-#endif
|
|
|
|
|
data->pixel_data = SDL_calloc(1, size);
|
|
data->pixel_data = SDL_calloc(1, size);
|
|
|
if (!data->pixel_data) {
|
|
if (!data->pixel_data) {
|
|
|
SDL_free(data);
|
|
SDL_free(data);
|
|
@@ -1826,7 +1804,6 @@ static bool GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
|
|
|
data->texel_size[2] = texture->w;
|
|
data->texel_size[2] = texture->w;
|
|
|
data->texel_size[3] = texture->h;
|
|
data->texel_size[3] = texture->h;
|
|
|
|
|
|
|
|
-#ifdef SDL_HAVE_YUV
|
|
|
|
|
if (data->yuv) {
|
|
if (data->yuv) {
|
|
|
int yuv_texture_w, yuv_texture_h;
|
|
int yuv_texture_w, yuv_texture_h;
|
|
|
if (texture->format == SDL_PIXELFORMAT_I444) {
|
|
if (texture->format == SDL_PIXELFORMAT_I444) {
|
|
@@ -1918,7 +1895,6 @@ static bool GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
|
|
|
return SDL_SetError("Unsupported YUV colorspace");
|
|
return SDL_SetError("Unsupported YUV colorspace");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-#endif
|
|
|
|
|
|
|
|
|
|
data->texture = (GLuint)SDL_GetNumberProperty(create_props, SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_NUMBER, 0);
|
|
data->texture = (GLuint)SDL_GetNumberProperty(create_props, SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_NUMBER, 0);
|
|
|
if (data->texture) {
|
|
if (data->texture) {
|
|
@@ -2029,7 +2005,6 @@ static bool GLES2_UpdateTexture(SDL_Renderer *renderer, SDL_Texture *texture, co
|
|
|
tdata->pixel_type,
|
|
tdata->pixel_type,
|
|
|
pixels, pitch, SDL_BYTESPERPIXEL(texture->format));
|
|
pixels, pitch, SDL_BYTESPERPIXEL(texture->format));
|
|
|
|
|
|
|
|
-#ifdef SDL_HAVE_YUV
|
|
|
|
|
if (tdata->yuv) {
|
|
if (tdata->yuv) {
|
|
|
if (texture->format == SDL_PIXELFORMAT_I444) {
|
|
if (texture->format == SDL_PIXELFORMAT_I444) {
|
|
|
// Skip to the correct offset into the next texture
|
|
// Skip to the correct offset into the next texture
|
|
@@ -2097,12 +2072,10 @@ static bool GLES2_UpdateTexture(SDL_Renderer *renderer, SDL_Texture *texture, co
|
|
|
GL_UNSIGNED_BYTE,
|
|
GL_UNSIGNED_BYTE,
|
|
|
pixels, 2 * ((pitch + 1) / 2), 2);
|
|
pixels, 2 * ((pitch + 1) / 2), 2);
|
|
|
}
|
|
}
|
|
|
-#endif
|
|
|
|
|
|
|
|
|
|
return GL_CheckError("glTexSubImage2D()", renderer);
|
|
return GL_CheckError("glTexSubImage2D()", renderer);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-#ifdef SDL_HAVE_YUV
|
|
|
|
|
static bool GLES2_UpdateTextureYUV(SDL_Renderer *renderer, SDL_Texture *texture,
|
|
static bool GLES2_UpdateTextureYUV(SDL_Renderer *renderer, SDL_Texture *texture,
|
|
|
const SDL_Rect *rect,
|
|
const SDL_Rect *rect,
|
|
|
const Uint8 *Yplane, int Ypitch,
|
|
const Uint8 *Yplane, int Ypitch,
|
|
@@ -2211,7 +2184,6 @@ static bool GLES2_UpdateTextureNV(SDL_Renderer *renderer, SDL_Texture *texture,
|
|
|
|
|
|
|
|
return GL_CheckError("glTexSubImage2D()", renderer);
|
|
return GL_CheckError("glTexSubImage2D()", renderer);
|
|
|
}
|
|
}
|
|
|
-#endif
|
|
|
|
|
|
|
|
|
|
static bool GLES2_LockTexture(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *rect,
|
|
static bool GLES2_LockTexture(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *rect,
|
|
|
void **pixels, int *pitch)
|
|
void **pixels, int *pitch)
|
|
@@ -2271,14 +2243,12 @@ static void GLES2_DestroyTexture(SDL_Renderer *renderer, SDL_Texture *texture)
|
|
|
if (tdata->texture && !tdata->texture_external) {
|
|
if (tdata->texture && !tdata->texture_external) {
|
|
|
data->glDeleteTextures(1, &tdata->texture);
|
|
data->glDeleteTextures(1, &tdata->texture);
|
|
|
}
|
|
}
|
|
|
-#ifdef SDL_HAVE_YUV
|
|
|
|
|
if (tdata->texture_v && !tdata->texture_v_external) {
|
|
if (tdata->texture_v && !tdata->texture_v_external) {
|
|
|
data->glDeleteTextures(1, &tdata->texture_v);
|
|
data->glDeleteTextures(1, &tdata->texture_v);
|
|
|
}
|
|
}
|
|
|
if (tdata->texture_u && !tdata->texture_u_external) {
|
|
if (tdata->texture_u && !tdata->texture_u_external) {
|
|
|
data->glDeleteTextures(1, &tdata->texture_u);
|
|
data->glDeleteTextures(1, &tdata->texture_u);
|
|
|
}
|
|
}
|
|
|
-#endif
|
|
|
|
|
SDL_free(tdata->pixel_data);
|
|
SDL_free(tdata->pixel_data);
|
|
|
SDL_free(tdata);
|
|
SDL_free(tdata);
|
|
|
texture->internal = NULL;
|
|
texture->internal = NULL;
|
|
@@ -2403,10 +2373,8 @@ static bool GLES2_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL
|
|
|
renderer->DestroyPalette = GLES2_DestroyPalette;
|
|
renderer->DestroyPalette = GLES2_DestroyPalette;
|
|
|
renderer->CreateTexture = GLES2_CreateTexture;
|
|
renderer->CreateTexture = GLES2_CreateTexture;
|
|
|
renderer->UpdateTexture = GLES2_UpdateTexture;
|
|
renderer->UpdateTexture = GLES2_UpdateTexture;
|
|
|
-#ifdef SDL_HAVE_YUV
|
|
|
|
|
renderer->UpdateTextureYUV = GLES2_UpdateTextureYUV;
|
|
renderer->UpdateTextureYUV = GLES2_UpdateTextureYUV;
|
|
|
renderer->UpdateTextureNV = GLES2_UpdateTextureNV;
|
|
renderer->UpdateTextureNV = GLES2_UpdateTextureNV;
|
|
|
-#endif
|
|
|
|
|
renderer->LockTexture = GLES2_LockTexture;
|
|
renderer->LockTexture = GLES2_LockTexture;
|
|
|
renderer->UnlockTexture = GLES2_UnlockTexture;
|
|
renderer->UnlockTexture = GLES2_UnlockTexture;
|
|
|
renderer->SetRenderTarget = GLES2_SetRenderTarget;
|
|
renderer->SetRenderTarget = GLES2_SetRenderTarget;
|
|
@@ -2465,13 +2433,11 @@ static bool GLES2_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL
|
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_BGRX32);
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_BGRX32);
|
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_RGBX32);
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_RGBX32);
|
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_INDEX8);
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_INDEX8);
|
|
|
-#ifdef SDL_HAVE_YUV
|
|
|
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_YV12);
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_YV12);
|
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_IYUV);
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_IYUV);
|
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_I444);
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_I444);
|
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV12);
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV12);
|
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV21);
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV21);
|
|
|
-#endif
|
|
|
|
|
#ifdef GL_TEXTURE_EXTERNAL_OES
|
|
#ifdef GL_TEXTURE_EXTERNAL_OES
|
|
|
if (SDL_GL_ExtensionSupported("GL_OES_EGL_image_external")) {
|
|
if (SDL_GL_ExtensionSupported("GL_OES_EGL_image_external")) {
|
|
|
data->GL_OES_EGL_image_external_supported = true;
|
|
data->GL_OES_EGL_image_external_supported = true;
|