[Mesa-dev] [PATCH 0/6] Proposed GL_MESA_tile_raster_order extension

Eric Anholt eric at anholt.net
Fri Jul 28 02:29:58 UTC 2017


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



More information about the mesa-dev mailing list