glthread: ignore vertex arrays with user pointers if they're disabled
[mesa.git] / src / mesa / main / glthread_marshal.h
index 116d79f436673fb1aa6528a29fb9422102bd685f..8fc65d298625e6af714e78e49af6b4f65a22cca6 100644 (file)
@@ -84,25 +84,29 @@ _mesa_glthread_has_non_vbo_vertices_or_indices(const struct gl_context *ctx)
    struct glthread_vao *vao = glthread->CurrentVAO;
 
    return ctx->API != API_OPENGL_CORE &&
-          (vao->CurrentElementBufferName == 0 || vao->HasUserPointer);
+          (vao->CurrentElementBufferName == 0 ||
+           (vao->UserPointerMask & vao->Enabled));
 }
 
 static inline bool
 _mesa_glthread_has_non_vbo_vertices(const struct gl_context *ctx)
 {
    const struct glthread_state *glthread = &ctx->GLThread;
+   const struct glthread_vao *vao = glthread->CurrentVAO;
 
-   return ctx->API != API_OPENGL_CORE && glthread->CurrentVAO->HasUserPointer;
+   return ctx->API != API_OPENGL_CORE &&
+          (vao->UserPointerMask & vao->Enabled);
 }
 
 static inline bool
 _mesa_glthread_has_non_vbo_vertices_or_indirect(const struct gl_context *ctx)
 {
    const struct glthread_state *glthread = &ctx->GLThread;
+   const struct glthread_vao *vao = glthread->CurrentVAO;
 
    return ctx->API != API_OPENGL_CORE &&
           (glthread->CurrentDrawIndirectBufferName == 0 ||
-           glthread->CurrentVAO->HasUserPointer);
+           (vao->UserPointerMask & vao->Enabled));
 }
 
 static inline bool
@@ -113,7 +117,8 @@ _mesa_glthread_has_non_vbo_vertices_or_indices_or_indirect(const struct gl_conte
 
    return ctx->API != API_OPENGL_CORE &&
           (glthread->CurrentDrawIndirectBufferName == 0 ||
-           vao->CurrentElementBufferName == 0 || vao->HasUserPointer);
+           vao->CurrentElementBufferName == 0 ||
+           (vao->UserPointerMask & vao->Enabled));
 }