XserverRegion region;
if (dri2_drawable->has_backbuffer) {
- xrect.x = 0;
- xrect.y = 0;
- xrect.width = dri2_drawable->width;
- xrect.height = dri2_drawable->height;
-
- region = XFixesCreateRegion((Display *)ctx->native_dpy, &xrect, 1);
- VA_DRI2CopyRegion((Display *)ctx->native_dpy, dri_drawable->x_drawable, region,
- DRI2BufferFrontLeft, DRI2BufferBackLeft);
- XFixesDestroyRegion((Display *)ctx->native_dpy, region);
+ if (gsDRI2SwapAvailable) {
+ CARD64 ret;
- VA_DRI2SwapBuffers(ctx->x11_dpy, dri_drawable->x_drawable, 0, 0,
++ VA_DRI2SwapBuffers(ctx->native_dpy, dri_drawable->x_drawable, 0, 0,
+ 0, &ret);
+ } else {
+ xrect.x = 0;
+ xrect.y = 0;
+ xrect.width = dri2_drawable->width;
+ xrect.height = dri2_drawable->height;
+
- region = XFixesCreateRegion(ctx->x11_dpy, &xrect, 1);
- VA_DRI2CopyRegion(ctx->x11_dpy, dri_drawable->x_drawable, region,
++ region = XFixesCreateRegion(ctx->native_dpy, &xrect, 1);
++ VA_DRI2CopyRegion(ctx->native_dpy, dri_drawable->x_drawable, region,
+ DRI2BufferFrontLeft, DRI2BufferBackLeft);
- XFixesDestroyRegion(ctx->x11_dpy, region);
++ XFixesDestroyRegion(ctx->native_dpy, region);
+ }
}
}
i = 0;
attachments[i++] = __DRI_BUFFER_BACK_LEFT;
- attachments[i++] = __DRI_BUFFER_FRONT_LEFT;
- buffers = VA_DRI2GetBuffers((Display *)ctx->native_dpy, dri_drawable->x_drawable,
- buffers = VA_DRI2GetBuffers(ctx->x11_dpy, dri_drawable->x_drawable,
++ buffers = VA_DRI2GetBuffers(ctx->native_dpy, dri_drawable->x_drawable,
&dri2_drawable->width, &dri2_drawable->height,
attachments, i, &count);
assert(buffers);