summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStanislav Vorobiov <s.vorobiov@samsung.com>2014-03-04 19:30:11 +0400
committerStanislav Vorobiov <s.vorobiov@samsung.com>2014-03-04 19:30:11 +0400
commit83c1d892f47218f95e8c9adb2d28956e19e90493 (patch)
tree73b178b97b42fa5c3f51396ddd55d59420909679
parentddd1fe469855684044079c510afb620539e7d6c3 (diff)
downloademulator-yagl-83c1d892f47218f95e8c9adb2d28956e19e90493.tar.gz
emulator-yagl-83c1d892f47218f95e8c9adb2d28956e19e90493.tar.bz2
emulator-yagl-83c1d892f47218f95e8c9adb2d28956e19e90493.zip
YaGL: Convert textures properly
1. GL_ALPHA to GL_RGBA conversion is wrong after all, previous conversion was correct 2. GLESv1_CM should never convert textures since it always uses legacy host OpenGL context Change-Id: I1b8062c85f377b32bc2f75a58ff969e83acd65d0
-rw-r--r--GLES_common/yagl_gles_calls.c11
-rw-r--r--GLES_common/yagl_gles_context.c74
-rw-r--r--GLES_common/yagl_gles_context.h2
-rw-r--r--GLES_common/yagl_gles_pixel_formats.c14
-rw-r--r--GLES_common/yagl_gles_texture.c58
-rw-r--r--GLES_common/yagl_gles_texture.h6
-rw-r--r--GLESv1_CM/yagl_gles1_context.c12
-rw-r--r--GLESv2/yagl_gles2_calls.c8
-rw-r--r--GLESv2/yagl_gles2_context.c12
9 files changed, 116 insertions, 81 deletions
diff --git a/GLES_common/yagl_gles_calls.c b/GLES_common/yagl_gles_calls.c
index 2c55c83..8a655b9 100644
--- a/GLES_common/yagl_gles_calls.c
+++ b/GLES_common/yagl_gles_calls.c
@@ -839,7 +839,8 @@ YAGL_API void glCopyTexImage2D(GLenum target,
yagl_gles_texture_set_internalformat(tex_target_state->texture,
internalformat,
- (is_float ? GL_FLOAT : 0));
+ (is_float ? GL_FLOAT : 0),
+ yagl_gles_context_convert_textures(ctx));
out:
YAGL_LOG_FUNC_EXIT(NULL);
@@ -2170,7 +2171,8 @@ YAGL_API void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLs
yagl_gles_texture_set_internalformat(tex_target_state->texture,
internalformat,
- type);
+ type,
+ yagl_gles_context_convert_textures(ctx));
out:
YAGL_LOG_FUNC_EXIT(NULL);
@@ -3000,7 +3002,10 @@ YAGL_API void glTexStorage2D(GLenum target, GLsizei levels, GLenum internalforma
goto out;
}
- yagl_gles_texture_set_immutable(tex_target_state->texture, base_internalformat, type);
+ yagl_gles_texture_set_immutable(tex_target_state->texture,
+ base_internalformat,
+ type,
+ yagl_gles_context_convert_textures(ctx));
out:
YAGL_LOG_FUNC_EXIT(NULL);
diff --git a/GLES_common/yagl_gles_context.c b/GLES_common/yagl_gles_context.c
index d2c8c35..b5c071e 100644
--- a/GLES_common/yagl_gles_context.c
+++ b/GLES_common/yagl_gles_context.c
@@ -373,6 +373,16 @@ void yagl_gles_context_unbind_vertex_array(struct yagl_gles_context *ctx,
}
}
+int yagl_gles_context_convert_textures(struct yagl_gles_context *ctx)
+{
+ /*
+ * Currently GLESv1_CM is implemented via legacy context always, so
+ * don't convert textures in this case.
+ */
+ return (ctx->base.client_api != yagl_client_api_gles1) &&
+ (yagl_get_host_gl_version() > yagl_gl_2);
+}
+
int yagl_gles_context_validate_texture_target(struct yagl_gles_context *ctx,
GLenum target,
yagl_gles_texture_target *texture_target)
@@ -437,27 +447,27 @@ struct yagl_pixel_format
break;
}
- if (yagl_get_host_gl_version() <= yagl_gl_2) {
+ if (yagl_gles_context_convert_textures(ctx)) {
switch (format) {
case GL_ALPHA:
switch (type) {
- YAGL_PIXEL_FORMAT_CASE(gles_gl2, GL_ALPHA, GL_ALPHA, GL_UNSIGNED_BYTE);
- YAGL_PIXEL_FORMAT_CASE(gles_gl2, GL_ALPHA, GL_ALPHA, GL_FLOAT);
- YAGL_PIXEL_FORMAT_CASE(gles_gl2, GL_ALPHA, GL_ALPHA, GL_HALF_FLOAT_OES);
+ YAGL_PIXEL_FORMAT_CASE(gles_gl3, GL_ALPHA, GL_ALPHA, GL_UNSIGNED_BYTE);
+ YAGL_PIXEL_FORMAT_CASE(gles_gl3, GL_ALPHA, GL_ALPHA, GL_FLOAT);
+ YAGL_PIXEL_FORMAT_CASE(gles_gl3, GL_ALPHA, GL_ALPHA, GL_HALF_FLOAT_OES);
}
break;
case GL_LUMINANCE:
switch (type) {
- YAGL_PIXEL_FORMAT_CASE(gles_gl2, GL_LUMINANCE, GL_LUMINANCE, GL_UNSIGNED_BYTE);
- YAGL_PIXEL_FORMAT_CASE(gles_gl2, GL_LUMINANCE, GL_LUMINANCE, GL_FLOAT);
- YAGL_PIXEL_FORMAT_CASE(gles_gl2, GL_LUMINANCE, GL_LUMINANCE, GL_HALF_FLOAT_OES);
+ YAGL_PIXEL_FORMAT_CASE(gles_gl3, GL_LUMINANCE, GL_LUMINANCE, GL_UNSIGNED_BYTE);
+ YAGL_PIXEL_FORMAT_CASE(gles_gl3, GL_LUMINANCE, GL_LUMINANCE, GL_FLOAT);
+ YAGL_PIXEL_FORMAT_CASE(gles_gl3, GL_LUMINANCE, GL_LUMINANCE, GL_HALF_FLOAT_OES);
}
break;
case GL_LUMINANCE_ALPHA:
switch (type) {
- YAGL_PIXEL_FORMAT_CASE(gles_gl2, GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE);
- YAGL_PIXEL_FORMAT_CASE(gles_gl2, GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_FLOAT);
- YAGL_PIXEL_FORMAT_CASE(gles_gl2, GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_OES);
+ YAGL_PIXEL_FORMAT_CASE(gles_gl3, GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE);
+ YAGL_PIXEL_FORMAT_CASE(gles_gl3, GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_FLOAT);
+ YAGL_PIXEL_FORMAT_CASE(gles_gl3, GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_OES);
}
break;
}
@@ -465,23 +475,23 @@ struct yagl_pixel_format
switch (format) {
case GL_ALPHA:
switch (type) {
- YAGL_PIXEL_FORMAT_CASE(gles_gl3, GL_ALPHA, GL_ALPHA, GL_UNSIGNED_BYTE);
- YAGL_PIXEL_FORMAT_CASE(gles_gl3, GL_ALPHA, GL_ALPHA, GL_FLOAT);
- YAGL_PIXEL_FORMAT_CASE(gles_gl3, GL_ALPHA, GL_ALPHA, GL_HALF_FLOAT_OES);
+ YAGL_PIXEL_FORMAT_CASE(gles_gl2, GL_ALPHA, GL_ALPHA, GL_UNSIGNED_BYTE);
+ YAGL_PIXEL_FORMAT_CASE(gles_gl2, GL_ALPHA, GL_ALPHA, GL_FLOAT);
+ YAGL_PIXEL_FORMAT_CASE(gles_gl2, GL_ALPHA, GL_ALPHA, GL_HALF_FLOAT_OES);
}
break;
case GL_LUMINANCE:
switch (type) {
- YAGL_PIXEL_FORMAT_CASE(gles_gl3, GL_LUMINANCE, GL_LUMINANCE, GL_UNSIGNED_BYTE);
- YAGL_PIXEL_FORMAT_CASE(gles_gl3, GL_LUMINANCE, GL_LUMINANCE, GL_FLOAT);
- YAGL_PIXEL_FORMAT_CASE(gles_gl3, GL_LUMINANCE, GL_LUMINANCE, GL_HALF_FLOAT_OES);
+ YAGL_PIXEL_FORMAT_CASE(gles_gl2, GL_LUMINANCE, GL_LUMINANCE, GL_UNSIGNED_BYTE);
+ YAGL_PIXEL_FORMAT_CASE(gles_gl2, GL_LUMINANCE, GL_LUMINANCE, GL_FLOAT);
+ YAGL_PIXEL_FORMAT_CASE(gles_gl2, GL_LUMINANCE, GL_LUMINANCE, GL_HALF_FLOAT_OES);
}
break;
case GL_LUMINANCE_ALPHA:
switch (type) {
- YAGL_PIXEL_FORMAT_CASE(gles_gl3, GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE);
- YAGL_PIXEL_FORMAT_CASE(gles_gl3, GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_FLOAT);
- YAGL_PIXEL_FORMAT_CASE(gles_gl3, GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_OES);
+ YAGL_PIXEL_FORMAT_CASE(gles_gl2, GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE);
+ YAGL_PIXEL_FORMAT_CASE(gles_gl2, GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_FLOAT);
+ YAGL_PIXEL_FORMAT_CASE(gles_gl2, GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_OES);
}
break;
}
@@ -598,17 +608,19 @@ int yagl_gles_context_validate_copyteximage_format(struct yagl_gles_context *ctx
goto out;
}
- if (yagl_get_host_gl_version() <= yagl_gl_2) {
+ if (yagl_gles_context_convert_textures(ctx)) {
switch (*internalformat) {
case GL_ALPHA:
case GL_LUMINANCE_ALPHA:
if (readbuffer_format_num_components == 4) {
+ *internalformat = GL_RGBA;
res = 1;
goto out;
}
break;
case GL_LUMINANCE:
res = 1;
+ *internalformat = GL_RGBA;
goto out;
}
} else {
@@ -616,14 +628,12 @@ int yagl_gles_context_validate_copyteximage_format(struct yagl_gles_context *ctx
case GL_ALPHA:
case GL_LUMINANCE_ALPHA:
if (readbuffer_format_num_components == 4) {
- *internalformat = GL_RGBA;
res = 1;
goto out;
}
break;
case GL_LUMINANCE:
res = 1;
- *internalformat = GL_RGBA;
goto out;
}
}
@@ -684,21 +694,24 @@ int yagl_gles_context_validate_texstorage_format(struct yagl_gles_context *ctx,
goto out;
}
- if (yagl_get_host_gl_version() <= yagl_gl_2) {
+ if (yagl_gles_context_convert_textures(ctx)) {
switch (*internalformat) {
case GL_ALPHA:
+ *internalformat = GL_RGBA;
*base_internalformat = GL_ALPHA;
- *any_format = GL_ALPHA;
+ *any_format = GL_BGRA;
*any_type = GL_UNSIGNED_BYTE;
break;
case GL_LUMINANCE:
+ *internalformat = GL_RGBA;
*base_internalformat = GL_LUMINANCE;
- *any_format = GL_LUMINANCE;
+ *any_format = GL_BGRA;
*any_type = GL_UNSIGNED_BYTE;
break;
case GL_LUMINANCE_ALPHA:
+ *internalformat = GL_RGBA;
*base_internalformat = GL_LUMINANCE_ALPHA;
- *any_format = GL_LUMINANCE_ALPHA;
+ *any_format = GL_BGRA;
*any_type = GL_UNSIGNED_BYTE;
break;
default:
@@ -711,21 +724,18 @@ int yagl_gles_context_validate_texstorage_format(struct yagl_gles_context *ctx,
} else {
switch (*internalformat) {
case GL_ALPHA:
- *internalformat = GL_RGBA;
*base_internalformat = GL_ALPHA;
- *any_format = GL_BGRA;
+ *any_format = GL_ALPHA;
*any_type = GL_UNSIGNED_BYTE;
break;
case GL_LUMINANCE:
- *internalformat = GL_RGBA;
*base_internalformat = GL_LUMINANCE;
- *any_format = GL_BGRA;
+ *any_format = GL_LUMINANCE;
*any_type = GL_UNSIGNED_BYTE;
break;
case GL_LUMINANCE_ALPHA:
- *internalformat = GL_RGBA;
*base_internalformat = GL_LUMINANCE_ALPHA;
- *any_format = GL_BGRA;
+ *any_format = GL_LUMINANCE_ALPHA;
*any_type = GL_UNSIGNED_BYTE;
break;
default:
diff --git a/GLES_common/yagl_gles_context.h b/GLES_common/yagl_gles_context.h
index 58245c0..39e192d 100644
--- a/GLES_common/yagl_gles_context.h
+++ b/GLES_common/yagl_gles_context.h
@@ -244,6 +244,8 @@ void yagl_gles_context_bind_vertex_array(struct yagl_gles_context *ctx,
void yagl_gles_context_unbind_vertex_array(struct yagl_gles_context *ctx,
yagl_object_name va_local_name);
+int yagl_gles_context_convert_textures(struct yagl_gles_context *ctx);
+
int yagl_gles_context_validate_texture_target(struct yagl_gles_context *ctx,
GLenum target,
yagl_gles_texture_target *texture_target);
diff --git a/GLES_common/yagl_gles_pixel_formats.c b/GLES_common/yagl_gles_pixel_formats.c
index 4467a24..8decd2d 100644
--- a/GLES_common/yagl_gles_pixel_formats.c
+++ b/GLES_common/yagl_gles_pixel_formats.c
@@ -23,7 +23,7 @@ static void yagl_convert_alpha_ub_bgra_ub(const GLvoid *src,
for (i = 0; i < height; ++i) {
for (j = 0; j < width; ++j) {
- *(uint32_t*)(dst + j * 4) = ((uint32_t)(*(uint8_t*)(src + j)) << 24) | 0xFFFFFF;
+ *(uint32_t*)(dst + j * 4) = ((uint32_t)(*(uint8_t*)(src + j)) << 24);
}
src += src_stride;
dst += dst_stride;
@@ -59,9 +59,9 @@ static void yagl_convert_alpha_f_bgra_f(const GLvoid *src,
for (i = 0; i < height; ++i) {
for (j = 0; j < width; ++j) {
- *(GLfloat*)(dst + j * 16 + 0) = 1.0f;
- *(GLfloat*)(dst + j * 16 + 4) = 1.0f;
- *(GLfloat*)(dst + j * 16 + 8) = 1.0f;
+ *(GLfloat*)(dst + j * 16 + 0) = 0.0f;
+ *(GLfloat*)(dst + j * 16 + 4) = 0.0f;
+ *(GLfloat*)(dst + j * 16 + 8) = 0.0f;
*(uint32_t*)(dst + j * 16 + 12) = *(uint32_t*)(src + j * 4);
}
src += src_stride;
@@ -98,9 +98,9 @@ static void yagl_convert_alpha_hf_bgra_hf(const GLvoid *src,
for (i = 0; i < height; ++i) {
for (j = 0; j < width; ++j) {
- *(uint16_t*)(dst + j * 8 + 0) = YAGL_HALF_FLOAT_1_0;
- *(uint16_t*)(dst + j * 8 + 2) = YAGL_HALF_FLOAT_1_0;
- *(uint16_t*)(dst + j * 8 + 4) = YAGL_HALF_FLOAT_1_0;
+ *(uint16_t*)(dst + j * 8 + 0) = 0;
+ *(uint16_t*)(dst + j * 8 + 2) = 0;
+ *(uint16_t*)(dst + j * 8 + 4) = 0;
*(uint16_t*)(dst + j * 8 + 6) = *(uint16_t*)(src + j * 2);
}
src += src_stride;
diff --git a/GLES_common/yagl_gles_texture.c b/GLES_common/yagl_gles_texture.c
index 5b825bc..dc0f0dd 100644
--- a/GLES_common/yagl_gles_texture.c
+++ b/GLES_common/yagl_gles_texture.c
@@ -12,30 +12,28 @@
*/
#define GL_HALF_FLOAT_OES 0x8D61
-static void yagl_gles_texture_set_swizzle(struct yagl_gles_texture *texture,
- GLenum internalformat)
+static void yagl_gles_texture_swizzle(struct yagl_gles_texture *texture,
+ GLenum internalformat)
{
- if (yagl_get_host_gl_version() > yagl_gl_2) {
- switch (internalformat) {
- case GL_ALPHA:
- yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_R, GL_ONE);
- yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_G, GL_ONE);
- yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_B, GL_ONE);
- yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_A, GL_ALPHA);
- break;
- case GL_LUMINANCE:
- yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_R, GL_RED);
- yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_G, GL_RED);
- yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_B, GL_RED);
- yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_A, GL_ONE);
- break;
- case GL_LUMINANCE_ALPHA:
- yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_R, GL_RED);
- yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_G, GL_RED);
- yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_B, GL_RED);
- yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_A, GL_ALPHA);
- break;
- }
+ switch (internalformat) {
+ case GL_ALPHA:
+ yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_R, GL_ZERO);
+ yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_G, GL_ZERO);
+ yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_B, GL_ZERO);
+ yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_A, GL_ALPHA);
+ break;
+ case GL_LUMINANCE:
+ yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_R, GL_RED);
+ yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_G, GL_RED);
+ yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_B, GL_RED);
+ yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_A, GL_ONE);
+ break;
+ case GL_LUMINANCE_ALPHA:
+ yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_R, GL_RED);
+ yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_G, GL_RED);
+ yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_B, GL_RED);
+ yagl_host_glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_A, GL_ALPHA);
+ break;
}
}
@@ -107,7 +105,8 @@ int yagl_gles_texture_bind(struct yagl_gles_texture *texture,
void yagl_gles_texture_set_internalformat(struct yagl_gles_texture *texture,
GLenum internalformat,
- GLenum type)
+ GLenum type,
+ int swizzle)
{
texture->internalformat = internalformat;
@@ -122,12 +121,15 @@ void yagl_gles_texture_set_internalformat(struct yagl_gles_texture *texture,
break;
}
- yagl_gles_texture_set_swizzle(texture, internalformat);
+ if (swizzle) {
+ yagl_gles_texture_swizzle(texture, internalformat);
+ }
}
void yagl_gles_texture_set_immutable(struct yagl_gles_texture *texture,
GLenum internalformat,
- GLenum type)
+ GLenum type,
+ int swizzle)
{
texture->immutable = GL_TRUE;
texture->internalformat = internalformat;
@@ -143,7 +145,9 @@ void yagl_gles_texture_set_immutable(struct yagl_gles_texture *texture,
break;
}
- yagl_gles_texture_set_swizzle(texture, internalformat);
+ if (swizzle) {
+ yagl_gles_texture_swizzle(texture, internalformat);
+ }
}
int yagl_gles_texture_color_renderable(struct yagl_gles_texture *texture)
diff --git a/GLES_common/yagl_gles_texture.h b/GLES_common/yagl_gles_texture.h
index d46a487..6d1597b 100644
--- a/GLES_common/yagl_gles_texture.h
+++ b/GLES_common/yagl_gles_texture.h
@@ -56,11 +56,13 @@ int yagl_gles_texture_bind(struct yagl_gles_texture *texture,
void yagl_gles_texture_set_internalformat(struct yagl_gles_texture *texture,
GLenum internalformat,
- GLenum type);
+ GLenum type,
+ int swizzle);
void yagl_gles_texture_set_immutable(struct yagl_gles_texture *texture,
GLenum internalformat,
- GLenum type);
+ GLenum type,
+ int swizzle);
int yagl_gles_texture_color_renderable(struct yagl_gles_texture *texture);
diff --git a/GLESv1_CM/yagl_gles1_context.c b/GLESv1_CM/yagl_gles1_context.c
index ec2465e..4f14c94 100644
--- a/GLESv1_CM/yagl_gles1_context.c
+++ b/GLESv1_CM/yagl_gles1_context.c
@@ -594,7 +594,8 @@ static void yagl_gles1_cpal_tex_uncomp_and_apply(struct yagl_gles_context *ctx,
yagl_gles_texture_set_internalformat(texture,
fmt_desc->uncomp_format,
- fmt_desc->pixel_type);
+ fmt_desc->pixel_type,
+ yagl_gles_context_convert_textures(ctx));
return;
}
@@ -669,7 +670,8 @@ static void yagl_gles1_cpal_tex_uncomp_and_apply(struct yagl_gles_context *ctx,
yagl_gles_texture_set_internalformat(texture,
fmt_desc->uncomp_format,
- fmt_desc->pixel_type);
+ fmt_desc->pixel_type,
+ yagl_gles_context_convert_textures(ctx));
}
static void yagl_gles1_etc1_rgb8_uncomp_and_apply(struct yagl_gles_context *ctx,
@@ -706,7 +708,8 @@ static void yagl_gles1_etc1_rgb8_uncomp_and_apply(struct yagl_gles_context *ctx,
yagl_gles_texture_set_internalformat(texture,
GL_RGBA8,
- GL_UNSIGNED_BYTE);
+ GL_UNSIGNED_BYTE,
+ yagl_gles_context_convert_textures(ctx));
return;
}
@@ -737,7 +740,8 @@ static void yagl_gles1_etc1_rgb8_uncomp_and_apply(struct yagl_gles_context *ctx,
yagl_gles_texture_set_internalformat(texture,
GL_RGBA8,
- GL_UNSIGNED_BYTE);
+ GL_UNSIGNED_BYTE,
+ yagl_gles_context_convert_textures(ctx));
}
static void yagl_gles1_context_compressed_tex_image_2d(struct yagl_gles_context *ctx,
diff --git a/GLESv2/yagl_gles2_calls.c b/GLESv2/yagl_gles2_calls.c
index 008cf0f..9c2d429 100644
--- a/GLESv2/yagl_gles2_calls.c
+++ b/GLESv2/yagl_gles2_calls.c
@@ -2391,7 +2391,8 @@ YAGL_API void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLs
yagl_gles_texture_set_internalformat(tex_target_state->texture,
internalformat,
- type);
+ type,
+ yagl_gles_context_convert_textures(&ctx->base));
out:
YAGL_LOG_FUNC_EXIT(NULL);
@@ -2755,7 +2756,10 @@ YAGL_API void glTexStorage3D(GLenum target, GLsizei levels, GLenum internalforma
goto out;
}
- yagl_gles_texture_set_immutable(tex_target_state->texture, base_internalformat, type);
+ yagl_gles_texture_set_immutable(tex_target_state->texture,
+ base_internalformat,
+ type,
+ yagl_gles_context_convert_textures(&ctx->base));
out:
YAGL_LOG_FUNC_EXIT(NULL);
diff --git a/GLESv2/yagl_gles2_context.c b/GLESv2/yagl_gles2_context.c
index ddb9bcb..61c412f 100644
--- a/GLESv2/yagl_gles2_context.c
+++ b/GLESv2/yagl_gles2_context.c
@@ -636,7 +636,8 @@ void yagl_gles2_context_compressed_tex_image_2d(struct yagl_gles_context *gles_c
yagl_gles_texture_set_internalformat(texture,
tc_format->dst_internalformat,
- tc_format->dst_type);
+ tc_format->dst_type,
+ yagl_gles_context_convert_textures(gles_ctx));
return;
}
@@ -668,7 +669,8 @@ void yagl_gles2_context_compressed_tex_image_2d(struct yagl_gles_context *gles_c
yagl_gles_texture_set_internalformat(texture,
tc_format->dst_internalformat,
- tc_format->dst_type);
+ tc_format->dst_type,
+ yagl_gles_context_convert_textures(gles_ctx));
}
void yagl_gles2_context_compressed_tex_sub_image_2d(struct yagl_gles_context *gles_ctx,
@@ -819,7 +821,8 @@ void yagl_gles2_context_compressed_tex_image_3d(struct yagl_gles2_context *ctx,
yagl_gles_texture_set_internalformat(texture,
tc_format->dst_internalformat,
- tc_format->dst_type);
+ tc_format->dst_type,
+ yagl_gles_context_convert_textures(&ctx->base));
return;
}
@@ -856,7 +859,8 @@ void yagl_gles2_context_compressed_tex_image_3d(struct yagl_gles2_context *ctx,
yagl_gles_texture_set_internalformat(texture,
tc_format->dst_internalformat,
- tc_format->dst_type);
+ tc_format->dst_type,
+ yagl_gles_context_convert_textures(&ctx->base));
}
void yagl_gles2_context_compressed_tex_sub_image_3d(struct yagl_gles2_context *ctx,