* calls (deprecated and removed in GL core), we just disable threading.
*/
static inline bool
-_mesa_glthread_is_non_vbo_draw_elements(const struct gl_context *ctx)
+_mesa_glthread_has_non_vbo_vertices_or_indices(const struct gl_context *ctx)
{
const struct glthread_state *glthread = &ctx->GLThread;
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_is_non_vbo_draw_arrays(const struct gl_context *ctx)
+_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_is_non_vbo_draw_arrays_indirect(const struct gl_context *ctx)
+_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
-_mesa_glthread_is_non_vbo_draw_elements_indirect(const struct gl_context *ctx)
+_mesa_glthread_has_non_vbo_vertices_or_indices_or_indirect(const struct gl_context *ctx)
{
const struct glthread_state *glthread = &ctx->GLThread;
struct glthread_vao *vao = glthread->CurrentVAO;
return ctx->API != API_OPENGL_CORE &&
(glthread->CurrentDrawIndirectBufferName == 0 ||
- vao->CurrentElementBufferName == 0 || vao->HasUserPointer);
+ vao->CurrentElementBufferName == 0 ||
+ (vao->UserPointerMask & vao->Enabled));
}
}
}
+static inline gl_vert_attrib
+_mesa_array_to_attrib(struct gl_context *ctx, GLenum array)
+{
+ switch (array) {
+ case GL_VERTEX_ARRAY:
+ return VERT_ATTRIB_POS;
+ case GL_NORMAL_ARRAY:
+ return VERT_ATTRIB_NORMAL;
+ case GL_COLOR_ARRAY:
+ return VERT_ATTRIB_COLOR0;
+ case GL_INDEX_ARRAY:
+ return VERT_ATTRIB_COLOR_INDEX;
+ case GL_TEXTURE_COORD_ARRAY:
+ return VERT_ATTRIB_TEX(ctx->GLThread.ClientActiveTexture);
+ case GL_EDGE_FLAG_ARRAY:
+ return VERT_ATTRIB_EDGEFLAG;
+ case GL_FOG_COORDINATE_ARRAY:
+ return VERT_ATTRIB_FOG;
+ case GL_SECONDARY_COLOR_ARRAY:
+ return VERT_ATTRIB_COLOR1;
+ case GL_POINT_SIZE_ARRAY_OES:
+ return VERT_ATTRIB_POINT_SIZE;
+ default:
+ if (array >= GL_TEXTURE0 && array <= GL_TEXTURE7)
+ return VERT_ATTRIB_TEX(array - GL_TEXTURE0);
+ return VERT_ATTRIB_MAX;
+ }
+}
+
#endif /* MARSHAL_H */