From: Eric Anholt Date: Tue, 25 Sep 2012 19:05:28 +0000 (-0700) Subject: glx: Replace DRI2GetMSC custom protocol with XCB. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ab8ae9301fe8c4843d902cb55e64620f5768c7b0;p=mesa.git glx: Replace DRI2GetMSC custom protocol with XCB. Reviewed-by: Chad Versace --- diff --git a/src/glx/dri2.c b/src/glx/dri2.c index 96c2ae87aed..0c49b83dbae 100644 --- a/src/glx/dri2.c +++ b/src/glx/dri2.c @@ -585,39 +585,6 @@ void DRI2SwapBuffers(Display *dpy, XID drawable, CARD64 target_msc, } #endif -#ifdef X_DRI2GetMSC -Bool DRI2GetMSC(Display *dpy, XID drawable, CARD64 *ust, CARD64 *msc, - CARD64 *sbc) -{ - XExtDisplayInfo *info = DRI2FindDisplay(dpy); - xDRI2GetMSCReq *req; - xDRI2MSCReply rep; - - XextCheckExtension (dpy, info, dri2ExtensionName, False); - - LockDisplay(dpy); - GetReq(DRI2GetMSC, req); - req->reqType = info->codes->major_opcode; - req->dri2ReqType = X_DRI2GetMSC; - req->drawable = drawable; - - if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { - UnlockDisplay(dpy); - SyncHandle(); - return False; - } - - *ust = vals_to_card64(rep.ust_lo, rep.ust_hi); - *msc = vals_to_card64(rep.msc_lo, rep.msc_hi); - *sbc = vals_to_card64(rep.sbc_lo, rep.sbc_hi); - - UnlockDisplay(dpy); - SyncHandle(); - - return True; -} -#endif - #ifdef X_DRI2SwapInterval void DRI2SwapInterval(Display *dpy, XID drawable, int interval) { diff --git a/src/glx/dri2.h b/src/glx/dri2.h index fe7c24e40ac..991ab377e9d 100644 --- a/src/glx/dri2.h +++ b/src/glx/dri2.h @@ -89,9 +89,6 @@ extern void DRI2SwapBuffers(Display *dpy, XID drawable, CARD64 target_msc, CARD64 divisor, CARD64 remainder, CARD64 *count); -extern Bool -DRI2GetMSC(Display *dpy, XID drawable, CARD64 *ust, CARD64 *msc, CARD64 *sbc); - extern void DRI2SwapInterval(Display *dpy, XID drawable, int interval); diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c index 60dc0354ca5..18542d18201 100644 --- a/src/glx/dri2_glx.c +++ b/src/glx/dri2_glx.c @@ -432,26 +432,24 @@ dri2CreateDrawable(struct glx_screen *base, XID xDrawable, return &pdraw->base; } -#ifdef X_DRI2GetMSC - static int dri2DrawableGetMSC(struct glx_screen *psc, __GLXDRIdrawable *pdraw, int64_t *ust, int64_t *msc, int64_t *sbc) { - CARD64 dri2_ust, dri2_msc, dri2_sbc; - int ret; + xcb_connection_t *c = XGetXCBConnection(pdraw->psc->dpy); + xcb_dri2_get_msc_cookie_t get_msc_cookie; + xcb_dri2_get_msc_reply_t *get_msc_reply; - ret = DRI2GetMSC(psc->dpy, pdraw->xDrawable, - &dri2_ust, &dri2_msc, &dri2_sbc); - *ust = dri2_ust; - *msc = dri2_msc; - *sbc = dri2_sbc; + get_msc_cookie = xcb_dri2_get_msc_unchecked(c, pdraw->xDrawable); + get_msc_reply = xcb_dri2_get_msc_reply(c, get_msc_cookie, NULL); + *ust = merge_counter(get_msc_reply->ust_hi, get_msc_reply->ust_lo); + *msc = merge_counter(get_msc_reply->msc_hi, get_msc_reply->msc_lo); + *sbc = merge_counter(get_msc_reply->sbc_hi, get_msc_reply->sbc_lo); + free(get_msc_reply); - return ret; + return 0; } -#endif - static int dri2WaitForMSC(__GLXDRIdrawable *pdraw, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc) @@ -1147,18 +1145,14 @@ dri2CreateScreen(int screen, struct glx_display * priv) psp->getSwapInterval = NULL; if (pdp->driMinor >= 2) { -#ifdef X_DRI2GetMSC psp->getDrawableMSC = dri2DrawableGetMSC; -#endif psp->waitForMSC = dri2WaitForMSC; psp->waitForSBC = dri2WaitForSBC; #ifdef X_DRI2SwapInterval psp->setSwapInterval = dri2SetSwapInterval; psp->getSwapInterval = dri2GetSwapInterval; #endif -#if defined(X_DRI2GetMSC) && defined(X_DRI2WaitMSC) && defined(X_DRI2SwapInterval) __glXEnableDirectExtension(&psc->base, "GLX_OML_sync_control"); -#endif } /* DRI2 suports SubBuffer through DRI2CopyRegion, so it's always