mesa: return old name for deleted samplers for SAMPLER_BINDING queries
authorDaniel Scharrer <daniel@constexpr.org>
Fri, 28 Aug 2015 09:45:36 +0000 (11:45 +0200)
committerFredrik Höglund <fredrik@kde.org>
Fri, 28 Aug 2015 16:08:39 +0000 (18:08 +0200)
If the sampler object has been deleted in the same context the binding
will have been cleared. If it has been deleted in another context, the
spec does not say what should returned. None of the other binding point
queries check for deletion in another context.

Also, as names of deleted objects are free for reuse, the current code
didn't even work reliably.

Reviewed-by: Fredrik Höglund <fredrik@kde.org>
Signed-off-by: Fredrik Höglund <fredrik@kde.org>
src/mesa/main/get.c

index 976bff6653e6c500f65a7ba97b733a59f3ffac84..4855187aa6f45602482b35f434f166a8084fb2e0 100644 (file)
@@ -994,16 +994,7 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
       {
          struct gl_sampler_object *samp =
             ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler;
-
-         /*
-          * The sampler object may have been deleted on another context,
-          * so we try to lookup the sampler object before returning its Name.
-          */
-         if (samp && _mesa_lookup_samplerobj(ctx, samp->Name)) {
-            v->value_int = samp->Name;
-         } else {
-            v->value_int = 0;
-         }
+         v->value_int = samp ? samp->Name : 0;
       }
       break;
    /* GL_ARB_uniform_buffer_object */