mesa: Fix extension dependency for half-float TexBOs
authorIan Romanick <ian.d.romanick@intel.com>
Mon, 13 Jan 2014 23:18:23 +0000 (15:18 -0800)
committerEric Anholt <eric@anholt.net>
Tue, 11 Feb 2014 22:36:43 +0000 (14:36 -0800)
Half-float TexBOs should require both GL_ARB_half_float_pixel and
GL_ARB_texture_float.  This doesn't matter much in practice.  Every
driver that supports GL_ARB_texture_buffer_object already supports
GL_ARB_half_float_pixel.  We only expose the TexBO extension in core
profiles, and those require GL_ARB_texture_float.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/main/teximage.c

index 4d635fe7f47430740588314de661169c5177e47d..07ac1e1cfcdc1c06db6355d2cf96fdff45621aff 100644 (file)
@@ -4186,7 +4186,18 @@ _mesa_validate_texbuffer_format(const struct gl_context *ctx,
    if (datatype == GL_FLOAT && !ctx->Extensions.ARB_texture_float)
       return MESA_FORMAT_NONE;
 
-   if (datatype == GL_HALF_FLOAT && !ctx->Extensions.ARB_half_float_pixel)
+   /* The GL_ARB_texture_buffer_object spec says:
+    *
+    *     "If ARB_texture_float is not supported, references to the
+    *     floating-point internal formats provided by that extension should be
+    *     removed, and such formats may not be passed to TexBufferARB."
+    *
+    * As a result, GL_HALF_FLOAT internal format depends on both
+    * GL_ARB_texture_float and GL_ARB_half_float_pixel.
+    */
+   if (datatype == GL_HALF_FLOAT &&
+       !(ctx->Extensions.ARB_half_float_pixel
+         && ctx->Extensions.ARB_texture_float))
       return MESA_FORMAT_NONE;
 
    if (!ctx->Extensions.ARB_texture_rg) {