mesa: add API/extension checks for 3-component texture buffer formats

The GL_RGB32F, GL_RGB32UI and GL_RGB32I texture buffer formats are
only supposed to be allowed if the GL_ARB_texture_buffer_object_rgb32
extension is supported.  Note that the texture buffer extensions
require a core profile.  This patch adds those checks.

Fixes the soon-to-be-added
arb_clear_buffer_object-negative-bad-internalformat piglit test.
This commit is contained in:
Brian Paul 2013-12-16 09:41:09 -07:00
parent eaaa9695b2
commit aa4001b607

View file

@ -3967,6 +3967,20 @@ get_texbuffer_format(const struct gl_context *ctx, GLenum internalFormat)
}
}
if (ctx->API == API_OPENGL_CORE &&
ctx->Extensions.ARB_texture_buffer_object_rgb32) {
switch (internalFormat) {
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:
break;
}
}
switch (internalFormat) {
case GL_RGBA8:
return MESA_FORMAT_RGBA8888_REV;
@ -4031,13 +4045,6 @@ 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;
}