xf86-video-intel/src/sna
Chris Wilson da90afc32f sna: Add DBG breadcrumbs to gradient initialisation
Put some markers into the debug log as those functions create many
proxies causing a lot of debug noise.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-17 11:51:25 +00:00
..
Makefile.am sna: Use top_srcdir to detect .git rather than top_builddir 2012-01-14 18:13:47 +00:00
README
blt.c sna: Add ricer stripes to memcpy_xor 2012-01-08 17:34:48 +00:00
compiler.h sna: Encourage large operations to be migrated to the GPU 2011-12-24 21:31:06 +00:00
gen2_render.c sna/gen[23]: Remark the destination bo as dirty after flushing 2012-01-16 13:37:45 +00:00
gen2_render.h sna/gen2: Use specular component for solid spans 2011-07-01 21:41:23 +01:00
gen3_render.c sna/gen[23]: Remark the destination bo as dirty after flushing 2012-01-16 13:37:45 +00:00
gen3_render.h
gen4_render.c sna/gen[45]: clear the state tracker before setting the formats 2012-01-16 16:09:57 +00:00
gen4_render.h
gen5_render.c sna/gen[45]: clear the state tracker before setting the formats 2012-01-16 16:09:57 +00:00
gen5_render.h sna/gen5: Avoid bitfields for simple assignments 2011-09-12 19:25:08 +01:00
gen6_render.c sna/gen[4567]: x1r5g5b5 is only a render target, not sampler 2012-01-16 15:39:42 +00:00
gen6_render.h
gen7_render.c sna/gen[45]: clear the state tracker before setting the formats 2012-01-16 16:09:57 +00:00
gen7_render.h sna/gen7: Correct shifts for surface state 2011-11-19 08:34:59 +00:00
kgem.c sna: Cap pwrite buffer alignment to 64k 2012-01-17 00:24:16 +00:00
kgem.h sna: On LLC systems quietly replace all linear mmappings using the CPU 2012-01-16 01:30:13 +00:00
kgem_debug.c sna: Begin debugging gen7 2011-11-11 00:15:44 +00:00
kgem_debug.h sna: Begin debugging gen7 2011-11-11 00:15:44 +00:00
kgem_debug_gen2.c sna/gen2: Improve batch decoder. 2011-09-04 12:46:32 +01:00
kgem_debug_gen3.c sna: Explicitly retire the bo following a serialisation point 2012-01-11 12:10:18 +00:00
kgem_debug_gen4.c sna: Explicitly retire the bo following a serialisation point 2012-01-11 12:10:18 +00:00
kgem_debug_gen5.c sna: Explicitly retire the bo following a serialisation point 2012-01-11 12:10:18 +00:00
kgem_debug_gen6.c sna: Store damage-all in the low bit of the damage pointer 2012-01-12 02:16:49 +00:00
kgem_debug_gen7.c sna: Store damage-all in the low bit of the damage pointer 2012-01-12 02:16:49 +00:00
rop.h sna: Reduce and clarify dependencies 2011-11-16 22:15:39 +00:00
sna.h sna/gen[4567]: x1r5g5b5 is only a render target, not sampler 2012-01-16 15:39:42 +00:00
sna_accel.c sna: On LLC systems quietly replace all linear mmappings using the CPU 2012-01-16 01:30:13 +00:00
sna_blt.c sna: Ensure that the batch mode is always declared before emitting dwords 2012-01-14 18:13:48 +00:00
sna_composite.c sna: Optimise call to composite with single box 2012-01-16 01:30:13 +00:00
sna_damage.c sna/damage: Fix union of extents with dirty damage but no region 2012-01-12 21:15:58 +00:00
sna_damage.h sna: Store damage-all in the low bit of the damage pointer 2012-01-12 02:16:49 +00:00
sna_display.c sna: Store damage-all in the low bit of the damage pointer 2012-01-12 02:16:49 +00:00
sna_dri.c sna/gen6: Allow greater use of BLT 2012-01-14 22:06:33 +00:00
sna_driver.c sna: Pass usage-hint to move-to-gpu 2011-12-23 22:11:19 +00:00
sna_glyphs.c sna/glyphs: Cache the glyph image on the fallback path as well 2012-01-14 18:13:48 +00:00
sna_gradient.c sna: Add DBG breadcrumbs to gradient initialisation 2012-01-17 11:51:25 +00:00
sna_io.c sna: Add a render ring detiling read path 2012-01-17 08:22:22 +00:00
sna_module.h sna: Add zaphod support 2011-06-07 16:54:57 +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/gen[4567]: x1r5g5b5 is only a render target, not sampler 2012-01-16 15:39:42 +00:00
sna_render.h sna/gen6: Restore the non-pipelined op after every WM binding table update 2012-01-16 13:37:45 +00:00
sna_render_inline.h sna: Ensure that the batch mode is always declared before emitting dwords 2012-01-14 18:13:48 +00:00
sna_stream.c
sna_tiling.c sna/gen[23]: Tile render fill to oversized bo 2012-01-10 17:08:15 +00:00
sna_transform.c
sna_trapezoids.c sna/trapezoids: Quieten the debugging of the gory details of the rasteriser 2012-01-14 18:13:47 +00:00
sna_video.c sna: Store damage-all in the low bit of the damage pointer 2012-01-12 02:16:49 +00:00
sna_video.h sna/video: Use the normal bo cache for texture video streams 2011-11-09 14:00:16 +00:00
sna_video_hwmc.c
sna_video_hwmc.h
sna_video_overlay.c sna/video: Constify a couple of attribute arrays 2011-11-13 13:13:03 +00:00
sna_video_textured.c sna/video: Increase the level of paranoia 2012-01-15 19:55:50 +00: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.