diff options
Diffstat (limited to 'mesalib/src/mesa/state_tracker/st_format.c')
-rw-r--r-- | mesalib/src/mesa/state_tracker/st_format.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/mesalib/src/mesa/state_tracker/st_format.c b/mesalib/src/mesa/state_tracker/st_format.c index 962b09250..302b58c7b 100644 --- a/mesalib/src/mesa/state_tracker/st_format.c +++ b/mesalib/src/mesa/state_tracker/st_format.c @@ -1631,7 +1631,8 @@ st_ChooseTextureFormat_renderable(struct gl_context *ctx, GLint internalFormat, * Called via ctx->Driver.ChooseTextureFormat(). */ gl_format -st_ChooseTextureFormat(struct gl_context *ctx, GLint internalFormat, +st_ChooseTextureFormat(struct gl_context *ctx, GLenum target, + GLint internalFormat, GLenum format, GLenum type) { boolean want_renderable = @@ -1640,6 +1641,15 @@ st_ChooseTextureFormat(struct gl_context *ctx, GLint internalFormat, internalFormat == GL_RGB8 || internalFormat == GL_RGBA8 || internalFormat == GL_BGRA; + if (target == GL_TEXTURE_1D || target == GL_TEXTURE_1D_ARRAY) { + /* We don't do compression for these texture targets because of + * difficulty with sub-texture updates on non-block boundaries, etc. + * So change the internal format request to an uncompressed format. + */ + internalFormat = + _mesa_generic_compressed_format_to_uncompressed_format(internalFormat); + } + return st_ChooseTextureFormat_renderable(ctx, internalFormat, format, type, want_renderable); } |