diff options
Diffstat (limited to 'src/i830_video.c')
-rw-r--r-- | src/i830_video.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/i830_video.c b/src/i830_video.c index e5efcaad..c1ddc986 100644 --- a/src/i830_video.c +++ b/src/i830_video.c @@ -428,7 +428,10 @@ i830_overlay_on(ScrnInfoPtr pScrn) OUT_RING(MI_FLUSH | MI_WRITE_DIRTY_STATE); OUT_RING(MI_NOOP); OUT_RING(MI_OVERLAY_FLIP | MI_OVERLAY_FLIP_ON); - OUT_RING(pI830->overlay_regs->bus_addr | OFC_UPDATE); + if (OVERLAY_NOPHYSICAL(pI830)) + OUT_RING(pI830->overlay_regs->offset | OFC_UPDATE); + else + OUT_RING(pI830->overlay_regs->bus_addr | OFC_UPDATE); /* Wait for the overlay to light up before attempting to use it */ OUT_RING(MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP); OUT_RING(MI_NOOP); @@ -458,7 +461,10 @@ i830_overlay_continue(ScrnInfoPtr pScrn, Bool update_filter) if (!*pI830->overlayOn) return; - flip_addr = pI830->overlay_regs->bus_addr; + if (OVERLAY_NOPHYSICAL(pI830)) + flip_addr = pI830->overlay_regs->offset; + else + flip_addr = pI830->overlay_regs->bus_addr; if (update_filter) flip_addr |= OFC_UPDATE; OVERLAY_DEBUG ("overlay_continue cmd 0x%08lx -> 0x%08lx sta 0x%08lx\n", @@ -507,7 +513,10 @@ i830_overlay_off(ScrnInfoPtr pScrn) OUT_RING(MI_FLUSH | MI_WRITE_DIRTY_STATE); OUT_RING(MI_NOOP); OUT_RING(MI_OVERLAY_FLIP | MI_OVERLAY_FLIP_CONTINUE); - OUT_RING(pI830->overlay_regs->bus_addr); + if (OVERLAY_NOPHYSICAL(pI830)) + OUT_RING(pI830->overlay_regs->offset); + else + OUT_RING(pI830->overlay_regs->bus_addr); OUT_RING(MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP); OUT_RING(MI_NOOP); ADVANCE_LP_RING(); @@ -572,7 +581,7 @@ I830InitVideo(ScreenPtr pScreen) } /* Set up overlay video if we can do it at this depth. */ - if (!IS_I965G(pI830) && !IS_G33CLASS(pI830) && pScrn->bitsPerPixel != 8 && + if (!IS_I965G(pI830) && pScrn->bitsPerPixel != 8 && pI830->overlay_regs != NULL) { overlayAdaptor = I830SetupImageVideoOverlay(pScreen); |