mesa: Custom thread marshalling for Flush.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com> Acked-by: Marek Olšák <maraeo@gmail.com> Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de> Tested-by: Mike Lothian <mike@fireburn.co.uk>
This commit is contained in:
parent
154a4f2679
commit
a4a5de6f18
|
@ -2377,8 +2377,7 @@
|
|||
specially to ensure that it causes all previous commands to get
|
||||
delivered to the server thread.
|
||||
-->
|
||||
|
||||
<function name="Flush" es1="1.0" es2="2.0" marshal="sync">
|
||||
<function name="Flush" es1="1.0" es2="2.0" marshal="custom">
|
||||
<glx sop="142" handcode="true"/>
|
||||
</function>
|
||||
|
||||
|
|
|
@ -31,6 +31,39 @@
|
|||
#include "dispatch.h"
|
||||
#include "marshal_generated.h"
|
||||
|
||||
struct marshal_cmd_Flush
|
||||
{
|
||||
struct marshal_cmd_base cmd_base;
|
||||
};
|
||||
|
||||
|
||||
void
|
||||
_mesa_unmarshal_Flush(struct gl_context *ctx,
|
||||
const struct marshal_cmd_Flush *cmd)
|
||||
{
|
||||
CALL_Flush(ctx->CurrentServerDispatch, ());
|
||||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_marshal_Flush(void)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
struct marshal_cmd_Flush *cmd =
|
||||
_mesa_glthread_allocate_command(ctx, DISPATCH_CMD_Flush,
|
||||
sizeof(struct marshal_cmd_Flush));
|
||||
(void) cmd;
|
||||
_mesa_post_marshal_hook(ctx);
|
||||
|
||||
/* Flush() needs to be handled specially. In addition to telling the
|
||||
* background thread to flush, we need to ensure that our own buffer is
|
||||
* submitted to the background thread so that it will complete in a finite
|
||||
* amount of time.
|
||||
*/
|
||||
_mesa_glthread_flush_batch(ctx);
|
||||
}
|
||||
|
||||
|
||||
struct marshal_cmd_ShaderSource
|
||||
{
|
||||
struct marshal_cmd_base cmd_base;
|
||||
|
|
|
@ -110,6 +110,7 @@ _mesa_post_marshal_hook(struct gl_context *ctx)
|
|||
}
|
||||
|
||||
struct marshal_cmd_ShaderSource;
|
||||
struct marshal_cmd_Flush;
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_marshal_ShaderSource(GLuint shader, GLsizei count,
|
||||
|
@ -119,4 +120,11 @@ void
|
|||
_mesa_unmarshal_ShaderSource(struct gl_context *ctx,
|
||||
const struct marshal_cmd_ShaderSource *cmd);
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_marshal_Flush(void);
|
||||
|
||||
void
|
||||
_mesa_unmarshal_Flush(struct gl_context *ctx,
|
||||
const struct marshal_cmd_Flush *cmd);
|
||||
|
||||
#endif /* MARSHAL_H */
|
||||
|
|
Loading…
Reference in New Issue