zink: add support for string-markers

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11004>
This commit is contained in:
Erik Faye-Lund
2021-05-26 14:03:58 +02:00
committed by Marge Bot
parent 6c03a85094
commit 1dfad514ea
3 changed files with 33 additions and 0 deletions
+28
View File
@@ -3018,6 +3018,31 @@ zink_context_is_resource_busy(struct pipe_screen *pscreen, struct pipe_resource
return true;
}
static void
zink_emit_string_marker(struct pipe_context *pctx,
const char *string, int len)
{
struct zink_screen *screen = zink_screen(pctx->screen);
struct zink_batch *batch = &zink_context(pctx)->batch;
/* make sure string is nul-terminated */
char buf[512], *temp = NULL;
if (len < ARRAY_SIZE(buf)) {
memcpy(buf, string, len);
buf[len] = '\0';
string = buf;
} else
string = temp = strndup(string, len);
VkDebugUtilsLabelEXT label = {
VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, NULL,
string,
{ 0 }
};
screen->vk_CmdInsertDebugUtilsLabelEXT(batch->state->cmdbuf, &label);
free(temp);
}
struct pipe_context *
zink_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags)
{
@@ -3086,6 +3111,9 @@ zink_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags)
ctx->base.set_stream_output_targets = zink_set_stream_output_targets;
ctx->base.flush_resource = zink_flush_resource;
ctx->base.emit_string_marker = zink_emit_string_marker;
zink_context_surface_init(&ctx->base);
zink_context_resource_init(&ctx->base);
zink_context_query_init(&ctx->base);
+4
View File
@@ -552,6 +552,9 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
case PIPE_CAP_POST_DEPTH_COVERAGE:
return screen->info.have_EXT_post_depth_coverage;
case PIPE_CAP_STRING_MARKER:
return screen->instance_info.have_EXT_debug_utils;
default:
return u_pipe_screen_get_param_defaults(pscreen, param);
}
@@ -1308,6 +1311,7 @@ create_debug(struct zink_screen *screen)
{
GET_PROC_ADDR_INSTANCE(CreateDebugUtilsMessengerEXT);
GET_PROC_ADDR_INSTANCE(DestroyDebugUtilsMessengerEXT);
GET_PROC_ADDR_INSTANCE(CmdInsertDebugUtilsLabelEXT);
VkDebugUtilsMessengerCreateInfoEXT vkDebugUtilsMessengerCreateInfoEXT = {
VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
+1
View File
@@ -171,6 +171,7 @@ struct zink_screen {
PFN_vkCreateDebugUtilsMessengerEXT vk_CreateDebugUtilsMessengerEXT;
PFN_vkDestroyDebugUtilsMessengerEXT vk_DestroyDebugUtilsMessengerEXT;
PFN_vkCmdInsertDebugUtilsLabelEXT vk_CmdInsertDebugUtilsLabelEXT;
#if defined(MVK_VERSION)
PFN_vkGetMoltenVKConfigurationMVK vk_GetMoltenVKConfigurationMVK;