mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-30 18:40:13 +01:00
mesa: Filter glBindTexture targets based on supported features.
Fixed the piglit test arb_texture_buffer_object-negative-unsupported. NOTE: This is a candidate for stable release branches. v2: Add proper core-profile and GLES3 filtering. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
parent
530c9d764b
commit
3f7c8364cf
1 changed files with 21 additions and 9 deletions
|
|
@ -1118,27 +1118,39 @@ _mesa_DeleteTextures( GLsizei n, const GLuint *textures)
|
|||
* \return TEXTURE_x_INDEX or -1 if target is invalid
|
||||
*/
|
||||
static GLint
|
||||
target_enum_to_index(GLenum target)
|
||||
target_enum_to_index(struct gl_context *ctx, GLenum target)
|
||||
{
|
||||
switch (target) {
|
||||
case GL_TEXTURE_1D:
|
||||
return TEXTURE_1D_INDEX;
|
||||
return _mesa_is_desktop_gl(ctx) ? TEXTURE_1D_INDEX : -1;
|
||||
case GL_TEXTURE_2D:
|
||||
return TEXTURE_2D_INDEX;
|
||||
case GL_TEXTURE_3D:
|
||||
return TEXTURE_3D_INDEX;
|
||||
case GL_TEXTURE_CUBE_MAP_ARB:
|
||||
return TEXTURE_CUBE_INDEX;
|
||||
return ctx->Extensions.ARB_texture_cube_map
|
||||
? TEXTURE_CUBE_INDEX : -1;
|
||||
case GL_TEXTURE_RECTANGLE_NV:
|
||||
return TEXTURE_RECT_INDEX;
|
||||
return _mesa_is_desktop_gl(ctx) && ctx->Extensions.NV_texture_rectangle
|
||||
? TEXTURE_RECT_INDEX : -1;
|
||||
case GL_TEXTURE_1D_ARRAY_EXT:
|
||||
return TEXTURE_1D_ARRAY_INDEX;
|
||||
return _mesa_is_desktop_gl(ctx)
|
||||
&& (ctx->Extensions.EXT_texture_array
|
||||
|| ctx->Extensions.MESA_texture_array)
|
||||
? TEXTURE_1D_ARRAY_INDEX : -1;
|
||||
case GL_TEXTURE_2D_ARRAY_EXT:
|
||||
return TEXTURE_2D_ARRAY_INDEX;
|
||||
return (_mesa_is_desktop_gl(ctx)
|
||||
&& (ctx->Extensions.EXT_texture_array
|
||||
|| ctx->Extensions.MESA_texture_array))
|
||||
|| _mesa_is_gles3(ctx)
|
||||
? TEXTURE_2D_ARRAY_INDEX : -1;
|
||||
case GL_TEXTURE_BUFFER_ARB:
|
||||
return TEXTURE_BUFFER_INDEX;
|
||||
return _mesa_is_desktop_gl(ctx)
|
||||
&& ctx->Extensions.ARB_texture_buffer_object
|
||||
? TEXTURE_BUFFER_INDEX : -1;
|
||||
case GL_TEXTURE_EXTERNAL_OES:
|
||||
return TEXTURE_EXTERNAL_INDEX;
|
||||
return _mesa_is_gles(ctx) && ctx->Extensions.OES_EGL_image_external
|
||||
? TEXTURE_EXTERNAL_INDEX : -1;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
|
@ -1173,7 +1185,7 @@ _mesa_BindTexture( GLenum target, GLuint texName )
|
|||
_mesa_debug(ctx, "glBindTexture %s %d\n",
|
||||
_mesa_lookup_enum_by_nr(target), (GLint) texName);
|
||||
|
||||
targetIndex = target_enum_to_index(target);
|
||||
targetIndex = target_enum_to_index(ctx, target);
|
||||
if (targetIndex < 0) {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glBindTexture(target)");
|
||||
return;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue