rt: pass and assign rt_blas debug names

This commit is contained in:
Ivan 'provod' Avdeev 2023-05-31 10:13:40 -07:00
parent e9ea962bc0
commit 8b50ebb035
4 changed files with 12 additions and 8 deletions

View File

@ -17,6 +17,7 @@
#endif // #ifndef ARRAYSIZE
typedef struct rt_blas_s {
const char *debug_name;
rt_blas_usage_e usage;
VkAccelerationStructureKHR blas;
@ -446,7 +447,7 @@ void RT_VkAccelFrameBegin(void) {
g_accel.frame.scratch_offset = 0;
}
struct rt_blas_s* RT_BlasCreate(rt_blas_usage_e usage) {
struct rt_blas_s* RT_BlasCreate(const char *name, rt_blas_usage_e usage) {
rt_blas_t *blas = Mem_Calloc(vk_core.pool, sizeof(*blas));
switch (usage) {
@ -460,6 +461,7 @@ struct rt_blas_s* RT_BlasCreate(rt_blas_usage_e usage) {
break;
}
blas->debug_name = name;
blas->usage = usage;
//blas->kusochki_offset = -1;
blas->blas_size = -1;
@ -467,7 +469,7 @@ struct rt_blas_s* RT_BlasCreate(rt_blas_usage_e usage) {
return blas;
}
struct rt_blas_s* RT_BlasCreatePreallocated(rt_blas_usage_e usage, int max_geometries, const int *max_prims, int max_vertex, uint32_t extra_buffer_offset) {
struct rt_blas_s* RT_BlasCreatePreallocated(const char *name, rt_blas_usage_e usage, int max_geometries, const int *max_prims, int max_vertex, uint32_t extra_buffer_offset) {
ASSERT(!"Not implemented");
#if 0
@ -593,7 +595,7 @@ qboolean RT_BlasBuild(struct rt_blas_s *blas, const struct vk_render_geometry_s
// allocate blas
if (!blas->blas) {
blas->blas = createAccel("FIXME NAME", VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR, build_size.accelerationStructureSize);
blas->blas = createAccel(blas->debug_name, VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR, build_size.accelerationStructureSize);
if (!blas->blas) {
gEngine.Con_Printf(S_ERROR "Couldn't create vk accel\n");
goto finalize;

View File

@ -521,7 +521,7 @@ struct rt_model_s *RT_ModelCreate(rt_model_create_t args) {
return NULL;
}
struct rt_blas_s* blas = RT_BlasCreate(args.usage);
struct rt_blas_s* blas = RT_BlasCreate(args.debug_name, args.usage);
if (!blas) {
gEngine.Con_Printf(S_ERROR "Cannot create BLAS for %s\n", args.debug_name);
goto fail;
@ -569,6 +569,7 @@ void RT_FrameAddModel( struct rt_model_s *model, rt_frame_add_model_t args ) {
if (!model || !model->blas)
return;
// TODO this shouldn't be an assert, just complain to the log and ignore
ASSERT(g_ray_model_state.frame.instances_count <= ARRAYSIZE(g_ray_model_state.frame.instances));
rt_draw_instance_t* draw_instance = g_ray_model_state.frame.instances + g_ray_model_state.frame.instances_count;

View File

@ -676,7 +676,7 @@ qboolean VK_RenderModelCreate( vk_render_model_t *model, vk_render_model_init_t
return true;
model->rt_model = RT_ModelCreate((rt_model_create_t){
.debug_name = args.name,
.debug_name = model->debug_name,
.geometries = args.geometries,
.geometries_count = args.geometries_count,
.usage = kBlasBuildStatic, // TODO pass from caller

View File

@ -61,10 +61,11 @@ typedef enum {
} rt_blas_usage_e;
// Just creates an empty BLAS structure, doesn't alloc anything
struct rt_blas_s* RT_BlasCreate(rt_blas_usage_e usage);
// Memory pointed to by name must remain alive until RT_BlasDestroy
struct rt_blas_s* RT_BlasCreate(const char *name, rt_blas_usage_e usage);
// Create an empty BLAS with specified limits
struct rt_blas_s* RT_BlasCreatePreallocated(rt_blas_usage_e usage, int max_geometries, const int *max_prims, int max_vertex, uint32_t extra_buffer_offset);
struct rt_blas_s* RT_BlasCreatePreallocated(const char *name, rt_blas_usage_e usage, int max_geometries, const int *max_prims, int max_vertex, uint32_t extra_buffer_offset);
void RT_BlasDestroy(struct rt_blas_s* blas);
@ -103,7 +104,7 @@ void RT_BlasAddToFrame( rt_blas_frame_args_t args );
struct rt_model_s;
typedef struct {
const char *debug_name;
const char *debug_name; // Must remain alive until RT_ModelDestroy
const struct vk_render_geometry_s *geometries;
int geometries_count;
rt_blas_usage_e usage;