Mesa (master): texgetimage: Add check for the effective target to GetTextureSubImage

Eduardo Lima Mitev elima at kemper.freedesktop.org
Thu Feb 2 23:51:16 UTC 2017


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

Author: Eduardo Lima Mitev <elima at igalia.com>
Date:   Thu Feb  2 17:07:24 2017 +0100

texgetimage: Add check for the effective target to GetTextureSubImage

OpenGL 4.5 spec, section "8.11.4 Texture Image Queries", page 233 of
the PDF states:

    "An INVALID_OPERATION error is generated if texture is the name of a buffer
     or multisample texture."

This is currently not being checked and e.g a multisample texture image can
be passed down to the driver hook. On i965, it is crashing the driver with an
assertion:

intel_mipmap_tree.c:3125: intel_miptree_map: Assertion `mt->num_samples <= 1' failed.

v2: (Ilia Mirkin) Move the check from gettextimage_error_check() to
    GetTextureSubImage() and use the texObj target.

Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>

---

 src/mesa/main/texgetimage.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c
index d5cb163..b0ced1e 100644
--- a/src/mesa/main/texgetimage.c
+++ b/src/mesa/main/texgetimage.c
@@ -1465,6 +1465,12 @@ _mesa_GetTextureSubImage(GLuint texture, GLint level,
       return;
    }
 
+   if (!legal_getteximage_target(ctx, texObj->Target, true)) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                  "%s(buffer/multisample texture)", caller);
+      return;
+   }
+
    if (getteximage_error_check(ctx, texObj, texObj->Target, level,
                                xoffset, yoffset, zoffset, width, height, depth,
                                format, type, bufSize, pixels, caller)) {




More information about the mesa-commit mailing list