xf86-video-intel/src/sna
Chris Wilson d3c7ee9211 sna: Faster unclipped rectilinear segments
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-10-28 16:44:16 +01:00
..
Makefile.am sna: Micro-optimise fill-spans 2011-10-19 13:11:24 +01:00
README sna: Introduce a new acceleration model. 2011-06-04 09:19:46 +01:00
blt.c sna: Remove bad assert 2011-09-16 20:33:57 +01:00
compiler.h sna: Micro-optimise fill-spans 2011-10-19 13:11:24 +01:00
gen2_render.c sna/gen2: Reset BLT registers across 2D/3D context switches 2011-10-27 23:56:34 +01:00
gen2_render.h sna/gen2: Use specular component for solid spans 2011-07-01 21:41:23 +01:00
gen3_render.c sna: Fix debug compilation, again. 2011-10-27 10:25:36 +01:00
gen3_render.h sna: Introduce a new acceleration model. 2011-06-04 09:19:46 +01:00
gen4_render.c sna: Convert diagonal zero-width lines into blits 2011-10-26 10:37:31 +01:00
gen4_render.h sna: Introduce a new acceleration model. 2011-06-04 09:19:46 +01:00
gen5_render.c sna: Fix debug compilation, again. 2011-10-27 10:25:36 +01:00
gen5_render.h sna/gen5: Avoid bitfields for simple assignments 2011-09-12 19:25:08 +01:00
gen6_render.c sna: Fix debug compilation, again. 2011-10-27 10:25:36 +01:00
gen6_render.h sna: Introduce a new acceleration model. 2011-06-04 09:19:46 +01:00
gen7_render.c sna: Fix debug compilation, again. 2011-10-27 10:25:36 +01:00
gen7_render.h sna/gen7: Fix up a couple instances of my inability to count 2011-09-27 23:26:33 +01:00
kgem.c sna: Fix debug compilation, again. 2011-10-27 10:25:36 +01:00
kgem.h sna: Reuse any partial write buffer for readback 2011-10-19 21:09:01 +01:00
kgem_debug.c sna/accel: Fall-forward for handling a non-copy CopyArea to a dst gpu bo 2011-10-16 19:39:24 +01:00
kgem_debug.h sna: Downsample sources 2x too large to fit in the 3D pipeline 2011-07-01 21:41:23 +01:00
kgem_debug_gen2.c sna/gen2: Improve batch decoder. 2011-09-04 12:46:32 +01:00
kgem_debug_gen3.c sna/accel: Fall-forward for handling a non-copy CopyArea to a dst gpu bo 2011-10-16 19:39:24 +01:00
kgem_debug_gen4.c sna: Introduce a new acceleration model. 2011-06-04 09:19:46 +01:00
kgem_debug_gen5.c sna: Introduce a new acceleration model. 2011-06-04 09:19:46 +01:00
kgem_debug_gen6.c sna: Introduce a new acceleration model. 2011-06-04 09:19:46 +01:00
sna.h sna: Use private identifier for internal scratch pixmaps 2011-10-27 20:16:35 +01:00
sna_accel.c sna: Faster unclipped rectilinear segments 2011-10-28 16:44:16 +01:00
sna_blt.c sna/blt: After submitting the batch, it will be empty 2011-10-27 10:25:37 +01:00
sna_composite.c sna/composite: Discard opaque masks 2011-10-27 10:25:36 +01:00
sna_damage.c sna: Fix debug compilation 2011-10-21 16:43:49 +01:00
sna_damage.h sna: Fast path unclipped points 2011-10-21 16:11:15 +01:00
sna_display.c sna/gen6: Fix offset of Scan-Line-Compare register 2011-09-30 16:11:05 +01:00
sna_dri.c sna: Use private identifier for internal scratch pixmaps 2011-10-27 20:16:35 +01:00
sna_driver.c configure: Introduce --with-builderstring 2011-09-15 18:00:07 +01:00
sna_glyphs.c sna: Use private identifier for internal scratch pixmaps 2011-10-27 20:16:35 +01:00
sna_gradient.c sna: Don't rewrite the solid colour cache if it hasn't changed 2011-10-19 16:26:38 +01:00
sna_io.c sna/io: Update batch mode after submitting partial requests 2011-10-27 10:25:37 +01:00
sna_module.h sna: Add zaphod support 2011-06-07 16:54:57 +01:00
sna_reg.h sna/gen6: Apply the unknown blitter death workaround 2011-10-19 13:11:24 +01:00
sna_render.c sna: Use private identifier for internal scratch pixmaps 2011-10-27 20:16:35 +01:00
sna_render.h sna/gen2: Cache the last solid colour for spans 2011-10-27 10:25:36 +01:00
sna_render_inline.h sna: Enlarge the minimum pixmap size to migrate for Render 2011-10-19 13:49:55 +01:00
sna_stream.c sna: Introduce a new acceleration model. 2011-06-04 09:19:46 +01:00
sna_tiling.c sna/tiling: Hook up composite_box 2011-10-14 11:31:00 +01:00
sna_transform.c sna: Introduce a new acceleration model. 2011-06-04 09:19:46 +01:00
sna_trapezoids.c sna: Use the unlikely wedged() throughout 2011-10-19 13:11:24 +01:00
sna_video.c sna: perform a warnings reduction pass 2011-09-17 22:33:28 +01:00
sna_video.h sna/video: Use pwrite for upload of unclipped, unrotated frames 2011-06-22 11:04:56 +01:00
sna_video_hwmc.c sna: Introduce a new acceleration model. 2011-06-04 09:19:46 +01:00
sna_video_hwmc.h sna: Introduce a new acceleration model. 2011-06-04 09:19:46 +01:00
sna_video_overlay.c sna/video: Downgrade severity of "overlay not found" message 2011-07-02 09:53:11 +01:00
sna_video_textured.c sna: perform a warnings reduction pass 2011-09-17 22:33:28 +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.