xf86-video-intel/src/sna
Chris Wilson f8b67be8d3 sna: Don't clear the needs_flush flag after emitting a flush on the busy bo
We use that flag to check whether we need to check whether the bo is
still busy upon destruction, so only clear it if the bo is marked as
idle.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-06-20 12:39:19 +01:00
..
Makefile.am sna: Add video sprite support for ILK+ 2012-03-28 22:53:17 +01:00
README
blt.c sna: Specialise the self-copy blitter to handle vertically overlapping copies 2012-06-14 23:21:59 +01:00
compiler.h sna: Add inline keyword in conjunction with attribute(always_inline) 2012-06-05 10:37:25 +01:00
gen2_render.c sna: Add tiling for spans 2012-06-17 10:59:55 +01:00
gen2_render.h
gen3_render.c sna: Add tiling for spans 2012-06-17 10:59:55 +01:00
gen3_render.h
gen4_render.c sna: Tweaks for DBG missing glyphs through fallbacks 2012-06-15 15:41:08 +01:00
gen4_render.h
gen5_render.c sna: Add tiling for spans 2012-06-17 10:59:55 +01:00
gen5_render.h
gen6_render.c sna/gen[67]: Prefer to not force BLT paths for large pixmaps 2012-06-20 10:46:59 +01:00
gen6_render.h sna: Move the flush to the backends 2012-01-20 00:02:05 +00:00
gen7_render.c sna/gen7: Prefer BLT for copies 2012-06-20 11:45:47 +01:00
gen7_render.h sna: Move the flush to the backends 2012-01-20 00:02:05 +00:00
kgem.c sna: Check results from syscalls 2012-06-19 15:34:09 +01:00
kgem.h sna: Don't clear the needs_flush flag after emitting a flush on the busy bo 2012-06-20 12:39:19 +01:00
kgem_debug.c sna: Constification 2012-06-13 14:34:22 +01:00
kgem_debug.h sna: Begin debugging gen7 2011-11-11 00:15:44 +00:00
kgem_debug_gen2.c sna: Constification 2012-06-13 14:34:22 +01:00
kgem_debug_gen3.c sna: Minor cleanups from sematic analyser in DBG 2012-06-19 15:26:18 +01:00
kgem_debug_gen4.c sna: Constification 2012-06-13 14:34:22 +01:00
kgem_debug_gen5.c sna: Constification 2012-06-13 14:34:22 +01:00
kgem_debug_gen6.c sna: Constification 2012-06-13 14:34:22 +01:00
kgem_debug_gen7.c sna: Constification 2012-06-13 14:34:22 +01:00
rop.h sna: Reduce and clarify dependencies 2011-11-16 22:15:39 +00:00
sna.h sna: Specialise the self-copy blitter to handle vertically overlapping copies 2012-06-14 23:21:59 +01:00
sna_accel.c sna: Ensure extents is initialised if short-circuit use-cpu-bo 2012-06-19 16:00:13 +01:00
sna_blt.c sna: Assert expected return values 2012-06-19 15:57:31 +01:00
sna_composite.c sna: Assert expected return values 2012-06-19 15:57:31 +01:00
sna_damage.c sna: Validate cpu/gpu damage never overlaps 2012-06-18 21:29:51 +01:00
sna_damage.h sna: Validate cpu/gpu damage never overlaps 2012-06-18 21:29:51 +01:00
sna_display.c sna: Make the disable-unused after vt switch distinct from DPMS off 2012-06-14 19:26:42 +01:00
sna_dri.c Post Damage on the Screen Pixmap after a pageflip 2012-06-19 10:43:09 +01:00
sna_driver.c sna: Check results from syscalls 2012-06-19 15:34:09 +01:00
sna_glyphs.c sna: Composite glyphs inplace if the CPU is already all-damaged 2012-06-17 09:44:29 +01:00
sna_gradient.c sna/gradient: Reuse old gradient bo if allocation of new fails 2012-06-02 08:38:21 +01:00
sna_io.c sna: Double check that the source is busy before performing indirect reads 2012-06-19 00:40:04 +01:00
sna_module.h Allow runtime switching of AccelMethod between uxa/sna and even glamor 2012-05-24 19:01:22 +01:00
sna_reg.h sna: Support performing alpha-fixup on the source 2012-01-06 17:50:01 +00:00
sna_render.c sna: Assert expected return values 2012-06-19 15:57:31 +01:00
sna_render.h sna: Add tiling for spans 2012-06-17 10:59:55 +01:00
sna_render_inline.h sna: Further refine choice of placement when uploading source data. 2012-06-17 17:14:06 +01:00
sna_stream.c sna: Pass usage hint for creating linear buffers 2012-03-02 14:34:23 +00:00
sna_tiling.c sna: Fix cut'n'paste errors in tiling debug 2012-06-17 15:05:33 +01:00
sna_transform.c sna: Drop return value from 3D point transform 2012-06-01 23:22:31 +01:00
sna_trapezoids.c sna: Initialize the color value for fallback unaligned boxes 2012-06-19 10:24:24 +01:00
sna_video.c Initialise adaptors to 0 in case xf86XVListGenericAdaptors does not 2012-06-19 15:28:43 +01:00
sna_video.h sna: Trim the set of includes 2012-05-29 12:46:11 +01:00
sna_video_hwmc.c sna: Disable use of xvmc for SNB+ 2012-02-06 09:19:56 +00:00
sna_video_hwmc.h
sna_video_overlay.c sna: Check results from syscalls 2012-06-19 15:34:09 +01:00
sna_video_sprite.c sna/sprite: Restore another xf86drm.h 2012-05-30 07:47:53 +01:00
sna_video_textured.c sna: NameForAtom may return NULL 2012-06-02 07:51:41 +01:00

README

SandyBridge's New Acceleration
------------------------------

The guiding principle behind the design is to avoid GPU context switches.
On SandyBridge (and beyond), these are especially pernicious because the
RENDER and BLT engine are now on different rings and require
synchronisation of the various execution units when switching contexts.
They were not cheap on early generation, but with the increasing
complexity of the GPU, avoiding such serialisations is important.

Furthermore, we try very hard to avoid migrating between the CPU and GPU.
Every pixmap (apart from temporary "scratch" surfaces which we intend to
use on the GPU) is created in system memory. All operations are then done
upon this shadow copy until we are forced to move it onto the GPU. Such
migration can only be first triggered by: setting the pixmap as the
scanout (we obviously need a GPU buffer here), using the pixmap as a DRI
buffer (the client expects to perform hardware acceleration and we do not
want to disappoint) and lastly using the pixmap as a RENDER target. This
last is chosen because when we know we are going to perform hardware
acceleration and will continue to do so without fallbacks, using the GPU
is much, much faster than the CPU. The heuristic I chose therefore was
that if the application uses RENDER, i.e. cairo, then it will only be
using those paths and not intermixing core drawing operations and so
unlikely to trigger a fallback.

The complicating case is front-buffer rendering. So in order to accommodate
using RENDER on an application whilst running xterm without a composite
manager redirecting all the pixmaps to backing surfaces, we have to
perform damage tracking to avoid excess migration of portions of the
buffer.