xf86-video-intel/src/sna
Chris Wilson d974dabc8a sna: Relax the square cursor assumption
Internally only use a square cursor, but 845g/865g actually supports
rectangular cursors (as they have a relaxed cursor height restriction).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-08-13 07:58:57 +01:00
..
brw Revert "sna: Remove spurious SAMPLER writemask for gen4" 2014-01-08 11:09:46 +00:00
fb sna: Silence compiler warnings for discarding const Region points 2014-06-11 11:02:05 +01:00
Makefile.am Add automake magic required for libobj/ 2014-07-23 16:02:47 +01:00
README
atomic.h
blt.c sna: Micro-optimise unswizzling tiling/detiling 2014-06-28 14:18:23 +01:00
compiler.h
gen2_render.c sna/gen2+: Remove assertion on draw->type for fills 2014-07-16 07:19:03 +01:00
gen2_render.h
gen3_render.c sna/gen2+: Remove assertion on draw->type for fills 2014-07-16 07:19:03 +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/gen2+: Remove assertion on draw->type for fills 2014-07-16 07:19:03 +01:00
gen4_render.h sna/gen4,5: Fix setting pipe control cache flush bits 2014-02-03 10:04:15 +00:00
gen4_source.c
gen4_source.h
gen4_vertex.c sna/gen4+: Add some more asserts around recreating vertex buffers 2014-06-23 10:14:09 +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/gen2+: Remove assertion on draw->type for fills 2014-07-16 07:19:03 +01:00
gen5_render.h
gen6_common.c sna: Tweak deletion of used buffers 2013-10-31 13:35:37 +00:00
gen6_common.h sna/gen8: Check for WT support before attempting to use the WT mocs 2014-06-13 08:27:05 +01:00
gen6_render.c sna/gen2+: Remove assertion on draw->type for fills 2014-07-16 07:19:03 +01:00
gen6_render.h
gen7_render.c sna/gen2+: Remove assertion on draw->type for fills 2014-07-16 07:19:03 +01:00
gen7_render.h
gen8_eu.c sna/gen8: Initial backend for Broadwell 2013-12-11 21:39:40 +00:00
gen8_eu.h sna/gen8: Initial backend for Broadwell 2013-12-11 21:39:40 +00:00
gen8_render.c sna/gen2+: Remove assertion on draw->type for fills 2014-07-16 07:19:03 +01:00
gen8_render.h sna/gen8: Initial backend for Broadwell 2013-12-11 21:39:40 +00:00
gen8_vertex.c sna/gen3+: Allow for spill when aligning vertices 2014-01-24 14:21:44 +00:00
gen8_vertex.h sna/gen8: Initial backend for Broadwell 2013-12-11 21:39:40 +00:00
kgem.c sna: Relax restriction on fenced aperture check 2014-08-03 07:33:35 +01:00
kgem.h sna: Restrict fencing to only use the low 256MiB 2014-08-02 19:19:57 +01:00
kgem_debug.c sna: Expand debugging to cover gen8 BLT variations 2014-06-10 21:31:05 +01:00
kgem_debug.h
kgem_debug_gen2.c Remove uneeded headers 2013-11-25 10:04:47 +00:00
kgem_debug_gen3.c
kgem_debug_gen4.c
kgem_debug_gen5.c
kgem_debug_gen6.c
kgem_debug_gen7.c
rop.h
sna.h sna: Set the RandR primary output from the option 2014-08-05 16:22:53 +01:00
sna_accel.c intel: Use NOACCEL to avoid a symbol clash on old Xorg 2014-08-05 16:38:42 +01:00
sna_acpi.c
sna_blt.c sna: Fix a couple of DBG messages 2014-07-08 13:07:11 +01:00
sna_composite.c sna: Discard operations to either CPU or GPU bo when overwriting with RenderRectangles 2014-07-04 13:04:02 +01:00
sna_cpu.c Silence CLang (almost) 2014-05-28 13:34:53 +01:00
sna_cpuid.h Silence CLang (almost) 2014-05-28 13:34:53 +01:00
sna_damage.c sna: Mark up const boxes to keep the compiler happy 2014-06-20 16:23:18 +01:00
sna_damage.h sna: Utilise existing cached upload for promoting to GPU bo 2014-07-04 11:25:28 +01:00
sna_display.c sna: Relax the square cursor assumption 2014-08-13 07:58:57 +01:00
sna_display_fake.c sna: Add some extra logging for hotplugging of outputs 2014-08-05 10:19:05 +01:00
sna_dri2.c sna: Restore single CRTC flips 2014-08-03 20:36:13 +01:00
sna_dri3.c sna/dri3: Don't forget to add SHM pixmaps to the list of exported DRI3 bo 2014-07-22 09:00:46 +01:00
sna_driver.c sna: Update check for static driver data on loading error 2014-08-08 14:04:14 +01:00
sna_glyphs.c sna/glyphs: Eliminate an extra conditional from glyphs-to-dst 2014-08-01 12:02:58 +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/dri2: Pass around the correct DrawableRec for sampling from the foriegn bo 2014-06-30 21:18:43 +01:00
sna_module.h
sna_present.c sna: Avoid confusing failure to flip and flipping zero CRTC 2014-07-17 10:06:06 +01:00
sna_reg.h sna: Emit points using the BLT primitive when appropriate 2014-03-10 14:54:38 +00:00
sna_render.c sna/gen2+: Remove assertion on draw->type for fills 2014-07-16 07:19:03 +01:00
sna_render.h sna/dri2: Pass around the correct DrawableRec for sampling from the foriegn bo 2014-06-30 21:18:43 +01:00
sna_render_inline.h sna/dri2: Pass around the correct DrawableRec for sampling from the foriegn bo 2014-06-30 21:18:43 +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: Tweak number of threads for short areas 2014-07-04 12:43:55 +01:00
sna_tiling.c sna/dri2: Pass around the correct DrawableRec for sampling from the foriegn bo 2014-06-30 21:18:43 +01:00
sna_transform.c sna: Fix logic inversion in use of imprecise transform conversion 2014-03-17 07:56:39 +00:00
sna_trapezoids.c sna/dri2: Pass around the correct DrawableRec for sampling from the foriegn bo 2014-06-30 21:18:43 +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: Disable use of threaded compositor when using threaded renderer 2014-07-04 12:19:25 +01:00
sna_trapezoids_imprecise.c sna/dri2: Pass around the correct DrawableRec for sampling from the foriegn bo 2014-06-30 21:18:43 +01:00
sna_trapezoids_mono.c sna: Silence compiler warnings for discarding const Region points 2014-06-11 11:02:05 +01:00
sna_trapezoids_precise.c sna: Silence compiler warnings for discarding const Region points 2014-06-11 11:02:05 +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 Prepare for spurious Xv ABI changes 2014-08-08 08:26:08 +01:00
sna_video.h Prepare for spurious Xv ABI changes 2014-08-08 08:26:08 +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_overlay.c Prepare for spurious Xv ABI changes 2014-08-08 08:26:08 +01:00
sna_video_sprite.c Prepare for spurious Xv ABI changes 2014-08-08 08:26:08 +01:00
sna_video_textured.c Prepare for spurious Xv ABI changes 2014-08-08 08:26:08 +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.