summaryrefslogtreecommitdiff
path: root/src/nvc0_accel.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvc0_accel.c')
-rw-r--r--src/nvc0_accel.c17
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));