wined3d: Add sync object after query buffer issue.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45932 Signed-off-by: Andrew Wesie <awesie@gmail.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
6954e4e269
commit
6f5b8265ab
|
@ -76,6 +76,7 @@ static void wined3d_query_destroy_buffer_object(struct wined3d_context *context,
|
||||||
static BOOL wined3d_query_buffer_queue_result(struct wined3d_context *context, struct wined3d_query *query, GLuint id)
|
static BOOL wined3d_query_buffer_queue_result(struct wined3d_context *context, struct wined3d_query *query, GLuint id)
|
||||||
{
|
{
|
||||||
const struct wined3d_gl_info *gl_info = context->gl_info;
|
const struct wined3d_gl_info *gl_info = context->gl_info;
|
||||||
|
GLsync tmp_sync;
|
||||||
|
|
||||||
if (!gl_info->supported[ARB_QUERY_BUFFER_OBJECT] || !gl_info->supported[ARB_BUFFER_STORAGE])
|
if (!gl_info->supported[ARB_QUERY_BUFFER_OBJECT] || !gl_info->supported[ARB_BUFFER_STORAGE])
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -104,6 +105,14 @@ static BOOL wined3d_query_buffer_queue_result(struct wined3d_context *context, s
|
||||||
GL_EXTCALL(glBindBuffer(GL_QUERY_BUFFER, 0));
|
GL_EXTCALL(glBindBuffer(GL_QUERY_BUFFER, 0));
|
||||||
checkGLcall("queue query result");
|
checkGLcall("queue query result");
|
||||||
|
|
||||||
|
/* ARB_buffer_storage requires the client to call FenceSync with
|
||||||
|
* SYNC_GPU_COMMANDS_COMPLETE after the server does a write. This behavior
|
||||||
|
* is not enforced by Mesa.
|
||||||
|
*/
|
||||||
|
tmp_sync = GL_EXTCALL(glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0));
|
||||||
|
GL_EXTCALL(glDeleteSync(tmp_sync));
|
||||||
|
checkGLcall("query buffer sync");
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue