mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-17 20:00:20 +01:00
mesa/texture: Also check for LA texture when querying intensity component size
Gallium may pick L16A16_FLOAT to represent GL_INTENSITY16F if no intensity
format is provided by the driver. However, when calling
glGetTexLevelParameteriv(..., GL_TEXTURE_INTENSITY_SIZE, ...)
mesa will return a zero size because the actually used format has no
intensity channel and as a fallback only the sizes of the red/green
channels are checked.
Also checking for LA sizes in the allocated texture resolves this problem.
v2: Only check alpha channel size and return it (Marek)
L and A size are always the same in this case.
Fixes (on virgl):
ext_framebuffer_multisample-fast-clear GL_ARB_texture_float *
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107832
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
(cherry picked from commit 47e01e77d8)
This commit is contained in:
parent
2f9795d6b3
commit
e86804eab2
1 changed files with 5 additions and 0 deletions
|
|
@ -1426,6 +1426,11 @@ get_tex_level_parameter_image(struct gl_context *ctx,
|
|||
_mesa_get_format_bits(texFormat,
|
||||
GL_TEXTURE_GREEN_SIZE));
|
||||
}
|
||||
if (*params == 0 && pname == GL_TEXTURE_INTENSITY_SIZE) {
|
||||
/* Gallium may store intensity as LA */
|
||||
*params = _mesa_get_format_bits(texFormat,
|
||||
GL_TEXTURE_ALPHA_SIZE);
|
||||
}
|
||||
}
|
||||
else {
|
||||
*params = 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue