xf86-video-intel/src/sna
Chris Wilson 033f75e5bd sna: Stage retirement through the flushing list
If the kernel replies that a bo is still busy, stage its retirement
through the flushing list to be certain that we never stall on a
subsequent write.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-01-31 01:43:00 +00:00
..
brw Convert generation counter to octal 2012-11-30 12:12:49 +00:00
fb sna: Move the source region to the CPU for a self-copy fallback CopyArea 2012-10-20 17:59:45 +01:00
Makefile.am sna: Begin sketching out a threaded rasteriser for spans 2013-01-27 13:06:46 +00:00
README
atomic.h sna: Begin sketching out a threaded rasteriser for spans 2013-01-27 13:06:46 +00:00
blt.c sna: Use inplace X tiling for LLC uploads 2012-09-21 11:56:16 +01:00
compiler.h sna: Begin sketching out a threaded rasteriser for spans 2013-01-27 13:06:46 +00:00
gen2_render.c sna/gen4+: Specialise linear vertex emission 2013-01-02 11:52:58 +00:00
gen2_render.h
gen3_render.c sna/gen3+: Fix a DBG for composite_boxes() 2013-01-29 17:26:10 +00:00
gen3_render.h
gen4_render.c sna/gen3+: Fix a DBG for composite_boxes() 2013-01-29 17:26:10 +00:00
gen4_render.h sna/gen4: Backport more recent state tracking tweaks 2012-12-21 09:46:18 +00:00
gen4_source.c sna/gen4+: Handle solids passed to the general texcoord emitter 2013-01-06 15:20:14 +00:00
gen4_source.h sna/gen4+: Specialise linear vertex emission 2013-01-02 11:52:58 +00:00
gen4_vertex.c sna: Fix typo in vertex count for threaded source span emitter 2013-01-27 23:17:13 +00:00
gen4_vertex.h sna/gen4+: Specialise linear vertex emission 2013-01-02 11:52:58 +00:00
gen5_render.c sna/gen3+: Fix a DBG for composite_boxes() 2013-01-29 17:26:10 +00:00
gen5_render.h Revert "sna/gen4+: Backport tight vertex packing for simple renderblits" 2013-01-06 13:30:37 +00:00
gen6_render.c sna/gen3+: Fix a DBG for composite_boxes() 2013-01-29 17:26:10 +00:00
gen6_render.h sna/gen6: Enable 8 pixel dispatch 2012-07-31 19:11:54 +01:00
gen7_render.c sna/gen3+: Fix a DBG for composite_boxes() 2013-01-29 17:26:10 +00:00
gen7_render.h sna/gen7: Add constant variations and hookup a basic GT descriptor for Haswell 2012-08-03 12:26:12 +01:00
kgem.c sna: Stage retirement through the flushing list 2013-01-31 01:43:00 +00:00
kgem.h sna/gen7: Place the vsync commands in the same cacheline 2013-01-20 18:10:58 +00:00
kgem_debug.c sna/gen4+: Amalgamate all the gen4-7 vertex buffer emission 2012-12-20 19:11:04 +00:00
kgem_debug.h sna/gen4+: Amalgamate all the gen4-7 vertex buffer emission 2012-12-20 19:11:04 +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/gen4+: Amalgamate all the gen4-7 vertex buffer emission 2012-12-20 19:11:04 +00:00
kgem_debug_gen6.c sna: Begin sketching out a threaded rasteriser for spans 2013-01-27 13:06:46 +00:00
kgem_debug_gen7.c sna: Constification 2012-06-13 14:34:22 +01:00
rop.h
sna.h sna: Only migrate the sample box if using the BLT engine for a composite 2013-01-29 22:26:15 +00:00
sna_accel.c sna: Prevent falling back to swrast if source is on the GPU 2013-01-31 00:58:51 +00:00
sna_blt.c sna: Enable threaded rasterisation for non-antialiased geometry 2013-01-27 13:06:46 +00:00
sna_composite.c sna: Add some more paranoia that we correctly map before fallbacks 2013-01-28 23:14:57 +00:00
sna_damage.c sna: Replace double negative '!RegionNotEmpty' with the equivalent RegionNil 2013-01-18 13:09:36 +00:00
sna_damage.h sna: Apply PutImage optimisations to move-to-cpu 2013-01-14 17:02:42 +00:00
sna_display.c sna: Add a bunch of assertions to make sure we do not misplace scanouts 2013-01-30 17:28:19 +00:00
sna_dri.c sna/dri: Handle change of BackBuffer across a pending flip 2013-01-30 21:17:32 +00:00
sna_driver.c sna: Experiment with a threaded renderer for fallback compositing 2013-01-24 15:25:16 +00:00
sna_glyphs.c sna: Replace double negative '!RegionNotEmpty' with the equivalent RegionNil 2013-01-18 13:09:36 +00:00
sna_gradient.c sna: Seed the solid color cache with an invalid value to prevent false hits 2012-12-29 16:59:00 +00:00
sna_io.c sna: Prefer to use snooped buffers for readbacks 2013-01-30 16:47:02 +00: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: Flesh out tiled operations using the BLT 2012-07-23 15:16:47 +01:00
sna_render.c sna: Only migrate the sample box if using the BLT engine for a composite 2013-01-29 22:26:15 +00:00
sna_render.h sna: Enable threaded rasterisation for non-antialiased geometry 2013-01-27 13:06:46 +00:00
sna_render_inline.h sna: Revert use of a separate CAN_CREATE_SMALL flag 2013-01-16 08:15:42 +00:00
sna_stream.c sna: Generate shaders for SNB+ 8-pixel dispatch 2012-07-31 19:11:08 +01:00
sna_threads.c sna: Disable all signals in the render threads 2013-01-27 16:06:15 +00:00
sna_tiling.c sna: Replace double negative '!RegionNotEmpty' with the equivalent RegionNil 2013-01-18 13:09:36 +00:00
sna_transform.c sna: Aim for consistency and use stdbool except for core X APIs 2012-07-14 09:21:12 +01:00
sna_trapezoids.c sna: Enable threaded rasterisation for non-antialiased geometry 2013-01-27 13:06:46 +00:00
sna_vertex.c sna: Begin sketching out a threaded rasteriser for spans 2013-01-27 13:06:46 +00:00
sna_video.c sna/dri: Fix triple buffering to not penalise missed frames 2012-12-31 15:55:28 +00:00
sna_video.h sna/video: Fix presentation of cropped sprites 2012-12-18 23:09:42 +00:00
sna_video_hwmc.c sna/video: Remove XvMCScreenInitProc 2012-12-20 10:10:12 +00:00
sna_video_hwmc.h sna/xvmc: Clean up to avoid crash'n'burn 2012-12-18 14:09:03 +00:00
sna_video_overlay.c sna/video: Fix presentation of cropped sprites 2012-12-18 23:09:42 +00:00
sna_video_sprite.c sna/video: Fix presentation of cropped sprites 2012-12-18 23:09:42 +00:00
sna_video_textured.c sna/video: Initialise alignment for video ports > 0 2012-12-21 21:36:30 +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.