From: Gert Wollny <gert.wol...@collabora.com> 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. 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.wol...@collabora.com> --- src/mesa/main/texparam.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index b5d86d64d5..643a349328 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -1426,6 +1426,13 @@ 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 = MIN2(_mesa_get_format_bits(texFormat, + GL_TEXTURE_LUMINANCE_SIZE), + _mesa_get_format_bits(texFormat, + GL_TEXTURE_ALPHA_SIZE)); + } } else { *params = 0; -- 2.16.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev