mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 13:58:04 +02:00
mesa: fix tex format selection for GL_R32F and other R/G float formats
The i965 driver advertises GL_ARB_texture_float and GL_ARB_texture_rg
support but the ctx->TextureFormatSupported[] table entries for
MESA_FORMAT_R_FLOAT32 and MESA_FORMAT_RGBA_FLOAT32 are false on gen 4
hardware. So the case for GL_R32F would fail and we'd print an
implementation error.
This patch adds more Mesa tex format options for GL_R32F and other R/G
formats so we fall back to 16-bit formats when 32-bit formats aren't
available.
Eric made the same fix in commit 6216a5b4 for the non R/G formats.
v2: try 16-bit formats before 32-bit formats and try RG formats before
RGBA where possible.
This should fix https://bugs.freedesktop.org/show_bug.cgi?id=44039
NOTE: This is a candidate for the 8.0 and 7.11 branches.
Reviewed-by: José Fonseca <jfonseca@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
This commit is contained in:
parent
481011ffcd
commit
7628696004
1 changed files with 10 additions and 0 deletions
|
|
@ -786,21 +786,31 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
|
|||
switch (internalFormat) {
|
||||
case GL_R16F:
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_R_FLOAT16);
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT16);
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_R_FLOAT32);
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT32);
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16);
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
|
||||
break;
|
||||
case GL_R32F:
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_R_FLOAT32);
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT32);
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_R_FLOAT16);
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT16);
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16);
|
||||
break;
|
||||
case GL_RG16F:
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT16);
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT32);
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16);
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
|
||||
break;
|
||||
case GL_RG32F:
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT32);
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT16);
|
||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue