glFlush before CopySubBuffer, fix coordinates and extension name typo.
This commit is contained in:
parent
becf3d9272
commit
e1fbb30211
|
@ -186,11 +186,12 @@ static __GLXDRIdrawable *dri2CreateDrawable(__GLXscreenConfigs *psc,
|
|||
static void dri2CopySubBuffer(__GLXDRIdrawable *pdraw,
|
||||
int x, int y, int width, int height)
|
||||
{
|
||||
__GLXDRIdrawablePrivate *priv = (__GLXDRIdrawablePrivate *) pdraw;
|
||||
XRectangle xrect;
|
||||
XserverRegion region;
|
||||
|
||||
xrect.x = x;
|
||||
xrect.y = y;
|
||||
xrect.y = priv->height - y - height;
|
||||
xrect.width = width;
|
||||
xrect.height = height;
|
||||
|
||||
|
@ -331,7 +332,11 @@ static __GLXDRIscreen *dri2CreateScreen(__GLXscreenConfigs *psc, int screen,
|
|||
psp->createContext = dri2CreateContext;
|
||||
psp->createDrawable = dri2CreateDrawable;
|
||||
psp->swapBuffers = dri2SwapBuffers;
|
||||
|
||||
/* DRI2 suports SubBuffer through DRI2CopyRegion, so it's always
|
||||
* available.*/
|
||||
psp->copySubBuffer = dri2CopySubBuffer;
|
||||
__glXEnableDirectExtension(psc, "GLX_MESA_copy_sub_buffer");
|
||||
|
||||
Xfree(driverName);
|
||||
Xfree(deviceName);
|
||||
|
|
|
@ -340,7 +340,7 @@ driBindExtensions(__GLXscreenConfigs *psc, int dri2)
|
|||
#ifdef __DRI_COPY_SUB_BUFFER
|
||||
if (strcmp(extensions[i]->name, __DRI_COPY_SUB_BUFFER) == 0) {
|
||||
psc->driCopySubBuffer = (__DRIcopySubBufferExtension *) extensions[i];
|
||||
__glXEnableDirectExtension(psc, "GLX_MESA_copy_sub_buffer_bit");
|
||||
__glXEnableDirectExtension(psc, "GLX_MESA_copy_sub_buffer");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2500,6 +2500,7 @@ static void __glXCopySubBufferMESA(Display *dpy, GLXDrawable drawable,
|
|||
if ( pdraw != NULL ) {
|
||||
__GLXscreenConfigs * const psc = GetGLXScreenConfigs(dpy, screen);
|
||||
if (psc->driScreen->copySubBuffer != NULL) {
|
||||
glFlush();
|
||||
(*psc->driScreen->copySubBuffer)(pdraw, x, y, width, height);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue