rt: add debug labels to command buffer
This commit is contained in:
parent
1ad24b657b
commit
460b839a64
|
@ -94,6 +94,37 @@ do { \
|
|||
} \
|
||||
} while (0)
|
||||
|
||||
#define DEBUG_BEGIN(cmdbuf, msg) \
|
||||
do { \
|
||||
if (vk_core.debug) { \
|
||||
const VkDebugUtilsLabelEXT label = { \
|
||||
.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, \
|
||||
.pLabelName = msg, \
|
||||
}; \
|
||||
vkCmdBeginDebugUtilsLabelEXT(cmdbuf, &label); \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#define DEBUG_BEGINF(cmdbuf, fmt, ...) \
|
||||
do { \
|
||||
if (vk_core.debug) { \
|
||||
char buf[128]; \
|
||||
snprintf(buf, sizeof(buf), fmt, ##__VA_ARGS__); \
|
||||
const VkDebugUtilsLabelEXT label = { \
|
||||
.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, \
|
||||
.pLabelName = buf, \
|
||||
}; \
|
||||
vkCmdBeginDebugUtilsLabelEXT(cmdbuf, &label); \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#define DEBUG_END(cmdbuf) \
|
||||
do { \
|
||||
if (vk_core.debug) { \
|
||||
vkCmdEndDebugUtilsLabelEXT(cmdbuf); \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
// TODO make this not fatal: devise proper error handling strategies
|
||||
// FIXME Host_Error does not cause process to exit, we need to handle this manually
|
||||
#define XVK_CHECK(f) do { \
|
||||
|
|
|
@ -176,7 +176,9 @@ void XVK_DenoiserDenoise( const xvk_denoiser_args_t* args ) {
|
|||
|
||||
VK_DescriptorsWrite(&g_denoiser.descriptors);
|
||||
|
||||
vkCmdBindPipeline(args->cmdbuf, VK_PIPELINE_BIND_POINT_COMPUTE, g_denoiser.pipeline);
|
||||
vkCmdBindDescriptorSets(args->cmdbuf, VK_PIPELINE_BIND_POINT_COMPUTE, g_denoiser.descriptors.pipeline_layout, 0, 1, g_denoiser.descriptors.desc_sets + 0, 0, NULL);
|
||||
vkCmdDispatch(args->cmdbuf, (args->width + WG_W - 1) / WG_W, (args->height + WG_H - 1) / WG_H, 1);
|
||||
DEBUG_BEGIN(args->cmdbuf, "denoiser");
|
||||
vkCmdBindPipeline(args->cmdbuf, VK_PIPELINE_BIND_POINT_COMPUTE, g_denoiser.pipeline);
|
||||
vkCmdBindDescriptorSets(args->cmdbuf, VK_PIPELINE_BIND_POINT_COMPUTE, g_denoiser.descriptors.pipeline_layout, 0, 1, g_denoiser.descriptors.desc_sets + 0, 0, NULL);
|
||||
vkCmdDispatch(args->cmdbuf, (args->width + WG_W - 1) / WG_W, (args->height + WG_H - 1) / WG_H, 1);
|
||||
DEBUG_END(args->cmdbuf);
|
||||
}
|
||||
|
|
|
@ -169,8 +169,10 @@ void XVK_RayTraceLightDirect( VkCommandBuffer cmdbuf, const xvk_ray_trace_light_
|
|||
|
||||
updateDescriptors( args );
|
||||
|
||||
vkCmdBindPipeline(cmdbuf, VK_PIPELINE_BIND_POINT_COMPUTE, g_ray_light_direct.pipeline);
|
||||
vkCmdBindDescriptorSets(cmdbuf, VK_PIPELINE_BIND_POINT_COMPUTE, g_ray_light_direct.desc.riptors.pipeline_layout, 0, 1, g_ray_light_direct.desc.riptors.desc_sets + 0, 0, NULL);
|
||||
vkCmdDispatch(cmdbuf, (args->width + WG_W - 1) / WG_W, (args->height + WG_H - 1) / WG_H, 1);
|
||||
DEBUG_BEGIN(cmdbuf, "lights direct");
|
||||
vkCmdBindPipeline(cmdbuf, VK_PIPELINE_BIND_POINT_COMPUTE, g_ray_light_direct.pipeline);
|
||||
vkCmdBindDescriptorSets(cmdbuf, VK_PIPELINE_BIND_POINT_COMPUTE, g_ray_light_direct.desc.riptors.pipeline_layout, 0, 1, g_ray_light_direct.desc.riptors.desc_sets + 0, 0, NULL);
|
||||
vkCmdDispatch(cmdbuf, (args->width + WG_W - 1) / WG_W, (args->height + WG_H - 1) / WG_H, 1);
|
||||
DEBUG_END(cmdbuf);
|
||||
}
|
||||
|
||||
|
|
|
@ -246,7 +246,10 @@ vk_ray_model_t* VK_RayModelCreate( vk_ray_model_init_t args ) {
|
|||
} else {
|
||||
qboolean result;
|
||||
asrgs.p_accel = &ray_model->as;
|
||||
|
||||
DEBUG_BEGINF(vk_core.cb, "build blas for %s", args.model->debug_name);
|
||||
result = createOrUpdateAccelerationStructure(vk_core.cb, &asrgs, ray_model);
|
||||
DEBUG_END(vk_core.cb);
|
||||
|
||||
if (!result)
|
||||
{
|
||||
|
|
|
@ -283,6 +283,7 @@ void XVK_RayTracePrimary( VkCommandBuffer cmdbuf, const xvk_ray_trace_primary_t
|
|||
/* vkCmdPushConstants(cmdbuf, g_ray_primary.descriptors.pipeline_layout, VK_SHADER_STAGE_RAYGEN_BIT_KHR | VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR | VK_SHADER_STAGE_ANY_HIT_BIT_KHR, 0, sizeof(push_constants), &push_constants); */
|
||||
/* } */
|
||||
|
||||
DEBUG_BEGIN(cmdbuf, "primary");
|
||||
vkCmdBindDescriptorSets(cmdbuf, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, g_ray_primary.desc.riptors.pipeline_layout, 0, 1, g_ray_primary.desc.riptors.desc_sets + 0, 0, NULL);
|
||||
|
||||
{
|
||||
|
@ -299,5 +300,6 @@ void XVK_RayTracePrimary( VkCommandBuffer cmdbuf, const xvk_ray_trace_primary_t
|
|||
|
||||
vkCmdTraceRaysKHR(cmdbuf, &sbt_raygen, &sbt_miss, &sbt_hit, &sbt_callable, args->width, args->height, 1 );
|
||||
}
|
||||
DEBUG_END(cmdbuf);
|
||||
}
|
||||
|
||||
|
|
|
@ -565,6 +565,8 @@ static void createPipeline( void )
|
|||
static void prepareTlas( VkCommandBuffer cmdbuf ) {
|
||||
ASSERT(g_ray_model_state.frame.num_models > 0);
|
||||
|
||||
DEBUG_BEGIN(cmdbuf, "prepare tlas");
|
||||
|
||||
// Upload all blas instances references to GPU mem
|
||||
{
|
||||
VkAccelerationStructureInstanceKHR* inst = g_rtx.tlas_geom_buffer.mapped;
|
||||
|
@ -622,6 +624,7 @@ static void prepareTlas( VkCommandBuffer cmdbuf ) {
|
|||
|
||||
// 2. Build TLAS
|
||||
createTlas(cmdbuf);
|
||||
DEBUG_END(cmdbuf);
|
||||
}
|
||||
|
||||
static void updateDescriptors( const vk_ray_frame_render_args_t *args, int frame_index, const xvk_ray_frame_images_t *frame_dst ) {
|
||||
|
@ -965,6 +968,7 @@ static void prepareUniformBuffer( const vk_ray_frame_render_args_t *args, int fr
|
|||
}
|
||||
|
||||
static void performTracing( VkCommandBuffer cmdbuf, const vk_ray_frame_render_args_t* args, int frame_index, const xvk_ray_frame_images_t *current_frame, float fov_angle_y) {
|
||||
DEBUG_BEGIN(cmdbuf, "yay tracing");
|
||||
uploadLights();
|
||||
prepareTlas(cmdbuf);
|
||||
prepareUniformBuffer(args, frame_index, fov_angle_y);
|
||||
|
@ -1179,6 +1183,7 @@ RAY_PRIMARY_OUTPUTS(X)
|
|||
|
||||
blitImage( &blit_args );
|
||||
}
|
||||
DEBUG_END(cmdbuf);
|
||||
}
|
||||
|
||||
qboolean initVk2d(void);
|
||||
|
|
Loading…
Reference in New Issue