[Intel-gfx] Tear-free textured video port causes other drawing on the screen to tear

Simon Farnsworth simon.farnsworth at onelan.com
Tue Jul 14 13:49:22 CEST 2009


Hello,

We've been trying to work out why textured video causes an otherwise
smooth text scroller (using XCopyArea and VBlank interrupts) to glitch,
and found that setting the port attribute XV_SYNC_TO_VBLANK to 0 fixes
the glitches.

Looking at the code, the driver uses MI_LOAD_SCAN_LINES_INCL and
MI_WAIT_FOR_EVENT to stall the GPU until it's safe to draw when
XV_SYNC_TO_VBLANK is not 0. This is correct for the video, but has the
unfortunate side effect of stalling the scroller's rendering, too. We
would like to stall *just* the Xv blit, not the rest of the access to
the GPU.

The documentation suggests, if I'm reading it properly, that the driver
could use a separate GPU context to continue executing commands while
the Xv batch buffer is stalled - the batch buffer would then resume when
the event had completed and the GPU was otherwise idle.

Am I misunderstanding something? Is there a deeper reason for not using
multiple contexts to enable different bits of rendering to move past
each other in the GPU schedule?
-- 
Simon Farnsworth




More information about the Intel-gfx mailing list