diff options
Diffstat (limited to 'src/nvc0_accel.c')
-rw-r--r-- | src/nvc0_accel.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/nvc0_accel.c b/src/nvc0_accel.c index 375ccc8..c04e270 100644 --- a/src/nvc0_accel.c +++ b/src/nvc0_accel.c @@ -63,25 +63,24 @@ void NVC0SyncToVBlank(PixmapPtr ppix, BoxPtr box) { ScrnInfoPtr pScrn = xf86ScreenToScrn(ppix->drawable.pScreen); - xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn); NVPtr pNv = NVPTR(pScrn); struct nouveau_pushbuf *push = pNv->pushbuf; - int crtcs; + int head; + xf86CrtcPtr crtc; if (!pNv->NvSW || !nouveau_exa_pixmap_is_onscreen(ppix)) return; - crtcs = nv_window_belongs_to_crtc(pScrn, box->x1, box->y1, - box->x2 - box->x1, - box->y2 - box->y1); - if (!crtcs) + crtc = nouveau_pick_best_crtc(pScrn, FALSE, box->x1, box->y1, + box->x2 - box->x1, + box->y2 - box->y1); + if (!crtc) return; if (!PUSH_SPACE(push, 32)) return; - crtcs = ffs(crtcs) - 1; - crtcs = drmmode_head(config->crtc[crtcs]); + head = drmmode_head(crtc); BEGIN_NVC0(push, NV01_SUBC(NVSW, OBJECT), 1); PUSH_DATA (push, pNv->NvSW->handle); @@ -94,7 +93,7 @@ NVC0SyncToVBlank(PixmapPtr ppix, BoxPtr box) PUSH_DATA (push, (pNv->scratch->offset + SEMA_OFFSET) >> 32); PUSH_DATA (push, (pNv->scratch->offset + SEMA_OFFSET)); PUSH_DATA (push, 0x11111111); - PUSH_DATA (push, crtcs); + PUSH_DATA (push, head); BEGIN_NVC0(push, NV84_SUBC(NVSW, SEMAPHORE_ADDRESS_HIGH), 4); PUSH_DATA (push, (pNv->scratch->offset + SEMA_OFFSET) >> 32); PUSH_DATA (push, (pNv->scratch->offset + SEMA_OFFSET)); |