diff options
author | Stanislav Vorobiov <s.vorobiov@samsung.com> | 2014-03-04 19:30:11 +0400 |
---|---|---|
committer | Stanislav Vorobiov <s.vorobiov@samsung.com> | 2014-03-04 19:30:11 +0400 |
commit | 83c1d892f47218f95e8c9adb2d28956e19e90493 (patch) | |
tree | 73b178b97b42fa5c3f51396ddd55d59420909679 | |
parent | ddd1fe469855684044079c510afb620539e7d6c3 (diff) | |
download | emulator-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.c | 11 | ||||
-rw-r--r-- | GLES_common/yagl_gles_context.c | 74 | ||||
-rw-r--r-- | GLES_common/yagl_gles_context.h | 2 | ||||
-rw-r--r-- | GLES_common/yagl_gles_pixel_formats.c | 14 | ||||
-rw-r--r-- | GLES_common/yagl_gles_texture.c | 58 | ||||
-rw-r--r-- | GLES_common/yagl_gles_texture.h | 6 | ||||
-rw-r--r-- | GLESv1_CM/yagl_gles1_context.c | 12 | ||||
-rw-r--r-- | GLESv2/yagl_gles2_calls.c | 8 | ||||
-rw-r--r-- | GLESv2/yagl_gles2_context.c | 12 |
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, |