This extension came from trying to get vc4's window movement in X11 to be as fast as it used to be with software rendering. Without the extension, overlapping copies need to first get read to a temporary, while with the extension the vc4 driver can be forced to rasterize the tiles in a specific order so that overlapping blits are safe.
My first attempt at the extension just made glBlitFramebuffer() have defined output for overlap. However, that meant that we were submitting a new batch per clip rectangle, and when you're not compositing (which is basically implied by overlapping blits) you're likely to have many cliprects for fancy rounded window borders. kernel: https://lists.freedesktop.org/archives/dri-devel/2017-July/148381.html glamor: https://github.com/anholt/xserver/commits/glamor-copyarea-overlap Eric Anholt (6): docs: Fix a typo in the old MESA_program_debug spec. docs: Update the list of used MESA GL enums. broadcom/vc4: Implement GL_ARB_texture_barrier. gallium: Expose a PIPE_CAP_TILE_RASTER_ORDER on vc4. mesa: Implement a new GL_MESA_tile_raster_order extension. vc4: Keep pipe_sampler_view->texture matching the original texture. docs/specs/MESA_tile_raster_order.spec | 101 ++++++++++++++++++++++++++ docs/specs/OLD/MESA_program_debug.spec | 2 +- docs/specs/enums.txt | 15 ++++ include/GL/glext.h | 6 ++ include/drm-uapi/vc4_drm.h | 17 ++++- src/gallium/drivers/vc4/vc4_blit.c | 20 +++++ src/gallium/drivers/vc4/vc4_context.c | 11 +++ src/gallium/drivers/vc4/vc4_context.h | 14 ++++ src/gallium/drivers/vc4/vc4_draw.c | 17 ++++- src/gallium/drivers/vc4/vc4_job.c | 7 ++ src/gallium/drivers/vc4/vc4_resource.c | 15 ++-- src/gallium/drivers/vc4/vc4_resource.h | 14 ---- src/gallium/drivers/vc4/vc4_screen.c | 36 +++++---- src/gallium/drivers/vc4/vc4_state.c | 46 ++++++++---- src/gallium/drivers/vc4/vc4_uniforms.c | 2 +- src/gallium/include/pipe/p_defines.h | 1 + src/gallium/include/pipe/p_state.h | 10 +++ src/mapi/glapi/gen/MESA_tile_raster_order.xml | 13 ++++ src/mapi/glapi/gen/Makefile.am | 1 + src/mesa/main/context.c | 2 + src/mesa/main/enable.c | 27 +++++++ src/mesa/main/extensions_table.h | 1 + src/mesa/main/mtypes.h | 13 ++++ src/mesa/state_tracker/st_atom_rasterizer.c | 5 ++ src/mesa/state_tracker/st_context.c | 1 + src/mesa/state_tracker/st_extensions.c | 1 + 26 files changed, 340 insertions(+), 58 deletions(-) create mode 100644 docs/specs/MESA_tile_raster_order.spec create mode 100644 src/mapi/glapi/gen/MESA_tile_raster_order.xml -- 2.13.3 _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
