return ctx->API != API_OPENGL_CORE && !glthread->element_array_is_vbo;
}
+static inline bool
+_mesa_glthread_is_non_vbo_draw_arrays_indirect(const struct gl_context *ctx)
+{
+ struct glthread_state *glthread = ctx->GLThread;
+
+ return ctx->API != API_OPENGL_CORE &&
+ !glthread->draw_indirect_buffer_is_vbo;
+}
+
+static inline bool
+_mesa_glthread_is_non_vbo_draw_elements_indirect(const struct gl_context *ctx)
+{
+ struct glthread_state *glthread = ctx->GLThread;
+
+ return ctx->API != API_OPENGL_CORE &&
+ (!glthread->draw_indirect_buffer_is_vbo ||
+ !glthread->element_array_is_vbo);
+}
+
#define DEBUG_MARSHAL_PRINT_CALLS 0
/**
struct _glapi_table *
_mesa_create_marshal_table(const struct gl_context *ctx);
-static inline void
-_mesa_post_marshal_hook(struct gl_context *ctx)
-{
- /* This can be enabled for debugging whether a failure is a synchronization
- * problem between the main thread and the worker thread, or a failure in
- * how we actually marshal.
- */
- if (false)
- _mesa_glthread_finish(ctx);
-}
-
/**
* Checks whether we're on a compat context for code-generated
struct marshal_cmd_BufferSubData;
struct marshal_cmd_NamedBufferData;
struct marshal_cmd_NamedBufferSubData;
-struct marshal_cmd_ClearBuffer;
-#define marshal_cmd_ClearBufferfv marshal_cmd_ClearBuffer
-#define marshal_cmd_ClearBufferiv marshal_cmd_ClearBuffer
-#define marshal_cmd_ClearBufferuiv marshal_cmd_ClearBuffer
-#define marshal_cmd_ClearBufferfi marshal_cmd_ClearBuffer
void
_mesa_unmarshal_Enable(struct gl_context *ctx,
_mesa_marshal_NamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size,
const GLvoid * data);
-void
-_mesa_unmarshal_ClearBufferfv(struct gl_context *ctx,
- const struct marshal_cmd_ClearBuffer *cmd);
-
-void GLAPIENTRY
-_mesa_marshal_ClearBufferfv(GLenum buffer, GLint drawbuffer,
- const GLfloat *value);
-
-void
-_mesa_unmarshal_ClearBufferiv(struct gl_context *ctx,
- const struct marshal_cmd_ClearBuffer *cmd);
-
-void GLAPIENTRY
-_mesa_marshal_ClearBufferiv(GLenum buffer, GLint drawbuffer,
- const GLint *value);
-
-void
-_mesa_unmarshal_ClearBufferuiv(struct gl_context *ctx,
- const struct marshal_cmd_ClearBuffer *cmd);
-
-void GLAPIENTRY
-_mesa_marshal_ClearBufferuiv(GLenum buffer, GLint drawbuffer,
- const GLuint *value);
-
-void
-_mesa_unmarshal_ClearBufferfi(struct gl_context *ctx,
- const struct marshal_cmd_ClearBuffer *cmd);
-
-void GLAPIENTRY
-_mesa_marshal_ClearBufferfi(GLenum buffer, GLint drawbuffer,
- const GLfloat depth, const GLint stencil);
+static inline unsigned
+_mesa_buffer_enum_to_count(GLenum buffer)
+{
+ switch (buffer) {
+ case GL_COLOR:
+ return 4;
+ case GL_DEPTH_STENCIL:
+ return 2;
+ case GL_STENCIL:
+ case GL_DEPTH:
+ return 1;
+ default:
+ return 0;
+ }
+}
#endif /* MARSHAL_H */