I just force-pushed my branch with some changes as per Dave to more explicitly enable implicit sync when allocating memory objects.
On Thu, Nov 16, 2017 at 1:28 PM, Jason Ekstrand <[email protected]> wrote: > This patch series is the combined brain-child of Dave and myself. The > objective is to rewrite Vulkan WSI to look as much like a layer as possible > and to reduce the driver <-> WSI interface. We try very hard to have as > many of the WSI details as possible in common code and to use standard > Vulkan interfaces for everything. Among other things, this means that > prime support is now implemented in an entirely driver-agnostic way and the > driver doesn't even know it's happening. As a side-effect anv now has > prime support. > > Eventually, someone could pull what's left out into a proper layer and we > could drop WSI support from our drivers entirely. There are a fiew pieces > of work that would be required to do this: > > 1) Write all of the annoying layer bits. There are some short-cuts that > we can take because we're not in a layer and those will have to go. > > 2) Define a VK_MESA_legacy_swapchain_image extension to replace the hack > introduced in patch 8. > > 3) It looks like modifiers support will land before the official Vulkan > extensions get finished. It will have to be ported to the official > extensions. > > 4) Figure out what to do about the fence in AcquireNextImage. In a future > world of explicit synchronization, we can just import the sync_file > from X or the Wayland compositor, but with implicit sync like we have > today, it's a bit harder. Right now, the helper in wsi_common does > nothing with it and trusts the caller to handle it. > > The two drivers handle this differently today. In anv, we do a dummy > QueueSubmit to trigger the fence while radv triggers it a bit more > manually. In both cases, we trigger the fence immediately and trust in > the GEM's implicit synchronization to sort things out for us. We can't > use the anv method as directly with radv because no queue is passed in > so we don't know what queue to use in the dummy QueueSubmit. (In ANV, > we only have the one queue so that isn't a problem.) > > > Dave, I tried to pull patches from your series where practical but, because > we did things in a different order, it frequently wasn't. If you want to > claim credit for any of these patches, just say so and I'll --reset-author > on them. > > The series can be found on freedesktop.org here: > > https://cgit.freedesktop.org/~jekstrand/mesa/log/?h=wip/vulkan-wsi-prime > > > Cc: Dave Airlie <[email protected]> > Cc: Daniel Stone <[email protected]> > Cc: Chad Versace <[email protected]> > Cc: James Jones <[email protected]> > > Daniel Stone (1): > vulkan/wsi: Add a wsi_image structure > > Dave Airlie (4): > vulkan/wsi: use function ptr definitions from the spec. > radv/wsi: drop allocate memory special case > radv/wsi: Move the guts of QueuePresent to wsi common > vulkan/wsi: move swapchain create/destroy to common code > > Jason Ekstrand (23): > vulkan/wsi/x11: Handle the geometry check earlier in create_swapchain > vulkan/wsi: Add a wsi_device_init function > vulkan/wsi: Add wsi_swapchain_init/finish functions > vulkan/wsi: Implement prime in a completely generic way > anv/image: Add a return value to bind_memory_plane > vulkan/wsi: Add a mock image creation extension > anv/image: Implement the wsi "extension" > radv/image: Implement the wsi "extension" > vulkan/wsi: Do image creation in common code > vulkan/wsi: Add a WSI_FROM_HANDLE macro > vulkan/wsi: Refactor result handling in queue_present > vulkan/wsi: Only wait on semaphores on the first swapchain > vulkan/wsi: Set a proper pWaitDstStageMask on the dummy submit > anv/wsi: Use the common QueuePresent code > anv/wsi: Enable prime support > vulkan/wsi: Move get_images into common code > vulkan/wsi: Move prime blitting into queue_present > vulkan/wsi: Add a helper for AcquireNextImage > vulkan/wsi: Move wsi_swapchain to wsi_common_private.h > vulkan/wsi: Drop the can_handle_different_gpu parameter from > get_support > vulkan/wsi: Add wrappers for all of the surface queries > vulkan/wsi: Drop some unneeded cruft from the API > vulkan/wsi: Initialize individual WSI interfaces in wsi_device_init > > src/amd/vulkan/radv_device.c | 18 +- > src/amd/vulkan/radv_image.c | 15 +- > src/amd/vulkan/radv_private.h | 10 - > src/amd/vulkan/radv_wsi.c | 472 +++------------------- > src/intel/vulkan/anv_image.c | 71 +++- > src/intel/vulkan/anv_private.h | 2 + > src/intel/vulkan/anv_wsi.c | 347 +++------------- > src/vulkan/Makefile.sources | 2 + > src/vulkan/wsi/meson.build | 2 + > src/vulkan/wsi/wsi_common.c | 763 ++++++++++++++++++++++++++++++ > ++++++ > src/vulkan/wsi/wsi_common.h | 223 ++++++----- > src/vulkan/wsi/wsi_common_private.h | 157 ++++++++ > src/vulkan/wsi/wsi_common_wayland.c | 90 ++--- > src/vulkan/wsi/wsi_common_x11.c | 150 ++----- > 14 files changed, 1310 insertions(+), 1012 deletions(-) > create mode 100644 src/vulkan/wsi/wsi_common.c > create mode 100644 src/vulkan/wsi/wsi_common_private.h > > -- > 2.5.0.400.gff86faf > >
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
