From: Marek Olšák Date: Mon, 27 Apr 2020 05:03:38 +0000 (-0400) Subject: mesa: report GL_INVALID_OPERATION for invalid glTextureBuffer target X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a2542deb63adb3b5536947bcf9610c0ceca9da28;p=mesa.git mesa: report GL_INVALID_OPERATION for invalid glTextureBuffer target This fixes: KHR-GL46.direct_state_access.textures_buffer_errors KHR-GL46.direct_state_access.textures_buffer_range_errors Fixes: 98e64e538af - main: Added entry point for glTextureBuffer Reviewed-by: Timothy Arceri Part-of: --- diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 7eddbc33f95..19bad75b20e 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -6362,10 +6362,10 @@ texture_buffer_range(struct gl_context *ctx, */ static bool check_texture_buffer_target(struct gl_context *ctx, GLenum target, - const char *caller) + const char *caller, bool dsa) { if (target != GL_TEXTURE_BUFFER_ARB) { - _mesa_error(ctx, GL_INVALID_ENUM, + _mesa_error(ctx, dsa ? GL_INVALID_OPERATION : GL_INVALID_ENUM, "%s(texture target is not GL_TEXTURE_BUFFER)", caller); return false; } @@ -6435,7 +6435,7 @@ _mesa_TexBuffer(GLenum target, GLenum internalFormat, GLuint buffer) /* Need to catch a bad target before it gets to * _mesa_get_current_tex_object. */ - if (!check_texture_buffer_target(ctx, target, "glTexBuffer")) + if (!check_texture_buffer_target(ctx, target, "glTexBuffer", false)) return; if (buffer) { @@ -6467,7 +6467,7 @@ _mesa_TexBufferRange(GLenum target, GLenum internalFormat, GLuint buffer, /* Need to catch a bad target before it gets to * _mesa_get_current_tex_object. */ - if (!check_texture_buffer_target(ctx, target, "glTexBufferRange")) + if (!check_texture_buffer_target(ctx, target, "glTexBufferRange", false)) return; if (buffer) { @@ -6516,7 +6516,7 @@ _mesa_TextureBufferRangeEXT(GLuint texture, GLenum target, GLenum internalFormat if (!texObj) return; - if (!check_texture_buffer_target(ctx, target, "glTextureBufferRangeEXT")) + if (!check_texture_buffer_target(ctx, target, "glTextureBufferRangeEXT", true)) return; if (buffer) { @@ -6566,7 +6566,7 @@ _mesa_TextureBuffer(GLuint texture, GLenum internalFormat, GLuint buffer) if (!texObj) return; - if (!check_texture_buffer_target(ctx, texObj->Target, "glTextureBuffer")) + if (!check_texture_buffer_target(ctx, texObj->Target, "glTextureBuffer", true)) return; texture_buffer_range(ctx, texObj, internalFormat, @@ -6595,7 +6595,7 @@ _mesa_TextureBufferEXT(GLuint texture, GLenum target, "glTextureBufferEXT"); if (!texObj || - !check_texture_buffer_target(ctx, texObj->Target, "glTextureBufferEXT")) + !check_texture_buffer_target(ctx, texObj->Target, "glTextureBufferEXT", true)) return; texture_buffer_range(ctx, texObj, internalFormat, @@ -6625,7 +6625,7 @@ _mesa_MultiTexBufferEXT(GLenum texunit, GLenum target, "glMultiTexBufferEXT"); if (!texObj || - !check_texture_buffer_target(ctx, texObj->Target, "glMultiTexBufferEXT")) + !check_texture_buffer_target(ctx, texObj->Target, "glMultiTexBufferEXT", false)) return; texture_buffer_range(ctx, texObj, internalFormat, @@ -6670,7 +6670,7 @@ _mesa_TextureBufferRange(GLuint texture, GLenum internalFormat, GLuint buffer, return; if (!check_texture_buffer_target(ctx, texObj->Target, - "glTextureBufferRange")) + "glTextureBufferRange", true)) return; texture_buffer_range(ctx, texObj, internalFormat,