xf86-video-intel/src/sna
Chris Wilson d89b2647dc sna: Propagate clears when using the BLT composite routines
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-05-14 11:09:19 +01:00
..
brw Convert generation counter to octal 2012-11-30 12:12:49 +00:00
fb sna: Restore glyphs with xorg-1.12 2013-02-10 16:02:38 +00:00
Makefile.am sna: Add VALGRIND_CFLAGS whilst compiling with --enable-valgrind 2013-04-16 11:56:17 +01:00
README
atomic.h sna: Begin sketching out a threaded rasteriser for spans 2013-01-27 13:06:46 +00:00
blt.c sna: Allow the compiler to inline memcpy for the bitblt routines 2013-04-01 23:04:29 +01:00
compiler.h sna: Align uploads to start on page boundaries 2013-04-10 13:46:45 +01:00
gen2_render.c sna/gen2: Add SSE2 fast paths for vertex emission 2013-02-26 19:08:58 +00:00
gen2_render.h
gen3_render.c sna/gen3: Tweak code generation for gen3_emit_composite_primitive_constant__sse2 2013-03-12 19:58:28 +00:00
gen3_render.h
gen4_render.c sna/gen4: Tidy testing for an active vertex buffer id 2013-05-14 09:23:31 +01: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: Add DBG statements for choice of spans vertex emitter 2013-05-09 13:49:56 +01:00
gen4_vertex.h sna/gen4+: Begin specialising vertex programs for ISA 2013-02-26 00:03:28 +00:00
gen5_render.c sna/gen5: Force a MI_FLUSH between using the BLT and RENDER engines 2013-04-12 10:25:55 +01: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/gen4+: Set read-write allocation mode for the target render cache 2013-03-27 16:58:41 +00:00
gen6_render.h sna/gen6: Enable 8 pixel dispatch 2012-07-31 19:11:54 +01:00
gen7_render.c sna/gen7: Add DBG for channel setup for render source 2013-05-09 13:49:56 +01:00
gen7_render.h sna/gen7: Fix MOCS for Haswell 2013-03-27 16:58:41 +00:00
kgem.c sna: Do not attempt to clean an active scanout 2013-05-07 10:38:12 +01:00
kgem.h sna: Flush the scanout cache after resizing the display 2013-04-12 11:39:11 +01: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 Revert "xgvevent" 2013-04-17 15:32:58 +01:00
sna_accel.c sna: Propagate clear color when replacing by a CopyArea 2013-05-14 09:37:26 +01:00
sna_blt.c sna: Propagate clears when using the BLT composite routines 2013-05-14 11:09:19 +01:00
sna_composite.c sna: Add more debugging to unaligned trapezoids 2013-05-09 13:49:56 +01:00
sna_cpu.c sna: Add extra '()' around bitwise &/&& for CPU feature detection 2013-03-26 16:32:13 +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: Backport to squeeze - Xorg-1.6, pixman-0.16, libdrm-2.4.21 2013-02-10 10:24:12 +00:00
sna_display.c sna: Flush the scanout cache after resizing the display 2013-04-12 11:39:11 +01:00
sna_display_fake.c sna: Disambiguate sna_crtc_resize() 2013-03-07 10:12:14 +00:00
sna_dri.c Prefer i830_dri.so for gen2 chipsets 2013-04-17 15:28:13 +01:00
sna_driver.c sna: Align uploads to start on page boundaries 2013-04-10 13:46:45 +01:00
sna_glyphs.c sna: Reset operation state between glyphs 2013-03-18 15:11:24 +00:00
sna_gradient.c sna: Nullify cache pointers upon server regen 2013-03-03 15:25:01 +00:00
sna_io.c sna: Try to eliminate pending operations to the bo being replaced 2013-04-01 23:04:29 +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: Flesh out tiled operations using the BLT 2012-07-23 15:16:47 +01:00
sna_render.c sna: Be careful not to preemptively upload portions of a SHM pixmap 2013-05-01 16:14:09 +01:00
sna_render.h sna/video: Correct scaling of source offsets 2013-02-28 21:18:49 +00:00
sna_render_inline.h sna/gen4: Tweak compilation flags to avoid mixed settings across functions 2013-03-12 20:23:02 +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: Skip processing an all-clipped-out glyph 2013-03-18 15:11:24 +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/trapezoids: Fix the determination of the trapezoid origin 2013-05-09 13:49:56 +01:00
sna_vertex.c sna: Begin sketching out a threaded rasteriser for spans 2013-01-27 13:06:46 +00:00
sna_video.c Revert "xgvevent" 2013-04-17 15:32:58 +01:00
sna_video.h Revert "xgvevent" 2013-04-17 15:32:58 +01:00
sna_video_hwmc.c Revert "xgvevent" 2013-04-17 15:32:58 +01:00
sna_video_hwmc.h Revert "xgvevent" 2013-04-17 15:32:58 +01:00
sna_video_overlay.c sna/video: Expand passthrough support for overlay planes 2013-04-09 09:10:33 +01:00
sna_video_sprite.c sna/video: Expand passthrough support for overlay planes 2013-04-09 09:10:33 +01:00
sna_video_textured.c Revert "xgvevent" 2013-04-17 15:32:58 +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.