vulkan: make acceleration structure debug markers virtual
Not every implementation supports VK_EXT_debug_marker. VK_EXT_debug_utils is also pretty similar, it would be nice to plug into whatever is available. Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Kevin Chuang <kaiwenjon23@gmail.com> Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32483>
This commit is contained in:
committed by
Marge Bot
parent
fd1511e42e
commit
877a296b2c
@@ -659,6 +659,8 @@ static const struct radix_sort_vk_target_config radix_sort_config = {
|
||||
};
|
||||
|
||||
static const struct vk_acceleration_structure_build_ops build_ops = {
|
||||
.begin_debug_marker = vk_accel_struct_cmd_begin_debug_marker,
|
||||
.end_debug_marker = vk_accel_struct_cmd_end_debug_marker,
|
||||
.get_as_size = radv_get_as_size,
|
||||
.get_update_scratch_size = radv_get_update_scratch_size,
|
||||
.get_encode_key[0] = radv_get_encode_key,
|
||||
|
||||
@@ -450,8 +450,9 @@ vk_fill_geometry_data(VkAccelerationStructureTypeKHR type, uint32_t first_id, ui
|
||||
return data;
|
||||
}
|
||||
|
||||
static void
|
||||
vk_cmd_begin_debug_marker(VkCommandBuffer commandBuffer, const char *format, ...)
|
||||
void
|
||||
vk_accel_struct_cmd_begin_debug_marker(VkCommandBuffer commandBuffer,
|
||||
const char *format, ...)
|
||||
{
|
||||
VK_FROM_HANDLE(vk_command_buffer, cmd_buffer, commandBuffer);
|
||||
struct vk_device *device = cmd_buffer->base.device;
|
||||
@@ -473,8 +474,8 @@ vk_cmd_begin_debug_marker(VkCommandBuffer commandBuffer, const char *format, ...
|
||||
device->dispatch_table.CmdDebugMarkerBeginEXT(commandBuffer, &marker);
|
||||
}
|
||||
|
||||
static void
|
||||
vk_cmd_end_debug_marker(VkCommandBuffer commandBuffer)
|
||||
void
|
||||
vk_accel_struct_cmd_end_debug_marker(VkCommandBuffer commandBuffer)
|
||||
{
|
||||
VK_FROM_HANDLE(vk_command_buffer, cmd_buffer, commandBuffer);
|
||||
struct vk_device *device = cmd_buffer->base.device;
|
||||
@@ -517,7 +518,7 @@ build_leaves(VkCommandBuffer commandBuffer,
|
||||
return result;
|
||||
|
||||
if (args->emit_markers)
|
||||
vk_cmd_begin_debug_marker(commandBuffer, "build_leaves");
|
||||
device->as_build_ops->begin_debug_marker(commandBuffer, "build_leaves");
|
||||
|
||||
const struct vk_device_dispatch_table *disp = &device->dispatch_table;
|
||||
disp->CmdBindPipeline(
|
||||
@@ -552,14 +553,14 @@ build_leaves(VkCommandBuffer commandBuffer,
|
||||
}
|
||||
|
||||
if (args->emit_markers)
|
||||
vk_cmd_end_debug_marker(commandBuffer);
|
||||
device->as_build_ops->end_debug_marker(commandBuffer);
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
static VkResult
|
||||
morton_generate(VkCommandBuffer commandBuffer, struct vk_device *device,
|
||||
struct vk_meta_device *meta,
|
||||
struct vk_meta_device *meta,
|
||||
const struct vk_acceleration_structure_build_args *args,
|
||||
uint32_t infoCount,
|
||||
const VkAccelerationStructureBuildGeometryInfoKHR *pInfos,
|
||||
@@ -576,7 +577,7 @@ morton_generate(VkCommandBuffer commandBuffer, struct vk_device *device,
|
||||
return result;
|
||||
|
||||
if (args->emit_markers)
|
||||
vk_cmd_begin_debug_marker(commandBuffer, "morton_generate");
|
||||
device->as_build_ops->begin_debug_marker(commandBuffer, "morton_generate");
|
||||
|
||||
const struct vk_device_dispatch_table *disp = &device->dispatch_table;
|
||||
disp->CmdBindPipeline(
|
||||
@@ -597,7 +598,7 @@ morton_generate(VkCommandBuffer commandBuffer, struct vk_device *device,
|
||||
}
|
||||
|
||||
if (args->emit_markers)
|
||||
vk_cmd_end_debug_marker(commandBuffer);
|
||||
device->as_build_ops->end_debug_marker(commandBuffer);
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
@@ -611,7 +612,7 @@ morton_sort(VkCommandBuffer commandBuffer, struct vk_device *device,
|
||||
const struct vk_device_dispatch_table *disp = &device->dispatch_table;
|
||||
|
||||
if (args->emit_markers)
|
||||
vk_cmd_begin_debug_marker(commandBuffer, "morton_sort");
|
||||
device->as_build_ops->begin_debug_marker(commandBuffer, "morton_sort");
|
||||
|
||||
/* Copyright 2019 The Fuchsia Authors. */
|
||||
const radix_sort_vk_t *rs = args->radix_sort;
|
||||
@@ -709,7 +710,7 @@ morton_sort(VkCommandBuffer commandBuffer, struct vk_device *device,
|
||||
|
||||
uint32_t fill_base = pass_idx * (RS_RADIX_SIZE * sizeof(uint32_t));
|
||||
|
||||
device->cmd_fill_buffer_addr(commandBuffer,
|
||||
device->cmd_fill_buffer_addr(commandBuffer,
|
||||
internal_addr + rs->internal.histograms.offset + fill_base,
|
||||
histo_partition_count * (RS_RADIX_SIZE * sizeof(uint32_t)) + keyval_bytes * sizeof(uint32_t), 0);
|
||||
}
|
||||
@@ -834,7 +835,7 @@ morton_sort(VkCommandBuffer commandBuffer, struct vk_device *device,
|
||||
}
|
||||
|
||||
if (args->emit_markers)
|
||||
vk_cmd_end_debug_marker(commandBuffer);
|
||||
device->as_build_ops->end_debug_marker(commandBuffer);
|
||||
}
|
||||
|
||||
static VkResult
|
||||
@@ -856,7 +857,7 @@ lbvh_build_internal(VkCommandBuffer commandBuffer,
|
||||
return result;
|
||||
|
||||
if (args->emit_markers)
|
||||
vk_cmd_begin_debug_marker(commandBuffer, "lbvh_build_internal");
|
||||
device->as_build_ops->begin_debug_marker(commandBuffer, "lbvh_build_internal");
|
||||
|
||||
const struct vk_device_dispatch_table *disp = &device->dispatch_table;
|
||||
disp->CmdBindPipeline(
|
||||
@@ -913,7 +914,7 @@ lbvh_build_internal(VkCommandBuffer commandBuffer,
|
||||
}
|
||||
|
||||
if (args->emit_markers)
|
||||
vk_cmd_end_debug_marker(commandBuffer);
|
||||
device->as_build_ops->end_debug_marker(commandBuffer);
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
@@ -937,7 +938,7 @@ ploc_build_internal(VkCommandBuffer commandBuffer,
|
||||
return result;
|
||||
|
||||
if (args->emit_markers)
|
||||
vk_cmd_begin_debug_marker(commandBuffer, "ploc_build_internal");
|
||||
device->as_build_ops->begin_debug_marker(commandBuffer, "ploc_build_internal");
|
||||
|
||||
const struct vk_device_dispatch_table *disp = &device->dispatch_table;
|
||||
disp->CmdBindPipeline(
|
||||
@@ -968,7 +969,7 @@ ploc_build_internal(VkCommandBuffer commandBuffer,
|
||||
}
|
||||
|
||||
if (args->emit_markers)
|
||||
vk_cmd_end_debug_marker(commandBuffer);
|
||||
device->as_build_ops->end_debug_marker(commandBuffer);
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
@@ -989,8 +990,11 @@ vk_cmd_build_acceleration_structures(VkCommandBuffer commandBuffer,
|
||||
|
||||
struct bvh_state *bvh_states = calloc(infoCount, sizeof(struct bvh_state));
|
||||
|
||||
if (args->emit_markers)
|
||||
vk_cmd_begin_debug_marker(commandBuffer, "vkCmdBuildAccelerationStructuresKHR(%u)", infoCount);
|
||||
if (args->emit_markers) {
|
||||
device->as_build_ops->begin_debug_marker(commandBuffer,
|
||||
"vkCmdBuildAccelerationStructuresKHR(%u)",
|
||||
infoCount);
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < infoCount; ++i) {
|
||||
uint32_t leaf_node_count = 0;
|
||||
@@ -1191,7 +1195,7 @@ vk_cmd_build_acceleration_structures(VkCommandBuffer commandBuffer,
|
||||
}
|
||||
|
||||
if (args->emit_markers)
|
||||
vk_cmd_end_debug_marker(commandBuffer);
|
||||
device->as_build_ops->end_debug_marker(commandBuffer);
|
||||
|
||||
free(bvh_states);
|
||||
}
|
||||
@@ -1246,4 +1250,3 @@ vk_acceleration_struct_vtx_format_supported(VkFormat format)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -49,6 +49,8 @@ VK_DEFINE_NONDISP_HANDLE_CASTS(vk_acceleration_structure, base, VkAccelerationSt
|
||||
#define MAX_UPDATE_PASSES 2
|
||||
|
||||
struct vk_acceleration_structure_build_ops {
|
||||
void (*begin_debug_marker)(VkCommandBuffer commandBuffer, const char *format, ...);
|
||||
void (*end_debug_marker)(VkCommandBuffer commandBuffer);
|
||||
VkDeviceSize (*get_as_size)(VkDevice device,
|
||||
const VkAccelerationStructureBuildGeometryInfoKHR *pBuildInfo,
|
||||
uint32_t leaf_count);
|
||||
@@ -125,6 +127,11 @@ vk_fill_geometry_data(VkAccelerationStructureTypeKHR type, uint32_t first_id, ui
|
||||
const VkAccelerationStructureGeometryKHR *geometry,
|
||||
const VkAccelerationStructureBuildRangeInfoKHR *build_range_info);
|
||||
|
||||
void vk_accel_struct_cmd_begin_debug_marker(VkCommandBuffer commandBuffer,
|
||||
const char *format, ...);
|
||||
|
||||
void vk_accel_struct_cmd_end_debug_marker(VkCommandBuffer commandBuffer);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user