On Sat, Nov 18, 2017 at 9:02 AM, Grazvydas Ignotas <nota...@gmail.com> wrote:
> On Sat, Nov 18, 2017 at 3:06 AM, Jason Ekstrand <ja...@jlekstrand.net> > wrote: > > On Fri, Nov 17, 2017 at 2:18 PM, Grazvydas Ignotas <nota...@gmail.com> > > wrote: > >> > >> 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 > > > > > > Thanks for testing! I've got a HSW+radeon box at home. I'll see if I > can > > get it fixed early next week. I did find a couple bugs by inspection > when I > > was working on getting modifiers working today. I've re-pushed if you > feel > > like trying again. Otherwise, I'll see if I can repro on my box. > > Seems to be the same as before. Assertion `!"No memory type found"' > starts hitting at "vulkan/wsi: Do image creation in common code". > I force-pushed the branch again with an added commit: "radv: Move wsi initialization later in physical_device_init" that fixes the memory type issue with radv. I've tested both radv + radeon and anv + radeon on my HSW + Rx550 and they both work now. I'm having a bit of trouble actually getting my system to start up on the Intel card so I'll have to leave testing radv on Intel for another day. --Jason > Gražvydas > > > > > --Jason > > > >> > >> 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/vulk > an-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