mesa/src/microsoft/vulkan
Boris Brezillon 8d54a44028 dzn: Use the vk_sync_binary abstraction
D3D12 fences are capable of handling binary operations, but the
current dzn_sync implementation doesn't match vk_sync expectations
when sync objects are used to back semaphores. In that case, the wait
operation is supposed to set the sync object back to an unsignaled
state after the wait succeeded, but there's no way of knowing what
the sync object is used for, and this implicit-reset behavior is not
expected on fence objects, which also use the sync primitive.
That means we currently have a semaphore implementation that works
only once, and, as soon as the semaphore object has been signaled it
stays in a signaled state until it's destroyed.

We could extend the sync framework to pass an
implicit-reset-after-wait flag, but, given no one else seems to
need that, it's probably simpler to drop the binary sync
capability and rely on the binary-on-top-of-timeline emulation provided
by the core.

Fixes: a012b21964 ("microsoft: Initial vulkan-on-12 driver")
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16629>
(cherry picked from commit 1eaba553e2)
2022-06-01 14:10:28 -07:00
..
dzn_cmd_buffer.cpp dzn: Pass the dzn_event pointer to _mesa_hash_table_insert() 2022-04-24 21:04:54 -07:00
dzn_descriptor_set.cpp dzn: Fix loop condition in dzn_descriptor_set_copy() 2022-04-11 07:04:24 +00:00
dzn_device.cpp dzn: Use the vk_sync_binary abstraction 2022-06-01 14:10:28 -07:00
dzn_image.cpp dzn: Support independent depth/stencil access 2022-04-08 11:54:44 +00:00
dzn_meta.cpp dzn: Fix the STATIC_ASSERT() in dzn_meta_blits_get_context() 2022-04-24 21:04:54 -07:00
dzn_nir.c dzn: drop needless includes 2022-04-07 19:53:03 +00:00
dzn_nir.h
dzn_pass.cpp dzn: Support independent depth/stencil access 2022-04-08 11:54:44 +00:00
dzn_pipeline.cpp dzn: Fix pipeline creation when rasterization is disabled 2022-04-08 11:54:43 +00:00
dzn_pipeline_cache.cpp dzn: drop incorrect return statement 2022-04-07 19:53:03 +00:00
dzn_private.h dzn: Use the vk_sync_binary abstraction 2022-06-01 14:10:28 -07:00
dzn_query.cpp
dzn_sync.cpp dzn: Use the vk_sync_binary abstraction 2022-06-01 14:10:28 -07:00
dzn_util.c dzn: Fix dzn_translate_viewport() when height < 0 2022-04-08 11:54:43 +00:00
dzn_util.cpp dzn: use dxil_validator 2022-04-07 00:00:45 +00:00
dzn_wsi.cpp
meson.build dozen: require c++20 for designated initializers 2022-04-05 16:58:56 +00:00
vulkan_dzn.def