On Mar 23, 2017, at 4:49 PM, Henri Verbeet hverbeet@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
case DC_GL_CHILD_WIN: if (ctx) sync_context( ctx ); escape.gl_drawable = gl->window; /* fall through */ default:pglXSwapBuffers( gdi_display, gl->drawable ); 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;
}
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@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.