The idea for the hw double buffering support is to program two fixed buffers and then only switch buffers in the OCMD register. But the driver as-is always programs the new buffer address (in both register sets when double buffered). Therefore we gain nothing by using this hw capability. Scrap the software support for it. When double buffered, we now allocate just a buffer of size 2*size and switch between the two parts purely in software. To make reviewing this easier, I'll shortly explain the differences of how double-buffering (i.e. tear-free video) is achieved before and after this change: - When double buffer, allocate a buffer twice the size (unchanged). - Depending upon the currently shown buffer-half, copy the new frame into the other buffer-half. In the old code this is done by using the right set of buffer offsets, either *Buf0Offset or *Buf1Offset. The new code simply programs the offset for the right buffer-half into the single set of offsets. The end-result is unchanged. Now the big difference in hw-programming: Old: Programm new buffer offset into both sets of _hw_ buffer offset registers. Depending upon the current _sw_ buffer, select the _hw_ buffer and program this into the OCMD register. This just complicates matters unnecessarly. New: Just always use the hw buffer 0. And then it's again the same story in both old and new code: - Execute an overlay flip (MI_OVERLAY_FLIP) to read in the contents of the hw registers into the shadow hw registers (which are actually being used by the overlay, not the ones we write stuff into). This is synchronized with the respective crtc vblank by the hw. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Eric Anholt <eric@anholt.net> |
||
|---|---|---|
| m4 | ||
| man | ||
| src | ||
| uxa | ||
| .gitignore | ||
| AUTHORS | ||
| COPYING | ||
| Makefile.am | ||
| NEWS | ||
| README | ||
| RELEASING | ||
| autogen.sh | ||
| configure.ac | ||
| shave-libtool.in | ||
| shave.in | ||
README
xf86-video-intel Open-source X.org graphics driver for Intel graphics http://www.intellinuxgraphics.com/ What is xf86-video-intel ------------------------ The xf86-video-intel module is an open-source 2D graphics driver for the X Window System as implemented by X.org. It supports a variety of Intel graphics chipsets including: i810/i810e/i810-dc100,i815, i830M,845G,852GM,855GM,865G, 915G/GM,945G/GM/GME,946GZ G/GM/GME/Q965, G/Q33,G/Q35,G41,G/Q43,G/GM/Q45 Where to get more information about the driver ---------------------------------------------- The primary source of information about this and other open-source drivers for Intel graphics is: http://intellinuxgraphics.org/ Documentation specific to the xf86-video-intel driver including possible configuration options for the xorg.conf file can be found in the intel(4) manual page. After installing the driver this documentation can be read with the following command: man intel Mailing list for communication with users and developers of xf86-video-intel: intel-gfx@lists.freedesktop.org Note: Subscription is required before posting, but anyone is free to subscribe. See instructions (and archives) here: http://lists.freedesktop.org/mailman/listinfo/intel-gfx To report bugs encountered with the driver, see: http://intellinuxgraphics.org/how_to_report_bug.html To see bugs that are targeted to be fixed in the next release: https://bugs.freedesktop.org/show_bug.cgi?id=intel-2d-release