vk: profiler: add BLAS stats

This commit is contained in:
Ivan Avdeev 2023-03-23 10:00:40 -07:00 committed by Ivan Avdeev
parent e0e9305628
commit 160a69d2cc
1 changed files with 16 additions and 0 deletions

View File

@ -3,12 +3,20 @@
#include "vk_core.h"
#include "vk_rtx.h"
#include "vk_ray_internal.h"
#include "r_speeds.h"
#define MAX_SCRATCH_BUFFER (32*1024*1024)
#define MAX_ACCELS_BUFFER (64*1024*1024)
struct rt_vk_ray_accel_s g_accel = {0};
static struct {
struct {
r_speeds_metric_t *blas_count;
r_speeds_metric_t *accels_built;
} stats;
} g_accel_;
static VkDeviceAddress getASAddress(VkAccelerationStructureKHR as) {
VkAccelerationStructureDeviceAddressInfoKHR asdai = {
.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR,
@ -112,6 +120,7 @@ qboolean createOrUpdateAccelerationStructure(VkCommandBuffer cmdbuf, const as_bu
//gEngine.Con_Reportf("AS=%p, n_geoms=%u, scratch: %#x %d %#x\n", *args->p_accel, args->n_geoms, scratch_offset_initial, scratch_buffer_size, scratch_offset_initial + scratch_buffer_size);
g_accel_.stats.accels_built->value++;
vkCmdBuildAccelerationStructuresKHR(cmdbuf, 1, &build_info, &args->build_ranges);
return true;
}
@ -198,6 +207,8 @@ void RT_VkAccelPrepareTlas(VkCommandBuffer cmdbuf) {
}
}
g_accel_.stats.blas_count->value = g_ray_model_state.frame.num_models;
// Barrier for building all BLASes
// BLAS building is now in cmdbuf, need to synchronize with results
{
@ -249,6 +260,9 @@ qboolean RT_VkAccelInit(void) {
g_accel.tlas_geom_buffer_addr = R_VkBufferGetDeviceAddress(g_accel.tlas_geom_buffer.buffer);
R_FlippingBuffer_Init(&g_accel.tlas_geom_buffer_alloc, MAX_ACCELS * 2);
g_accel_.stats.blas_count = R_SpeedsRegisterMetric("blas_count", "");
g_accel_.stats.accels_built = R_SpeedsRegisterMetric("accels_built", "");
return true;
}
@ -299,4 +313,6 @@ void RT_VkAccelNewMap(void) {
void RT_VkAccelFrameBegin(void) {
g_accel.frame.scratch_offset = 0;
g_accel_.stats.accels_built->value = 0;
g_accel_.stats.blas_count->value = 0;
}