diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c index 6d7768dea16..6de2313626f 100644 --- a/src/mesa/drivers/common/meta.c +++ b/src/mesa/drivers/common/meta.c @@ -2743,6 +2743,7 @@ get_temp_image_type(struct gl_context *ctx, mesa_format format) { const GLenum baseFormat = _mesa_get_format_base_format(format); const GLint format_red_bits = _mesa_get_format_bits(format, GL_RED_BITS); + GLenum datatype = _mesa_get_format_datatype(format); switch (baseFormat) { case GL_RGBA: @@ -2753,18 +2754,15 @@ get_temp_image_type(struct gl_context *ctx, mesa_format format) case GL_LUMINANCE: case GL_LUMINANCE_ALPHA: case GL_INTENSITY: - if (format_red_bits <= 8) { + if (datatype == GL_INT || datatype == GL_UNSIGNED_INT) { + return datatype; + } else if (format_red_bits <= 8) { return GL_UNSIGNED_BYTE; } else if (format_red_bits <= 16) { return GL_UNSIGNED_SHORT; - } else { - GLenum datatype = _mesa_get_format_datatype(format); - if (datatype == GL_INT || datatype == GL_UNSIGNED_INT) - return datatype; - return GL_FLOAT; } + return GL_FLOAT; case GL_DEPTH_COMPONENT: { - GLenum datatype = _mesa_get_format_datatype(format); if (datatype == GL_FLOAT) return GL_FLOAT; else