| Up to higher level directory | |||
| Name | Date | Size | |
|---|---|---|---|
| atomic.h | 21-Mar-2014 | 3.1K | |
| blt.c | 20-Mar-2019 | 46.2K | |
| brw/ | 19-Feb-2026 | ||
| compiler.h | 20-Mar-2019 | 3.2K | |
| debug.h | 20-Mar-2019 | 1.5K | |
| fb/ | 19-Feb-2026 | ||
| gen2_render.c | 20-Mar-2019 | 100.5K | |
| gen2_render.h | 21-Mar-2014 | 28.1K | |
| gen3_render.c | 20-Mar-2019 | 168.7K | |
| gen3_render.h | 21-Mar-2014 | 55.1K | |
| gen4_common.c | 05-Nov-2014 | 2K | |
| gen4_common.h | 05-Nov-2014 | 1.7K | |
| gen4_render.c | 20-Mar-2019 | 88.3K | |
| gen4_render.h | 20-Mar-2019 | 78.5K | |
| gen4_source.c | 21-Mar-2014 | 5.6K | |
| gen4_source.h | 21-Mar-2014 | 424 | |
| gen4_vertex.c | 16-Jan-2015 | 77.8K | |
| gen4_vertex.h | 05-Nov-2014 | 514 | |
| gen5_render.c | 20-Mar-2019 | 92.8K | |
| gen5_render.h | 20-Mar-2019 | 81.9K | |
| gen6_common.c | 05-Nov-2014 | 2.1K | |
| gen6_common.h | 20-Mar-2019 | 5K | |
| gen6_render.c | 20-Mar-2019 | 101K | |
| gen6_render.h | 21-Mar-2014 | 58.7K | |
| gen7_render.c | 20-Mar-2019 | 105.7K | |
| gen7_render.h | 21-Mar-2014 | 53.2K | |
| gen8_eu.c | 16-Jan-2015 | 33.9K | |
| gen8_eu.h | 05-Nov-2014 | 886 | |
| gen8_render.c | 20-Mar-2019 | 106.3K | |
| gen8_render.h | 20-Mar-2019 | 45.2K | |
| gen8_vertex.c | 05-Nov-2014 | 9.2K | |
| gen8_vertex.h | 05-Nov-2014 | 337 | |
| gen9_render.c | 20-Mar-2019 | 108.8K | |
| gen9_render.h | 20-Mar-2019 | 45.5K | |
| git_version.h.in | 20-Mar-2019 | 47 | |
| kgem.c | 20-Mar-2019 | 203.2K | |
| kgem.h | 20-Mar-2019 | 22.9K | |
| kgem_debug.c | 05-Nov-2014 | 17.3K | |
| kgem_debug.h | 21-Mar-2014 | 1K | |
| kgem_debug_gen2.c | 05-Nov-2014 | 20.1K | |
| kgem_debug_gen3.c | 21-Mar-2014 | 43.3K | |
| kgem_debug_gen4.c | 20-Mar-2019 | 18.3K | |
| kgem_debug_gen5.c | 20-Mar-2019 | 17.8K | |
| kgem_debug_gen6.c | 20-Mar-2019 | 31K | |
| kgem_debug_gen7.c | 21-Mar-2014 | 17.3K | |
| Makefile.am | 20-Mar-2019 | 3.7K | |
| Makefile.in | 20-Mar-2019 | 40.8K | |
| meson.build | 20-Mar-2019 | 2.7K | |
| README | 21-Mar-2014 | 1.7K | |
| rop.h | 21-Mar-2014 | 6.3K | |
| sna.h | 20-Mar-2019 | 35.2K | |
| sna_accel.c | 15-Jul-2022 | 472K | |
| sna_acpi.c | 20-Mar-2019 | 5.1K | |
| sna_blt.c | 20-Mar-2019 | 115K | |
| sna_composite.c | 20-Mar-2019 | 32.7K | |
| sna_cpu.c | 05-Nov-2014 | 2.9K | |
| sna_cpuid.h | 05-Nov-2014 | 2.1K | |
| sna_damage.c | 05-Nov-2014 | 45.3K | |
| sna_damage.h | 20-Mar-2019 | 9K | |
| sna_display.c | 20-Mar-2019 | 247.5K | |
| sna_display_fake.c | 20-Mar-2019 | 8.5K | |
| sna_dri2.c | 20-Mar-2019 | 102.7K | |
| sna_dri3.c | 20-Mar-2019 | 10.6K | |
| sna_driver.c | 20-Mar-2019 | 36.6K | |
| sna_glyphs.c | 20-Mar-2019 | 60.3K | |
| sna_gradient.c | 05-Nov-2014 | 12K | |
| sna_io.c | 20-Mar-2019 | 50.4K | |
| sna_module.h | 21-Mar-2014 | 54 | |
| sna_present.c | 20-Mar-2019 | 27K | |
| sna_reg.h | 05-Nov-2014 | 2.8K | |
| sna_render.c | 20-Mar-2019 | 62.5K | |
| sna_render.h | 20-Mar-2019 | 22.7K | |
| sna_render_inline.h | 20-Mar-2019 | 9.3K | |
| sna_stream.c | 05-Nov-2014 | 4K | |
| sna_threads.c | 05-Nov-2014 | 8.2K | |
| sna_tiling.c | 20-Mar-2019 | 31.4K | |
| sna_transform.c | 16-Jan-2015 | 5.4K | |
| sna_trapezoids.c | 16-Jan-2015 | 31.9K | |
| sna_trapezoids.h | 16-Jan-2015 | 10.8K | |
| sna_trapezoids_boxes.c | 20-Mar-2019 | 38.5K | |
| sna_trapezoids_imprecise.c | 20-Mar-2019 | 93.7K | |
| sna_trapezoids_mono.c | 20-Mar-2019 | 41.1K | |
| sna_trapezoids_precise.c | 20-Mar-2019 | 85.7K | |
| sna_vertex.c | 05-Nov-2014 | 1.4K | |
| sna_video.c | 20-Mar-2019 | 25.1K | |
| sna_video.h | 12-Nov-2025 | 7.7K | |
| sna_video_hwmc.c | 16-Jan-2015 | 6.4K | |
| sna_video_hwmc.h | 21-Mar-2014 | 1.6K | |
| sna_video_overlay.c | 20-Mar-2019 | 22.3K | |
| sna_video_sprite.c | 20-Mar-2019 | 25.5K | |
| sna_video_textured.c | 20-Mar-2019 | 12.3K | |
| xassert.h | 20-Mar-2019 | 2K | |
1 SandyBridge's New Acceleration 2 ------------------------------ 3 4 The guiding principle behind the design is to avoid GPU context switches. 5 On SandyBridge (and beyond), these are especially pernicious because the 6 RENDER and BLT engine are now on different rings and require 7 synchronisation of the various execution units when switching contexts. 8 They were not cheap on early generation, but with the increasing 9 complexity of the GPU, avoiding such serialisations is important. 10 11 Furthermore, we try very hard to avoid migrating between the CPU and GPU. 12 Every pixmap (apart from temporary "scratch" surfaces which we intend to 13 use on the GPU) is created in system memory. All operations are then done 14 upon this shadow copy until we are forced to move it onto the GPU. Such 15 migration can only be first triggered by: setting the pixmap as the 16 scanout (we obviously need a GPU buffer here), using the pixmap as a DRI 17 buffer (the client expects to perform hardware acceleration and we do not 18 want to disappoint) and lastly using the pixmap as a RENDER target. This 19 last is chosen because when we know we are going to perform hardware 20 acceleration and will continue to do so without fallbacks, using the GPU 21 is much, much faster than the CPU. The heuristic I chose therefore was 22 that if the application uses RENDER, i.e. cairo, then it will only be 23 using those paths and not intermixing core drawing operations and so 24 unlikely to trigger a fallback. 25 26 The complicating case is front-buffer rendering. So in order to accommodate 27 using RENDER on an application whilst running xterm without a composite 28 manager redirecting all the pixmaps to backing surfaces, we have to 29 perform damage tracking to avoid excess migration of portions of the 30 buffer. 31