Add support for GL_EXT_semaphore

Submitted by Jon Turney on Nov. 2, 2017, 3:57 a.m.

Details

Reviewer None
Submitted Nov. 2, 2017, 3:57 a.m.
Last Updated Jan. 31, 2018, 3:20 p.m.
Revision 5

Cover Letter(s)

Revision 1
      This series adds radeonsi support for GL_EXT_semaphore.

GL_EXT_semaphore is used by steam's vrclient to synchronize access to shared
surfaces (vulkan <-> gl interop). It allows our gl vrclients to enqueue their
framebuffer surface without waiting for a glFinish().

If anyone has any suggestions on improvements for the implicit flush added in
patch 9 please let me know. Either a way to remove it, or a way to move it to
a codepath that is a bit more specific to radeonsi.

Test results for this series (pretty alpha quality auto testing):
https://lostgoat.me/gpuci/jenkins/blue/organizations/jenkins/amdgpu-reviews/detail/amdgpu-reviews/184/pipeline

Test results for each individual patch can also be found here (see 'Related
Changes' section):
https://gerrit.lostgoat.me/#/c/454/

And here is a baseline for test results for comparison:
https://lostgoat.me/gpuci/jenkins/blue/organizations/jenkins/amdgpu-master/detail/amdgpu-master/1269/tests

Tests include Vulkan CTS and piglit on Kaveri and Polaris 10.

I just kicked off the tests, so they might still show in a queued/in progress
state for a few hours. Hopefully my ryzen server and my test slaves survive the
unsupervised effort (*fingers crossed it doesn't catch fire while I sleep*).

Patches 1-12 add support for semaphore wait/signal/import
Patch 13 implements buffer/texture barriers
Patches 14-16 implement layout transitions
Patch 17 exposes the extension

Andres Rodriguez (17):
  gallium: introduce PIPE_CAP_SEMAPHORE
  mesa/st: expose EXT_semaphore and EXT_semaphore_fd
  mesa: add support for semaphore object creation/import/delete
  mesa: add semaphore parameter stub
  gallium: introduce semaphore object
  u_threaded_context: add support for semaphore wait/signal
  mesa/st: add support for semaphore object create/import/delete
  mesa: add support for semaphore object signal/wait
  mesa/st: add support for waiting for semaphore objects
  mesa: minor tidy up for memory object error strings
  winsys/amdgpu: add support for syncobj signaling
  radeonsi: implement semaphore operations
  mesa: implement buffer/texture barriers for semaphore wait/signal
  gallium: add transition_resource call
  mesa/st: hook up resource transitions for semaphore calls
  radeonsi: implement pipe transition_resource callback
  radeonsi: advertise support for GL_EXT_semaphore

 src/gallium/auxiliary/util/u_threaded_context.c    |  52 ++++
 .../auxiliary/util/u_threaded_context_calls.h      |   1 +
 src/gallium/docs/source/screen.rst                 |   1 +
 src/gallium/drivers/ddebug/dd_context.c            |  23 ++
 src/gallium/drivers/ddebug/dd_screen.c             |  25 ++
 src/gallium/drivers/etnaviv/etnaviv_screen.c       |   1 +
 src/gallium/drivers/freedreno/freedreno_screen.c   |   1 +
 src/gallium/drivers/i915/i915_screen.c             |   1 +
 src/gallium/drivers/llvmpipe/lp_screen.c           |   1 +
 src/gallium/drivers/nouveau/nv30/nv30_screen.c     |   1 +
 src/gallium/drivers/nouveau/nv50/nv50_screen.c     |   1 +
 src/gallium/drivers/nouveau/nvc0/nvc0_screen.c     |   1 +
 src/gallium/drivers/r300/r300_screen.c             |   1 +
 src/gallium/drivers/r600/r600_pipe.c               |   1 +
 src/gallium/drivers/radeon/r600_pipe_common.c      |  52 ++++
 src/gallium/drivers/radeon/r600_pipe_common.h      |   5 +
 src/gallium/drivers/radeon/radeon_winsys.h         |  12 +
 src/gallium/drivers/radeonsi/si_blit.c             |  11 +
 src/gallium/drivers/radeonsi/si_pipe.c             |   3 +
 src/gallium/drivers/softpipe/sp_screen.c           |   1 +
 src/gallium/drivers/svga/svga_screen.c             |   1 +
 src/gallium/drivers/swr/swr_screen.cpp             |   1 +
 src/gallium/drivers/trace/tr_context.c             |  36 +++
 src/gallium/drivers/trace/tr_screen.c              |  39 +++
 src/gallium/drivers/vc4/vc4_screen.c               |   1 +
 src/gallium/drivers/virgl/virgl_screen.c           |   1 +
 src/gallium/include/pipe/p_context.h               |  36 +++
 src/gallium/include/pipe/p_defines.h               |  12 +
 src/gallium/include/pipe/p_screen.h                |  22 ++
 src/gallium/include/pipe/p_state.h                 |   8 +
 src/gallium/winsys/amdgpu/drm/amdgpu_cs.c          |  81 +++++-
 src/gallium/winsys/amdgpu/drm/amdgpu_cs.h          |   4 +
 src/mesa/Makefile.sources                          |   2 +
 src/mesa/drivers/common/driverfuncs.c              |   3 +
 src/mesa/main/dd.h                                 |  58 +++++
 src/mesa/main/extensions_table.h                   |   2 +
 src/mesa/main/externalobjects.c                    | 274 +++++++++++++++++++--
 src/mesa/main/externalobjects.h                    |  34 ++-
 src/mesa/main/mtypes.h                             |   9 +
 src/mesa/main/shared.c                             |  17 ++
 src/mesa/meson.build                               |   2 +
 src/mesa/state_tracker/st_cb_semaphoreobjects.c    | 164 ++++++++++++
 src/mesa/state_tracker/st_cb_semaphoreobjects.h    |  25 ++
 src/mesa/state_tracker/st_context.c                |   2 +
 src/mesa/state_tracker/st_extensions.c             |   2 +
 45 files changed, 1012 insertions(+), 19 deletions(-)
 create mode 100644 src/mesa/state_tracker/st_cb_semaphoreobjects.c
 create mode 100644 src/mesa/state_tracker/st_cb_semaphoreobjects.h
    
Revision 2
      Sorry for the long time to get this v2 out, past month has been
a bit hectic.

This incorporates the feedback I received from mareko and nha on
the previous iteration.

Some of the notable changes:
  - Merged fences and semaphores at the gallium level
  - Fixed latency due to delayed flushing
  - Moved the flush from gallium into the radeonsi pipe
  - Added tests (on piglit mailing list)
  - Some fixups for bugs found with the tests are at the end of the series

Thanks for taking the time to review.

Kind Regards,
Andres

Andres Rodriguez (22):
  gallium: add type parameter to create_fence_fd
  gallium: rename pipe fences to semaphores
  gallium: documentation updates for fence->semaphore rename
  gallium: introduce PIPE_CAP_SEMAPHORE_SIGNAL
  gallium: introduce PIPE_FD_TYPE_SYNCOBJ
  gallium: add semaphore_server_signal()
  u_threaded_context: add support for semaphore_server_signal
  mesa/st: introduce EXT_semaphore and EXT_semaphore_fd v2
  mesa: add support for semaphore object creation/import/delete v2
  mesa/st: add support for semaphore object create/import/delete
  mesa: add semaphore parameter stub v2
  mesa: add support for semaphore object signal/wait v2
  mesa/st: add support for semaphore object signal/wait v2
  mesa: implement buffer/texture barriers for semaphore signal/wait v2
  winsys/amdgpu: add support for syncobj signaling v2
  radeonsi: add support for importing PIPE_FD_TYPE_SYNCOBJ semaphores
  radeonsi: implement semaphore_server_signal
  radeonsi: fix semaphore_server_sync() holding up extra work
  radeonsi: advertise support for GL_EXT_semaphore
  mesa: fix error codes for importing memory/semaphore FDs
  mesa: fix glGet for ext_external_objects parameters
  mesa: check for invalid index on UUID glGet queries

 src/gallium/auxiliary/pipebuffer/pb_buffer.h       |   6 +-
 .../auxiliary/pipebuffer/pb_buffer_fenced.c        |  20 +-
 .../auxiliary/pipebuffer/pb_buffer_fenced.h        |  14 +-
 .../auxiliary/pipebuffer/pb_buffer_malloc.c        |   2 +-
 src/gallium/auxiliary/pipebuffer/pb_bufmgr_cache.c |   2 +-
 src/gallium/auxiliary/pipebuffer/pb_bufmgr_debug.c |   2 +-
 src/gallium/auxiliary/pipebuffer/pb_bufmgr_mm.c    |   2 +-
 .../auxiliary/pipebuffer/pb_bufmgr_ondemand.c      |   2 +-
 src/gallium/auxiliary/pipebuffer/pb_bufmgr_pool.c  |   2 +-
 src/gallium/auxiliary/pipebuffer/pb_bufmgr_slab.c  |   2 +-
 src/gallium/auxiliary/pipebuffer/pb_validate.c     |   2 +-
 src/gallium/auxiliary/pipebuffer/pb_validate.h     |   4 +-
 src/gallium/auxiliary/util/u_tests.c               |  55 ++---
 src/gallium/auxiliary/util/u_threaded_context.c    |  57 ++++--
 src/gallium/auxiliary/util/u_threaded_context.h    |  10 +-
 .../auxiliary/util/u_threaded_context_calls.h      |   3 +-
 src/gallium/docs/source/context.rst                |  65 ++++--
 src/gallium/docs/source/screen.rst                 |   2 +
 src/gallium/drivers/ddebug/dd_draw.c               |  24 +--
 src/gallium/drivers/ddebug/dd_pipe.h               |   6 +-
 src/gallium/drivers/ddebug/dd_screen.c             |  18 +-
 src/gallium/drivers/etnaviv/etnaviv_context.c      |   8 +-
 src/gallium/drivers/etnaviv/etnaviv_fence.c        |  40 ++--
 src/gallium/drivers/etnaviv/etnaviv_fence.h        |  15 +-
 src/gallium/drivers/etnaviv/etnaviv_screen.c       |   3 +-
 src/gallium/drivers/freedreno/freedreno_batch.c    |   4 +-
 src/gallium/drivers/freedreno/freedreno_batch.h    |   2 +-
 src/gallium/drivers/freedreno/freedreno_context.c  |  16 +-
 src/gallium/drivers/freedreno/freedreno_fence.c    |  42 ++--
 src/gallium/drivers/freedreno/freedreno_fence.h    |  28 +--
 src/gallium/drivers/freedreno/freedreno_gmem.c     |   2 +-
 src/gallium/drivers/freedreno/freedreno_screen.c   |   9 +-
 src/gallium/drivers/i915/i915_batch.h              |   2 +-
 src/gallium/drivers/i915/i915_flush.c              |   4 +-
 src/gallium/drivers/i915/i915_screen.c             |  21 +-
 src/gallium/drivers/i915/i915_winsys.h             |  16 +-
 src/gallium/drivers/llvmpipe/lp_context.c          |   2 +-
 src/gallium/drivers/llvmpipe/lp_fence.h            |   2 +-
 src/gallium/drivers/llvmpipe/lp_flush.c            |   8 +-
 src/gallium/drivers/llvmpipe/lp_flush.h            |   4 +-
 src/gallium/drivers/llvmpipe/lp_query.c            |   2 +-
 src/gallium/drivers/llvmpipe/lp_scene.c            |   4 +-
 src/gallium/drivers/llvmpipe/lp_screen.c           |  19 +-
 src/gallium/drivers/llvmpipe/lp_setup.c            |  12 +-
 src/gallium/drivers/llvmpipe/lp_setup.h            |   4 +-
 src/gallium/drivers/noop/noop_pipe.c               |  16 +-
 src/gallium/drivers/nouveau/nouveau_fence.h        |   2 +-
 src/gallium/drivers/nouveau/nouveau_screen.c       |  12 +-
 src/gallium/drivers/nouveau/nv30/nv30_context.c    |   2 +-
 src/gallium/drivers/nouveau/nv30/nv30_screen.c     |   3 +-
 src/gallium/drivers/nouveau/nv50/nv50_context.c    |   2 +-
 src/gallium/drivers/nouveau/nv50/nv50_screen.c     |   3 +-
 src/gallium/drivers/nouveau/nvc0/nvc0_context.c    |   2 +-
 src/gallium/drivers/nouveau/nvc0/nvc0_screen.c     |   3 +-
 src/gallium/drivers/r300/r300_context.c            |   2 +-
 src/gallium/drivers/r300/r300_context.h            |   2 +-
 src/gallium/drivers/r300/r300_flush.c              |   8 +-
 src/gallium/drivers/r300/r300_query.c              |   2 +-
 src/gallium/drivers/r300/r300_screen.c             |  19 +-
 src/gallium/drivers/r600/r600_hw_context.c         |   4 +-
 src/gallium/drivers/r600/r600_pipe.c               |   3 +-
 src/gallium/drivers/r600/r600_pipe.h               |   2 +-
 src/gallium/drivers/r600/r600_pipe_common.c        |  62 +++---
 src/gallium/drivers/r600/r600_pipe_common.h        |   6 +-
 src/gallium/drivers/r600/r600_query.c              |   6 +-
 src/gallium/drivers/r600/radeon_vce.c              |   2 +-
 src/gallium/drivers/radeon/r600_pipe_common.c      |  10 +-
 src/gallium/drivers/radeon/r600_pipe_common.h      |   6 +-
 src/gallium/drivers/radeon/r600_query.c            |   6 +-
 src/gallium/drivers/radeon/radeon_vce.c            |   2 +-
 src/gallium/drivers/radeon/radeon_vcn_enc.c        |   2 +-
 src/gallium/drivers/radeon/radeon_winsys.h         |  30 ++-
 src/gallium/drivers/radeonsi/si_fence.c            | 181 +++++++++++------
 src/gallium/drivers/radeonsi/si_get.c              |   5 +-
 src/gallium/drivers/radeonsi/si_hw_context.c       |   6 +-
 src/gallium/drivers/radeonsi/si_pipe.c             |   3 +-
 src/gallium/drivers/radeonsi/si_pipe.h             |   4 +-
 src/gallium/drivers/rbug/rbug_context.c            |   2 +-
 src/gallium/drivers/rbug/rbug_screen.c             |  18 +-
 src/gallium/drivers/softpipe/sp_fence.c            |  14 +-
 src/gallium/drivers/softpipe/sp_flush.c            |  10 +-
 src/gallium/drivers/softpipe/sp_flush.h            |   6 +-
 src/gallium/drivers/softpipe/sp_screen.c           |   3 +-
 src/gallium/drivers/svga/svga_context.c            |  16 +-
 src/gallium/drivers/svga/svga_context.h            |   2 +-
 src/gallium/drivers/svga/svga_pipe_flush.c         |  28 +--
 src/gallium/drivers/svga/svga_pipe_query.c         |  16 +-
 src/gallium/drivers/svga/svga_resource_texture.c   |   8 +-
 src/gallium/drivers/svga/svga_screen.c             |  29 +--
 src/gallium/drivers/svga/svga_screen_cache.c       |   6 +-
 src/gallium/drivers/svga/svga_screen_cache.h       |   4 +-
 src/gallium/drivers/svga/svga_winsys.h             |  26 +--
 src/gallium/drivers/swr/swr_context.cpp            |   4 +-
 src/gallium/drivers/swr/swr_draw.cpp               |  12 +-
 src/gallium/drivers/swr/swr_fence.cpp              |  22 +-
 src/gallium/drivers/swr/swr_fence.h                |  20 +-
 src/gallium/drivers/swr/swr_fence_work.cpp         |  10 +-
 src/gallium/drivers/swr/swr_fence_work.h           |   8 +-
 src/gallium/drivers/swr/swr_query.cpp              |  10 +-
 src/gallium/drivers/swr/swr_query.h                |   2 +-
 src/gallium/drivers/swr/swr_screen.cpp             |  11 +-
 src/gallium/drivers/swr/swr_screen.h               |   2 +-
 src/gallium/drivers/swr/swr_state.cpp              |   2 +-
 src/gallium/drivers/trace/tr_context.c             |   2 +-
 src/gallium/drivers/trace/tr_screen.c              |  24 +--
 src/gallium/drivers/vc4/vc4_context.c              |   6 +-
 src/gallium/drivers/vc4/vc4_fence.c                |  14 +-
 src/gallium/drivers/vc4/vc4_screen.c               |   3 +-
 src/gallium/drivers/vc5/vc5_context.c              |   6 +-
 src/gallium/drivers/vc5/vc5_fence.c                |  14 +-
 src/gallium/drivers/vc5/vc5_screen.c               |   2 +-
 src/gallium/drivers/virgl/virgl_context.c          |   2 +-
 src/gallium/drivers/virgl/virgl_screen.c           |  19 +-
 src/gallium/drivers/virgl/virgl_winsys.h           |  12 +-
 src/gallium/include/pipe/p_context.h               |  49 +++--
 src/gallium/include/pipe/p_defines.h               |  11 +-
 src/gallium/include/pipe/p_screen.h                |  40 ++--
 src/gallium/include/pipe/p_video_codec.h           |   2 +-
 src/gallium/include/state_tracker/opencl_interop.h |   2 +-
 src/gallium/include/state_tracker/st_api.h         |   4 +-
 src/gallium/state_trackers/clover/api/interop.cpp  |   2 +-
 src/gallium/state_trackers/clover/core/event.cpp   |  10 +-
 src/gallium/state_trackers/clover/core/event.hpp   |   8 +-
 src/gallium/state_trackers/clover/core/queue.cpp   |   4 +-
 src/gallium/state_trackers/dri/dri2.c              |   6 +-
 src/gallium/state_trackers/dri/dri_drawable.c      |  22 +-
 src/gallium/state_trackers/dri/dri_drawable.h      |   2 +-
 src/gallium/state_trackers/dri/dri_helpers.c       |  20 +-
 src/gallium/state_trackers/glx/xlib/xm_api.c       |   6 +-
 src/gallium/state_trackers/nine/swapchain9.c       |  38 ++--
 src/gallium/state_trackers/nine/swapchain9.h       |   2 +-
 src/gallium/state_trackers/vdpau/output.c          |   2 +-
 src/gallium/state_trackers/vdpau/presentation.c    |  10 +-
 src/gallium/state_trackers/vdpau/vdpau_private.h   |   2 +-
 src/gallium/state_trackers/wgl/stw_context.c       |   2 +-
 src/gallium/state_trackers/xa/xa_context.c         |  10 +-
 src/gallium/state_trackers/xa/xa_priv.h            |   4 +-
 src/gallium/state_trackers/xvmc/surface.c          |   4 +-
 src/gallium/state_trackers/xvmc/xvmc_private.h     |   4 +-
 src/gallium/tools/trace/dump_state.py              |   4 +-
 src/gallium/winsys/amdgpu/drm/amdgpu_bo.c          |  12 +-
 src/gallium/winsys/amdgpu/drm/amdgpu_bo.h          |   2 +-
 src/gallium/winsys/amdgpu/drm/amdgpu_cs.c          | 149 ++++++++++----
 src/gallium/winsys/amdgpu/drm/amdgpu_cs.h          |  20 +-
 src/gallium/winsys/i915/drm/i915_drm_batchbuffer.c |   4 +-
 src/gallium/winsys/i915/drm/i915_drm_fence.c       |  20 +-
 src/gallium/winsys/i915/drm/i915_drm_winsys.h      |   2 +-
 src/gallium/winsys/radeon/drm/radeon_drm_cs.c      |  42 ++--
 src/gallium/winsys/radeon/drm/radeon_drm_cs.h      |   4 +-
 .../winsys/svga/drm/pb_buffer_simple_fenced.c      |  20 +-
 src/gallium/winsys/svga/drm/vmw_buffer.c           |   2 +-
 src/gallium/winsys/svga/drm/vmw_context.c          |   8 +-
 src/gallium/winsys/svga/drm/vmw_fence.c            |  60 +++---
 src/gallium/winsys/svga/drm/vmw_fence.h            |  18 +-
 src/gallium/winsys/svga/drm/vmw_screen.h           |   4 +-
 src/gallium/winsys/svga/drm/vmw_screen_ioctl.c     |   6 +-
 src/gallium/winsys/svga/drm/vmw_screen_svga.c      |  40 ++--
 src/gallium/winsys/virgl/drm/virgl_drm_winsys.c    |  14 +-
 src/gallium/winsys/virgl/drm/virgl_drm_winsys.h    |   4 +-
 .../winsys/virgl/vtest/virgl_vtest_winsys.c        |  14 +-
 .../winsys/virgl/vtest/virgl_vtest_winsys.h        |   4 +-
 src/mesa/Makefile.sources                          |   2 +
 src/mesa/drivers/dri/i915/intel_syncobj.c          |   6 +-
 src/mesa/drivers/dri/i965/brw_sync.c               |  10 +-
 src/mesa/main/dd.h                                 |  58 ++++++
 src/mesa/main/extensions_table.h                   |   2 +
 src/mesa/main/externalobjects.c                    | 223 ++++++++++++++++++++-
 src/mesa/main/externalobjects.h                    |  31 ++-
 src/mesa/main/get.c                                |   7 +
 src/mesa/main/get_hash_params.py                   |   5 +
 src/mesa/main/mtypes.h                             |  10 +
 src/mesa/main/shared.c                             |  17 ++
 src/mesa/meson.build                               |   2 +
 src/mesa/state_tracker/st_cb_flush.c               |   8 +-
 src/mesa/state_tracker/st_cb_flush.h               |   4 +-
 src/mesa/state_tracker/st_cb_semaphoreobjects.c    | 129 ++++++++++++
 src/mesa/state_tracker/st_cb_semaphoreobjects.h    |  25 +++
 src/mesa/state_tracker/st_cb_syncobj.c             |  26 +--
 src/mesa/state_tracker/st_context.c                |   2 +
 src/mesa/state_tracker/st_extensions.c             |   4 +-
 src/mesa/state_tracker/st_manager.c                |   8 +-
 181 files changed, 1718 insertions(+), 962 deletions(-)
 create mode 100644 src/mesa/state_tracker/st_cb_semaphoreobjects.c
 create mode 100644 src/mesa/state_tracker/st_cb_semaphoreobjects.h
    
Revision 3
      Rebased on latest mesa and dropped the gallium fence->semaphore rename.

Andres Rodriguez (20):
  gallium: add type parameter to create_fence_fd
  gallium: introduce PIPE_CAP_SEMAPHORE_SIGNAL
  gallium: introduce PIPE_FD_TYPE_SYNCOBJ
  gallium: add fence_server_signal()
  u_threaded_context: add support for fence_server_signal v2
  mesa/st: introduce EXT_semaphore and EXT_semaphore_fd v2
  mesa: add support for semaphore object creation/import/delete v3
  mesa/st: add support for semaphore object create/import/delete v2
  mesa: add semaphore parameter stub v2
  mesa: add support for semaphore object signal/wait v2
  mesa/st: add support for semaphore object signal/wait v3
  mesa: implement buffer/texture barriers for semaphore signal/wait v2
  winsys/amdgpu: add support for syncobj signaling v3
  radeonsi: add support for importing PIPE_FD_TYPE_SYNCOBJ semaphores
  radeonsi: implement semaphore_server_signal v2
  radeonsi: fix fence_server_sync() holding up extra work v2
  radeonsi: advertise support for GL_EXT_semaphore
  mesa: fix error codes for importing memory/semaphore FDs
  mesa: fix glGet for ext_external_objects parameters
  mesa: check for invalid index on UUID glGet queries

 src/gallium/auxiliary/util/u_tests.c               |   7 +-
 src/gallium/auxiliary/util/u_threaded_context.c    |  25 ++-
 .../auxiliary/util/u_threaded_context_calls.h      |   1 +
 src/gallium/docs/source/context.rst                |  31 +++
 src/gallium/docs/source/screen.rst                 |   2 +
 src/gallium/drivers/etnaviv/etnaviv_fence.c        |   4 +-
 src/gallium/drivers/etnaviv/etnaviv_fence.h        |   3 +-
 src/gallium/drivers/etnaviv/etnaviv_screen.c       |   1 +
 src/gallium/drivers/freedreno/freedreno_fence.c    |   4 +-
 src/gallium/drivers/freedreno/freedreno_fence.h    |   3 +-
 src/gallium/drivers/freedreno/freedreno_screen.c   |   1 +
 src/gallium/drivers/i915/i915_screen.c             |   1 +
 src/gallium/drivers/llvmpipe/lp_screen.c           |   1 +
 src/gallium/drivers/nouveau/nv30/nv30_screen.c     |   1 +
 src/gallium/drivers/nouveau/nv50/nv50_screen.c     |   1 +
 src/gallium/drivers/nouveau/nvc0/nvc0_screen.c     |   1 +
 src/gallium/drivers/r300/r300_screen.c             |   1 +
 src/gallium/drivers/r600/r600_pipe.c               |   1 +
 src/gallium/drivers/radeon/radeon_winsys.h         |  12 ++
 src/gallium/drivers/radeonsi/si_fence.c            | 113 ++++++++---
 src/gallium/drivers/radeonsi/si_get.c              |   3 +
 src/gallium/drivers/radeonsi/si_pipe.c             |   1 -
 src/gallium/drivers/softpipe/sp_screen.c           |   1 +
 src/gallium/drivers/svga/svga_pipe_flush.c         |   4 +-
 src/gallium/drivers/svga/svga_screen.c             |   1 +
 src/gallium/drivers/swr/swr_screen.cpp             |   1 +
 src/gallium/drivers/vc4/vc4_screen.c               |   1 +
 src/gallium/drivers/virgl/virgl_screen.c           |   1 +
 src/gallium/include/pipe/p_context.h               |  14 +-
 src/gallium/include/pipe/p_defines.h               |   7 +
 src/gallium/state_trackers/dri/dri_helpers.c       |   2 +-
 src/gallium/winsys/amdgpu/drm/amdgpu_cs.c          |  83 +++++++-
 src/gallium/winsys/amdgpu/drm/amdgpu_cs.h          |   4 +
 src/mesa/Makefile.sources                          |   2 +
 src/mesa/main/dd.h                                 |  58 ++++++
 src/mesa/main/extensions_table.h                   |   2 +
 src/mesa/main/externalobjects.c                    | 224 ++++++++++++++++++++-
 src/mesa/main/externalobjects.h                    |  31 ++-
 src/mesa/main/get.c                                |   7 +
 src/mesa/main/get_hash_params.py                   |   5 +
 src/mesa/main/mtypes.h                             |  10 +
 src/mesa/main/shared.c                             |  17 ++
 src/mesa/meson.build                               |   2 +
 src/mesa/state_tracker/st_cb_semaphoreobjects.c    | 129 ++++++++++++
 src/mesa/state_tracker/st_cb_semaphoreobjects.h    |  25 +++
 src/mesa/state_tracker/st_context.c                |   2 +
 src/mesa/state_tracker/st_extensions.c             |   2 +
 47 files changed, 805 insertions(+), 48 deletions(-)
 create mode 100644 src/mesa/state_tracker/st_cb_semaphoreobjects.c
 create mode 100644 src/mesa/state_tracker/st_cb_semaphoreobjects.h
    

Revisions

Patches download mbox

# Name Submitter State A F R T
[01/22] gallium: add type parameter to create_fence_fd Andres Rodriguez New
[02/22] gallium: rename pipe fences to semaphores Andres Rodriguez New
[03/22] gallium: documentation updates for fence->semaphore rename Andres Rodriguez New
[04/22] gallium: introduce PIPE_CAP_SEMAPHORE_SIGNAL Andres Rodriguez New
[05/22] gallium: introduce PIPE_FD_TYPE_SYNCOBJ Andres Rodriguez Accepted
[06/22] gallium: add semaphore_server_signal() Andres Rodriguez New
[07/22] u_threaded_context: add support for semaphore_server_signal Andres Rodriguez New
[08/22] mesa/st: introduce EXT_semaphore and EXT_semaphore_fd v2 Andres Rodriguez New
[09/22] mesa: add support for semaphore object creation/import/delete v2 Andres Rodriguez New
[10/22] mesa/st: add support for semaphore object create/import/delete Andres Rodriguez New
[11/22] mesa: add semaphore parameter stub v2 Andres Rodriguez Accepted
[12/22] mesa: add support for semaphore object signal/wait v2 Andres Rodriguez New
[13/22] mesa/st: add support for semaphore object signal/wait v2 Andres Rodriguez New
[14/22] mesa: implement buffer/texture barriers for semaphore signal/wait v2 Andres Rodriguez New
[15/22] winsys/amdgpu: add support for syncobj signaling v2 Andres Rodriguez New
[16/22] radeonsi: add support for importing PIPE_FD_TYPE_SYNCOBJ semaphores Andres Rodriguez New
[17/22] radeonsi: implement semaphore_server_signal Andres Rodriguez New
[18/22] radeonsi: fix semaphore_server_sync() holding up extra work Andres Rodriguez New
[19/22] radeonsi: advertise support for GL_EXT_semaphore Andres Rodriguez New
[20/22] mesa: fix error codes for importing memory/semaphore FDs Andres Rodriguez Accepted
[21/22] mesa: fix glGet for ext_external_objects parameters Andres Rodriguez Accepted
[22/22] mesa: check for invalid index on UUID glGet queries Andres Rodriguez Accepted

Patches download mbox

# Name Submitter State A F R T
[01/20] gallium: add type parameter to create_fence_fd Andres Rodriguez Accepted
[02/20] gallium: introduce PIPE_CAP_SEMAPHORE_SIGNAL Andres Rodriguez New
[03/20] gallium: introduce PIPE_FD_TYPE_SYNCOBJ Andres Rodriguez New
[04/20] gallium: add fence_server_signal() Andres Rodriguez New
[05/20] u_threaded_context: add support for fence_server_signal v2 Andres Rodriguez Accepted
[06/20] mesa/st: introduce EXT_semaphore and EXT_semaphore_fd v2 Andres Rodriguez New
[07/20] mesa: add support for semaphore object creation/import/delete v3 Andres Rodriguez Accepted
[08/20] mesa/st: add support for semaphore object create/import/delete v2 Andres Rodriguez New
[09/20] mesa: add semaphore parameter stub v2 Andres Rodriguez New
[10/20] mesa: add support for semaphore object signal/wait v2 Andres Rodriguez New
[11/20] mesa/st: add support for semaphore object signal/wait v3 Andres Rodriguez New
[12/20] mesa: implement buffer/texture barriers for semaphore signal/wait v2 Andres Rodriguez New 1
[13/20] winsys/amdgpu: add support for syncobj signaling v3 Andres Rodriguez New
[14/20] radeonsi: add support for importing PIPE_FD_TYPE_SYNCOBJ semaphores Andres Rodriguez Accepted
[15/20] radeonsi: implement semaphore_server_signal v2 Andres Rodriguez Accepted
[16/20] radeonsi: fix fence_server_sync() holding up extra work v2 Andres Rodriguez New
[17/20] radeonsi: advertise support for GL_EXT_semaphore Andres Rodriguez New
[18/20] mesa: fix error codes for importing memory/semaphore FDs Andres Rodriguez New
[19/20] mesa: fix glGet for ext_external_objects parameters Andres Rodriguez New
[20/20] mesa: check for invalid index on UUID glGet queries Andres Rodriguez New

Patches download mbox

# Name Submitter State A F R T
[01/20] gallium: add type parameter to create_fence_fd Andres Rodriguez Accepted
[02/20] gallium: introduce PIPE_CAP_SEMAPHORE_SIGNAL Andres Rodriguez New
[03/20] gallium: introduce PIPE_FD_TYPE_SYNCOBJ Andres Rodriguez New
[04/20] gallium: add fence_server_signal() Andres Rodriguez New
[05/20] u_threaded_context: add support for fence_server_signal v2 Andres Rodriguez Accepted
[06/20] mesa/st: introduce EXT_semaphore and EXT_semaphore_fd v2 Andres Rodriguez New
[07/20] mesa: add support for semaphore object creation/import/delete v3 Andres Rodriguez Accepted
[08/20] mesa/st: add support for semaphore object create/import/delete v2 Andres Rodriguez New
[09/20] mesa: add semaphore parameter stub v2 Andres Rodriguez New
[10/20] mesa: add support for semaphore object signal/wait v3 Andres Rodriguez Accepted
[11/20] mesa/st: add support for semaphore object signal/wait v3 Andres Rodriguez New
[12/20] mesa: implement buffer/texture barriers for semaphore signal/wait v2 Andres Rodriguez New 1
[13/20] winsys/amdgpu: add support for syncobj signaling v3 Andres Rodriguez New
[14/20] radeonsi: add support for importing PIPE_FD_TYPE_SYNCOBJ semaphores Andres Rodriguez Accepted
[15/20] radeonsi: implement semaphore_server_signal v2 Andres Rodriguez Accepted
[16/20] radeonsi: fix fence_server_sync() holding up extra work v2 Andres Rodriguez New
[17/20] radeonsi: advertise support for GL_EXT_semaphore Andres Rodriguez New
[18/20] mesa: fix error codes for importing memory/semaphore FDs Andres Rodriguez New
[19/20] mesa: fix glGet for ext_external_objects parameters Andres Rodriguez New
[20/20] mesa: check for invalid index on UUID glGet queries Andres Rodriguez New

Patches download mbox

# Name Submitter State A F R T
[01/20] gallium: add type parameter to create_fence_fd Andres Rodriguez Accepted
[02/20] gallium: introduce PIPE_CAP_SEMAPHORE_SIGNAL Andres Rodriguez New
[03/20] gallium: introduce PIPE_FD_TYPE_SYNCOBJ Andres Rodriguez New
[04/20] gallium: add fence_server_signal() Andres Rodriguez New
[05/20] u_threaded_context: add support for fence_server_signal v2 Andres Rodriguez Accepted
[06/20] mesa/st: introduce EXT_semaphore and EXT_semaphore_fd v2 Andres Rodriguez New
[07/20] mesa: add support for semaphore object creation/import/delete v3 Andres Rodriguez Accepted
[08/20] mesa/st: add support for semaphore object create/import/delete v2 Andres Rodriguez New
[09/20] mesa: add semaphore parameter stub v2 Andres Rodriguez New
[10/20] mesa: add support for semaphore object signal/wait v3 Andres Rodriguez Accepted
[11/20] mesa/st: add support for semaphore object signal/wait v3 Andres Rodriguez New
[12/20] mesa: implement buffer/texture barriers for semaphore signal/wait v2 Jon Turney Superseded
[13/20] winsys/amdgpu: add support for syncobj signaling v3 Andres Rodriguez New
[14/20] radeonsi: add support for importing PIPE_FD_TYPE_SYNCOBJ semaphores Andres Rodriguez Accepted
[15/20] radeonsi: implement semaphore_server_signal v2 Andres Rodriguez Accepted
[16/20] radeonsi: fix fence_server_sync() holding up extra work v2 Andres Rodriguez New
[17/20] radeonsi: advertise support for GL_EXT_semaphore Andres Rodriguez New
[18/20] mesa: fix error codes for importing memory/semaphore FDs Andres Rodriguez New
[19/20] mesa: fix glGet for ext_external_objects parameters Andres Rodriguez New
[20/20] mesa: check for invalid index on UUID glGet queries Andres Rodriguez New