diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index ecc91a86eb4..1dddcf9ee90 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -3779,7 +3779,9 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev zink_tracing = screen->instance_info->have_EXT_debug_utils && (u_trace_is_enabled(U_TRACE_TYPE_PERFETTO) || u_trace_is_enabled(U_TRACE_TYPE_MARKERS)); + simple_mtx_lock(screen->queue_lock); screen->frame_marker_emitted = zink_screen_debug_marker_begin(screen, "frame"); + simple_mtx_unlock(screen->queue_lock); return screen; @@ -3875,6 +3877,8 @@ void VKAPI_PTR zink_stub_function_not_loaded() bool zink_screen_debug_marker_begin(struct zink_screen *screen, const char *fmt, ...) { + simple_mtx_assert_locked(screen->queue_lock); + if (!zink_tracing) return false; @@ -3900,6 +3904,8 @@ zink_screen_debug_marker_begin(struct zink_screen *screen, const char *fmt, ...) void zink_screen_debug_marker_end(struct zink_screen *screen, bool emitted) { + simple_mtx_assert_locked(screen->queue_lock); + if (emitted) VKSCR(QueueEndDebugUtilsLabelEXT)(screen->queue); } diff --git a/src/gallium/drivers/zink/zink_screen.h b/src/gallium/drivers/zink/zink_screen.h index a8e03ebc972..7e6ce005030 100644 --- a/src/gallium/drivers/zink/zink_screen.h +++ b/src/gallium/drivers/zink/zink_screen.h @@ -203,8 +203,11 @@ zink_screen_get_pipeline_cache(struct zink_screen *screen, struct zink_program * void VKAPI_PTR zink_stub_function_not_loaded(void); +/** Requires queue_lock to be held */ bool zink_screen_debug_marker_begin(struct zink_screen *screen, const char *fmt, ...); + +/** Requires queue_lock to be held */ void zink_screen_debug_marker_end(struct zink_screen *screen, bool emitted);