vk: profiler: add BLAS stats
This commit is contained in:
parent
e0e9305628
commit
160a69d2cc
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue