Mesa (master): mesa: report GL_INVALID_OPERATION for invalid glTextureBuffer target

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Apr 29 16:22:23 UTC 2020


Module: Mesa
Branch: master
Commit: a2542deb63adb3b5536947bcf9610c0ceca9da28
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a2542deb63adb3b5536947bcf9610c0ceca9da28

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Mon Apr 27 01:03:38 2020 -0400

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 <tarceri at itsqueeze.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4759>

---

 src/mesa/main/teximage.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

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,



More information about the mesa-commit mailing list