mesa: fixup cast expression
[mesa.git] / src / mesa / main / glthread_marshal.h
index 3adabb217bb10cb19e380bf2c7ea3d78a403f788..8fc65d298625e6af714e78e49af6b4f65a22cca6 100644 (file)
@@ -78,42 +78,47 @@ _mesa_glthread_allocate_command(struct gl_context *ctx,
  * 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));
 }
 
 
@@ -372,4 +377,33 @@ _mesa_semaphore_enum_to_count(GLenum pname)
    }
 }
 
+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 */