xf86-video-intel/src/sna
Chris Wilson 79f8ff4bbb sna/gen4+: Share a few common routines
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-10-10 13:24:46 +01:00
..
brw intel: Suppress some extremely noisy warnings 2013-07-29 23:49:08 +01:00
fb sna: Eliminate a DBG compile warn for 32-bit builds 2013-09-26 11:42:05 +01:00
Makefile.am sna/gen4+: Share a few common routines 2013-10-10 13:24:46 +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: Don't force inline string-ops for the general memcpy_blt routine 2013-08-01 11:18:18 +01:00
compiler.h sna: Rename the attribute macro __packed__ to avoid clang barfing 2013-08-05 16:20:35 +01:00
gen2_render.c sna: Pass usage hint down to render fill routines 2013-10-10 00:16:58 +01:00
gen2_render.h
gen3_render.c sna: Pass usage hint down to render fill routines 2013-10-10 00:16:58 +01:00
gen3_render.h
gen4_common.c sna/gen4+: Share a few common routines 2013-10-10 13:24:46 +01:00
gen4_common.h sna/gen4+: Share a few common routines 2013-10-10 13:24:46 +01:00
gen4_render.c sna/gen4+: Share a few common routines 2013-10-10 13:24:46 +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/gen3+: Flush vertex buffer after computing resize 2013-10-09 11:15:24 +01:00
gen4_vertex.h sna/gen3+: Flush vertex buffer after computing resize 2013-10-09 11:15:24 +01:00
gen5_render.c sna/gen4+: Share a few common routines 2013-10-10 13:24:46 +01:00
gen5_render.h Revert "sna/gen4+: Backport tight vertex packing for simple renderblits" 2013-01-06 13:30:37 +00:00
gen6_common.c sna/gen4+: Share a few common routines 2013-10-10 13:24:46 +01:00
gen6_common.h sna/gen4+: Share a few common routines 2013-10-10 13:24:46 +01:00
gen6_render.c sna/gen4+: Share a few common routines 2013-10-10 13:24:46 +01:00
gen6_render.h sna/gen6: Enable 8 pixel dispatch 2012-07-31 19:11:54 +01:00
gen7_render.c sna/gen4+: Share a few common routines 2013-10-10 13:24:46 +01:00
gen7_render.h sna/gen7: Fix MOCS for Haswell 2013-03-27 16:58:41 +00:00
kgem.c sna: Prevent changes in tiling/pitch of existing framebuffers 2013-10-10 08:32:51 +01:00
kgem.h sna: Apply the non-relaxed fencing partial paranoia everywhere 2013-09-29 14:39:56 +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
kgem_debug_gen3.c
kgem_debug_gen4.c
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
rop.h
sna.h sna/gen6+: Share the common routines for ring preferrence 2013-10-10 13:24:46 +01:00
sna_accel.c sna: Pass usage hint down to render fill routines 2013-10-10 00:16:58 +01:00
sna_acpi.c sna: Search /sys/class/power_state for the AC adapter 2013-09-06 23:55:56 +01:00
sna_blt.c sna: Check that the bo exists before attempting to undo it 2013-09-25 13:54:43 +01:00
sna_composite.c sna: Fix FillRectangles intersection with complex clip 2013-10-04 16:28:29 +01:00
sna_cpu.c sna: Wrap cpuid.h 2013-07-17 21:02:02 +01:00
sna_cpuid.h sna: Wrap cpuid.h 2013-07-17 21:02:02 +01:00
sna_damage.c sna: Add some more DBG 2013-09-03 17:02:12 +01:00
sna_damage.h sna: Remember to offset the box before asserting damage 2013-09-09 11:19:19 +01:00
sna_display.c sna: Steal the current mode name 2013-10-09 16:22:59 +01:00
sna_display_fake.c sna: Include some DBG for the virtual output detection 2013-09-06 11:11:47 +01:00
sna_dri.c sna/dri: Only move the scanout to the flip cache if destroyed 2013-10-04 14:15:53 +01:00
sna_driver.c intel: Remove dependence upon having PciInfo 2013-10-03 16:13:38 +01:00
sna_glyphs.c sna: Catch SIGBUS to prevent X death 2013-09-27 10:47:18 +01:00
sna_gradient.c sna: Trim color cache allocation to a single page 2013-10-07 22:06:32 +01:00
sna_io.c sna: Make sure we do not try to upload indirectly if the GPU is wedged 2013-09-27 10:47:18 +01:00
sna_module.h
sna_reg.h sna: Flesh out tiled operations using the BLT 2012-07-23 15:16:47 +01:00
sna_render.c sna: Pass usage hint down to render fill routines 2013-10-10 00:16:58 +01:00
sna_render.h sna/gen6+: Share the common routines for ring preferrence 2013-10-10 13:24:46 +01:00
sna_render_inline.h sna: Treat a source with a CPU bo as being attached. 2013-07-19 14:04:38 +01:00
sna_stream.c intel: Compile fixes for base install of SLED11.sp3 2013-09-18 12:49:41 +01:00
sna_threads.c sna: Rework the num_threads refinement to avoid the division 2013-10-08 09:40:34 +01:00
sna_tiling.c sna: Catch SIGBUS to prevent X death 2013-09-27 10:47:18 +01:00
sna_transform.c
sna_trapezoids.c sna: Rework the num_threads refinement to avoid the division 2013-10-08 09:40:34 +01:00
sna_trapezoids.h sna/trapezoids: Only use a single thread to emit rectilinear spans 2013-10-07 21:39:43 +01:00
sna_trapezoids_boxes.c sna/trapezoids: Recompute num_threads to match range 2013-10-08 00:04:54 +01:00
sna_trapezoids_imprecise.c sna: Rework the num_threads refinement to avoid the division 2013-10-08 09:40:34 +01:00
sna_trapezoids_mono.c sna: Rework the num_threads refinement to avoid the division 2013-10-08 09:40:34 +01:00
sna_trapezoids_precise.c sna: Rework the num_threads refinement to avoid the division 2013-10-08 09:40:34 +01:00
sna_vertex.c intel: Compile fixes for base install of SLED11.sp3 2013-09-18 12:49:41 +01:00
sna_video.c sna/video: The sprite framebuffer also encodes its format 2013-09-29 13:33:26 +01:00
sna_video.h sna/video: The sprite framebuffer also encodes its format 2013-09-29 13:33:26 +01:00
sna_video_hwmc.c intel: Remove dependence upon having PciInfo 2013-10-03 16:13:38 +01:00
sna_video_hwmc.h sna/video: Convert to a pure Xv backend 2013-05-21 11:14:52 +01:00
sna_video_overlay.c sna/video: Add always-on-top to the list of Xv attributes 2013-09-23 14:17:03 +01:00
sna_video_sprite.c sna/video: Don't allow caching of yuv scanouts 2013-09-29 11:22:37 +01:00
sna_video_textured.c sna: Add a few more checks for a hosted Xserver before walking CRTC lists 2013-08-25 11:00:32 +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.