I've tested this branch (rx470 + hd530) and it's only partially working: - display on amd, radv: always fails with "offscreen: wsi/wsi_common.c:172: select_memory_type: Assertion `!"No memory type found"' failed." - display on amd, anv: misrenders. For SaschaWillems, only multisampling, subpasses and triangle renders, other demos show black window with only text (fps counter and help) visible - display on intel, radv: same "No memory type found"' - display on intel, anv: seems to be ok
GraÅžvydas On Fri, Nov 17, 2017 at 4:44 AM, Jason Ekstrand <ja...@jlekstrand.net> wrote: > 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 <ja...@jlekstrand.net> > 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 <airl...@redhat.com> >> Cc: Daniel Stone <dani...@collabora.com> >> Cc: Chad Versace <chadvers...@chromium.org> >> Cc: James Jones <jajo...@nvidia.com> >> >> 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 > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev