xf86-video-intel/src/sna
Chris Wilson 3dce661ef3 sna: And remember to update the ScreenPixmap after resize
Fixes the regression from the previous commit

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-09-07 13:55:46 +01:00
..
brw sna: Format markup to suppress compiler warning 2012-08-05 17:18:54 +01:00
fb sna: Fix comparison of memcpy overlap to include x-offsets 2012-09-05 00:05:33 +01:00
Makefile.am sna: Add the brw assembler 2012-07-30 12:57:13 +01:00
README
blt.c sna: Correct ordering of calls to memcpy for BLT cpu composite paths 2012-08-20 16:06:13 +01:00
compiler.h sna: Add inline keyword in conjunction with attribute(always_inline) 2012-06-05 10:37:25 +01:00
gen2_render.c sna/gen2+: Add the missing assertions in case the drawrect is invalid 2012-09-01 10:44:50 +01:00
gen2_render.h
gen3_render.c sna/gen2+: Add the missing assertions in case the drawrect is invalid 2012-09-01 10:44:50 +01:00
gen3_render.h
gen4_render.c sna/gen2+: Add the missing assertions in case the drawrect is invalid 2012-09-01 10:44:50 +01:00
gen4_render.h sna/gen4+: Implement an opacity shader 2012-08-01 10:32:37 +01:00
gen5_render.c Revert "sna: Cleanup composite redirection after substituting the BLT" 2012-08-27 11:26:58 +01:00
gen5_render.h sna/gen4+: Implement an opacity shader 2012-08-01 10:32:37 +01:00
gen6_render.c sna/gen6+: Redirect fills if the destination is too large for 3D 2012-09-03 23:09:07 +01:00
gen6_render.h sna/gen6: Enable 8 pixel dispatch 2012-07-31 19:11:54 +01:00
gen7_render.c sna/gen7: Always emit a stall when flushing the texture cache 2012-09-05 09:20:55 +01: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: Apply the minimum 256 pitch to CREATE_USAGE_SHARED pixmaps as well 2012-09-06 10:35:28 +01:00
kgem.h sna: Apply the minimum 256 pitch to CREATE_USAGE_SHARED pixmaps as well 2012-09-06 10:35:28 +01:00
kgem_debug.c sna: Constification 2012-06-13 14:34:22 +01:00
kgem_debug.h
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: Constification 2012-06-13 14:34:22 +01:00
kgem_debug_gen6.c sna: Constification 2012-06-13 14:34:22 +01:00
kgem_debug_gen7.c sna: Constification 2012-06-13 14:34:22 +01:00
rop.h
sna.h sna/prime: Distinguish forms of pinned pixmap 2012-09-06 11:43:48 +01:00
sna_accel.c sna/prime: Correct the pinning flag when importing the prime bo 2012-09-06 11:46:53 +01:00
sna_blt.c sna: Add some DBG to BLT composite substitute to show if redirection is used 2012-08-26 13:43:35 +01:00
sna_composite.c sna: Rearrange use_cpu() tests for composite ops to avoid syncing CPU bo 2012-09-04 22:20:03 +01:00
sna_damage.c sna: Correct assertions for adding damage that bypasses the region 2012-09-06 08:55:46 +01:00
sna_damage.h sna: Aim for consistency and use stdbool except for core X APIs 2012-07-14 09:21:12 +01:00
sna_display.c sna: And remember to update the ScreenPixmap after resize 2012-09-07 13:55:46 +01:00
sna_dri.c sna/dri: Fix the double-buffer pageflipping path 2012-09-07 12:18:08 +01:00
sna_driver.c Add PlatformProbe to handle sharing of device entities 2012-09-05 17:17:58 +01:00
sna_glyphs.c sna/prime: Distinguish forms of pinned pixmap 2012-09-06 11:43:48 +01:00
sna_gradient.c sna: Make the failure to create render caches non-fatal 2012-08-12 12:05:43 +01:00
sna_io.c sna: Also check whether the first upload box can use the BLT 2012-07-20 14:46:32 +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: A little more DBG to try and identify ratelimiting ops 2012-08-27 16:43:19 +01:00
sna_render.h sna: Avoid forcing an upload for an unblittable bo unless on a fallback path 2012-08-18 17:35:41 +01:00
sna_render_inline.h sna: Remove confusing is_cpu() 2012-08-20 16:06:13 +01:00
sna_stream.c sna: Generate shaders for SNB+ 8-pixel dispatch 2012-07-31 19:11:08 +01:00
sna_tiling.c sna/gen6+: Redirect fills if the destination is too large for 3D 2012-09-03 23:09:07 +01: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: Use a fast span emitter for mono trapezoids without damage or clipping 2012-08-26 16:54:37 +01:00
sna_video.c sna/video: Use the scanout flag and FB id for sprite framebuffers 2012-09-05 10:56:18 +01:00
sna_video.h sna: Aim for consistency and use stdbool except for core X APIs 2012-07-14 09:21:12 +01:00
sna_video_hwmc.c intel: Refactor the common chipset detection/override 2012-07-23 21:55:46 +01:00
sna_video_hwmc.h
sna_video_overlay.c intel: fix video xvPipe range check 2012-08-12 20:52:12 +10:00
sna_video_sprite.c sna/video: Use the scanout flag and FB id for sprite framebuffers 2012-09-05 10:56:18 +01:00
sna_video_textured.c sna/video: Protect against attempting to use TexturedVideo whilst wedged 2012-07-26 15:20:05 +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.