diff options
Diffstat (limited to 'src/gallium/drivers/zink/zink_screen.c')
-rw-r--r-- | src/gallium/drivers/zink/zink_screen.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index cdfd7e76caa..06b9982ac2c 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -1246,6 +1246,9 @@ zink_destroy_screen(struct pipe_screen *pscreen) if (screen->prev_sem) VKSCR(DestroySemaphore)(screen->dev, screen->prev_sem, NULL); + if (screen->fence) + VKSCR(DestroyFence)(screen->dev, screen->fence, NULL); + if (screen->threaded) util_queue_destroy(&screen->flush_queue); @@ -2114,6 +2117,21 @@ zink_get_sample_pixel_grid(struct pipe_screen *pscreen, unsigned sample_count, static void init_driver_workarounds(struct zink_screen *screen) { + /* enable implicit sync for all non-mesa drivers */ + screen->driver_workarounds.implicit_sync = true; + switch (screen->info.driver_props.driverID) { + case VK_DRIVER_ID_MESA_RADV: + case VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA: + case VK_DRIVER_ID_MESA_LLVMPIPE: + case VK_DRIVER_ID_MESA_TURNIP: + case VK_DRIVER_ID_MESA_V3DV: + case VK_DRIVER_ID_MESA_PANVK: + case VK_DRIVER_ID_MESA_VENUS: + screen->driver_workarounds.implicit_sync = false; + break; + default: + break; + } screen->driver_workarounds.color_write_missing = !screen->info.have_EXT_color_write_enable; screen->driver_workarounds.depth_clip_control_missing = !screen->info.have_EXT_depth_clip_control; if (screen->info.driver_props.driverID == VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA) { |