mesa: fix format selection for meta CopyTexSubImage()
When we do a glReadPixels into the temporary buffer, we don't want to
use GL_LUMINANCE, GL_LUMINANCE_ALPHA or GL_INTENSITY since they will
compute L=R+G+B which is not what we want.
This bug has existed all along but was only exposed by the elimination
of the driver hook for glCopyTexImage() in
5874890c26.
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=39604
Tested-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
@@ -2869,6 +2869,16 @@ copy_tex_sub_image(struct gl_context *ctx,
|
||||
|
||||
/* Choose format/type for temporary image buffer */
|
||||
format = _mesa_get_format_base_format(texImage->TexFormat);
|
||||
if (format == GL_LUMINANCE ||
|
||||
format == GL_LUMINANCE_ALPHA ||
|
||||
format == GL_INTENSITY) {
|
||||
/* We don't want to use GL_LUMINANCE, GL_INTENSITY, etc. for the
|
||||
* temp image buffer because glReadPixels will do L=R+G+B which is
|
||||
* not what we want (should be L=R).
|
||||
*/
|
||||
format = GL_RGBA;
|
||||
}
|
||||
|
||||
type = get_temp_image_type(ctx, format);
|
||||
bpp = _mesa_bytes_per_pixel(format, type);
|
||||
if (bpp <= 0) {
|
||||
|
||||
Reference in New Issue
Block a user