Mesa (master): mesa: Fall back to float16 if float32 isn' t supported in ChooseTexFormat.

Eric Anholt anholt at kemper.freedesktop.org
Tue Nov 22 22:09:48 UTC 2011


Module: Mesa
Branch: master
Commit: 6216a5b49566fcd3f4b7ed42838858bccd2f0552
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6216a5b49566fcd3f4b7ed42838858bccd2f0552

Author: Eric Anholt <eric at anholt.net>
Date:   Tue Nov 22 13:27:54 2011 -0800

mesa: Fall back to float16 if float32 isn't supported in ChooseTexFormat.

Until GL 3.0, there isn't any requirement on the actual sizes of
channels chosen.  By falling back to 16 here, we can correctly support
ARB_texture_float on original i965 hardware, which can't correctly
filter 32-bit floats.

---

 src/mesa/main/texformat.c |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c
index 38571b8..ee9552b 100644
--- a/src/mesa/main/texformat.c
+++ b/src/mesa/main/texformat.c
@@ -326,6 +326,8 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
          case GL_ALPHA32F_ARB:
 	    RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_FLOAT32);
 	    RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
+	    RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_FLOAT16);
+	    RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16);
 	    break;
          case GL_LUMINANCE16F_ARB:
 	    RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_FLOAT16);
@@ -335,6 +337,8 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
          case GL_LUMINANCE32F_ARB:
 	    RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_FLOAT32);
 	    RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
+	    RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_FLOAT16);
+	    RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16);
 	    break;
          case GL_LUMINANCE_ALPHA16F_ARB:
 	    RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16);
@@ -344,6 +348,8 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
          case GL_LUMINANCE_ALPHA32F_ARB:
 	    RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32);
 	    RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
+	    RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16);
+	    RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16);
 	    break;
          case GL_INTENSITY16F_ARB:
 	    RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_FLOAT16);
@@ -353,6 +359,8 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
          case GL_INTENSITY32F_ARB:
 	    RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_FLOAT32);
 	    RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
+	    RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_FLOAT16);
+	    RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16);
 	    break;
          case GL_RGB16F_ARB:
 	    RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_FLOAT16);
@@ -363,6 +371,8 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
          case GL_RGB32F_ARB:
 	    RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_FLOAT32);
 	    RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
+	    RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_FLOAT16);
+	    RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16);
 	    break;
          case GL_RGBA16F_ARB:
 	    RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16);
@@ -370,6 +380,7 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
 	    break;
          case GL_RGBA32F_ARB:
 	    RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
+	    RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16);
 	    break;
          default:
             ; /* fallthrough */




More information about the mesa-commit mailing list