mesa: add support for ARB_texture_buffer_object_rgb32
authorDave Airlie <airlied@gmail.com>
Sat, 15 Dec 2012 03:03:40 +0000 (13:03 +1000)
committerDave Airlie <airlied@gmail.com>
Sat, 15 Dec 2012 20:55:33 +0000 (06:55 +1000)
This adds the extensions + the tex buffer support for checking
the formats.

There is a piglit test enhancement sent to that list.

Reviewed-by: Marek Olšák <maraeo@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/mesa/main/extensions.c
src/mesa/main/mtypes.h
src/mesa/main/teximage.c

index e86e43600226eb161f3cbec084ba26984127e53b..98711b395aa4864da453f3aea747e88b9f911270 100644 (file)
@@ -127,6 +127,7 @@ static const struct extension extension_table[] = {
    { "GL_ARB_sync",                                o(ARB_sync),                                GL,             2003 },
    { "GL_ARB_texture_border_clamp",                o(ARB_texture_border_clamp),                GLL,            2000 },
    { "GL_ARB_texture_buffer_object",               o(ARB_texture_buffer_object),               GLC,            2008 },
+   { "GL_ARB_texture_buffer_object_rgb32",         o(ARB_texture_buffer_object_rgb32),         GLC,            2009 },
    { "GL_ARB_texture_compression",                 o(dummy_true),                              GLL,            2000 },
    { "GL_ARB_texture_compression_rgtc",            o(ARB_texture_compression_rgtc),            GL,             2004 },
    { "GL_ARB_texture_cube_map",                    o(ARB_texture_cube_map),                    GLL,            1999 },
index b59498f34cbf09d6a7f9433cfd1c749948e6be08..67eaadd9f0de8d2f1b6510d6ab7801e989413331 100644 (file)
@@ -2989,6 +2989,7 @@ struct gl_extensions
    GLboolean ARB_sync;
    GLboolean ARB_texture_border_clamp;
    GLboolean ARB_texture_buffer_object;
+   GLboolean ARB_texture_buffer_object_rgb32;
    GLboolean ARB_texture_compression_rgtc;
    GLboolean ARB_texture_cube_map;
    GLboolean ARB_texture_cube_map_array;
index 47c4ed235906ccc866788fca460fbe3ccca824cc..7a0d944fd967f2a14c64ee98785647d462728027 100644 (file)
@@ -3848,6 +3848,13 @@ get_texbuffer_format(const struct gl_context *ctx, GLenum internalFormat)
    case GL_R32UI:
       return MESA_FORMAT_R_UINT32;
 
+   case GL_RGB32F:
+      return MESA_FORMAT_RGB_FLOAT32;
+   case GL_RGB32UI:
+      return MESA_FORMAT_RGB_UINT32;
+   case GL_RGB32I:
+      return MESA_FORMAT_RGB_INT32;
+
    default:
       return MESA_FORMAT_NONE;
    }
@@ -3879,6 +3886,12 @@ validate_texbuffer_format(const struct gl_context *ctx, GLenum internalFormat)
       if (base_format == GL_R || base_format == GL_RG)
         return MESA_FORMAT_NONE;
    }
+
+   if (!ctx->Extensions.ARB_texture_buffer_object_rgb32) {
+      GLenum base_format = _mesa_get_format_base_format(format);
+      if (base_format == GL_RGB)
+         return MESA_FORMAT_NONE;
+   }
    return format;
 }