Re: [PATCH 1/5] winex11: Use GLX_OML_sync_control to synchronise buffer swaps with X11DRV_FLUSH_GL_DRAWABLE requests.
On Mar 23, 2017, at 4:49 PM, Henri Verbeet <hverbeet(a)codeweavers.com> wrote:
@@ -3330,17 +3343,26 @@ static BOOL glxdrv_wglSwapBuffers( HDC hdc ) gl->rect.right - gl->rect.left, gl->rect.bottom - gl->rect.top ); break; } - pglXSwapBuffers(gdi_display, gl->drawable); + if (pglXSwapBuffersMscOML) + target_sbc = pglXSwapBuffersMscOML( gdi_display, gl->drawable, 0, 0, 0 ); + else + pglXSwapBuffers( gdi_display, gl->drawable ); break; case DC_GL_CHILD_WIN: if (ctx) sync_context( ctx ); escape.gl_drawable = gl->window; /* fall through */ default: - pglXSwapBuffers(gdi_display, gl->drawable); + if (pglXSwapBuffersMscOML) + target_sbc = pglXSwapBuffersMscOML( gdi_display, gl->drawable, 0, 0, 0 ); + else + pglXSwapBuffers( gdi_display, gl->drawable ); break; }
+ if (escape.gl_drawable && pglXWaitForSbcOML) + pglXWaitForSbcOML( gdi_display, gl->drawable, target_sbc, &ust, &msc, &sbc ); + release_gl_drawable( gl );
if (escape.gl_drawable) ExtEscape( ctx->hdc, X11DRV_ESCAPE, sizeof(escape), (LPSTR)&escape, 0, NULL );
According to the spec <https://www.khronos.org/registry/OpenGL/extensions/OML/GLX_OML_sync_control.txt>, glXSwapBuffersMscOML() does not perform an implicit glFlush() as glXSwapBuffers() does. Also, there's no indication that glXWaitForSbcOML() performs one either, although it sort of seems like it should. Is that a problem? -Ken
On 23 March 2017 at 23:26, Ken Thomases <ken(a)codeweavers.com> wrote:
According to the spec <https://www.khronos.org/registry/OpenGL/extensions/OML/GLX_OML_sync_control.txt>, glXSwapBuffersMscOML() does not perform an implicit glFlush() as glXSwapBuffers() does. Also, there's no indication that glXWaitForSbcOML() performs one either, although it sort of seems like it should. Is that a problem?
Possibly, although it isn't clear that wglSwapBuffers() is necessarily guaranteed to flush either. It's probably safer to explicitly flush anyway though.
participants (2)
-
Henri Verbeet -
Ken Thomases