[Mesa-dev] [PATCH 00/28] vulkan/wsi: Rework WSI to look a lot more like a layer
Grazvydas Ignotas
notasas at gmail.com
Fri Nov 17 22:18:09 UTC 2017
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 <jason at 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 <jason at 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 <airlied at redhat.com>
>> Cc: Daniel Stone <daniels at collabora.com>
>> Cc: Chad Versace <chadversary at chromium.org>
>> Cc: James Jones <jajones at 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list