mirror of
https://github.com/w23/xash3d-fwgs
synced 2024-12-14 21:20:26 +01:00
vk: profiler: simplify metric registration
This commit is contained in:
parent
cdc2a1258a
commit
8ecfae5bf0
@ -24,6 +24,12 @@ enum {
|
|||||||
// These bits can be combined, e.g. `r_speeds 9`, 8+1, will display 1: basic timing info and 8: frame graphs
|
// These bits can be combined, e.g. `r_speeds 9`, 8+1, will display 1: basic timing info and 8: frame graphs
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int *p_value;
|
||||||
|
const char *name;
|
||||||
|
const char *unit;
|
||||||
|
// int low_watermark, high_watermark;
|
||||||
|
} r_speeds_metric_t;
|
||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
float frame_times[MAX_FRAMES_HISTORY];
|
float frame_times[MAX_FRAMES_HISTORY];
|
||||||
@ -261,7 +267,8 @@ static int drawFrames( int draw, uint32_t prev_frame_index, int y, const uint64_
|
|||||||
static void printMetrics( void ) {
|
static void printMetrics( void ) {
|
||||||
for (int i = 0; i < g_speeds.metrics_count; ++i) {
|
for (int i = 0; i < g_speeds.metrics_count; ++i) {
|
||||||
const r_speeds_metric_t *const metric = g_speeds.metrics + i;
|
const r_speeds_metric_t *const metric = g_speeds.metrics + i;
|
||||||
speedsPrintf("%s: %d%s\n", metric->name, metric->value, metric->unit);
|
speedsPrintf("%s: %d%s\n", metric->name, *metric->p_value, metric->unit);
|
||||||
|
*metric->p_value = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -357,12 +364,11 @@ qboolean R_SpeedsMessage( char *out, size_t size )
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
r_speeds_metric_t *R_SpeedsRegisterMetric( const char *name, const char *unit ) {
|
void R_SpeedsRegisterMetric( int* p_value, const char *name, const char *unit ) {
|
||||||
ASSERT(g_speeds.metrics_count < MAX_SPEEDS_METRICS);
|
ASSERT(g_speeds.metrics_count < MAX_SPEEDS_METRICS);
|
||||||
|
|
||||||
r_speeds_metric_t *metric = g_speeds.metrics + (g_speeds.metrics_count++);
|
r_speeds_metric_t *metric = g_speeds.metrics + (g_speeds.metrics_count++);
|
||||||
|
metric->p_value = p_value;
|
||||||
metric->name = name;
|
metric->name = name;
|
||||||
metric->unit = unit;
|
metric->unit = unit;
|
||||||
|
|
||||||
return metric;
|
|
||||||
}
|
}
|
||||||
|
@ -9,11 +9,4 @@ void R_ShowExtendedProfilingData(uint32_t prev_frame_index, uint64_t gpu_frame_b
|
|||||||
// Called from the engine into ref_api to get the latest speeds info
|
// Called from the engine into ref_api to get the latest speeds info
|
||||||
qboolean R_SpeedsMessage( char *out, size_t size );
|
qboolean R_SpeedsMessage( char *out, size_t size );
|
||||||
|
|
||||||
typedef struct {
|
void R_SpeedsRegisterMetric( int* p_value, const char *name, const char *unit );
|
||||||
int value;
|
|
||||||
const char *name;
|
|
||||||
const char *unit;
|
|
||||||
// int low_watermark, high_watermark;
|
|
||||||
} r_speeds_metric_t;
|
|
||||||
|
|
||||||
r_speeds_metric_t *R_SpeedsRegisterMetric( const char *name, const char *unit );
|
|
||||||
|
@ -66,9 +66,9 @@ static struct {
|
|||||||
uint32_t frame_sequence;
|
uint32_t frame_sequence;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
r_speeds_metric_t *dirty_cells;
|
int dirty_cells;
|
||||||
r_speeds_metric_t *dirty_cells_size;
|
int dirty_cells_size;
|
||||||
r_speeds_metric_t *ranges_uploaded;
|
int ranges_uploaded;
|
||||||
} stats;
|
} stats;
|
||||||
} g_lights_;
|
} g_lights_;
|
||||||
|
|
||||||
@ -102,9 +102,9 @@ qboolean VK_LightsInit( void ) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_lights_.stats.dirty_cells = R_SpeedsRegisterMetric("lights_dirty_cells", "");
|
R_SpeedsRegisterMetric(&g_lights_.stats.dirty_cells, "lights_dirty_cells", "");
|
||||||
g_lights_.stats.dirty_cells_size = R_SpeedsRegisterMetric("lights_dirty_cells_size", "KiB");
|
R_SpeedsRegisterMetric(&g_lights_.stats.dirty_cells_size, "lights_dirty_cells_size", "KiB");
|
||||||
g_lights_.stats.ranges_uploaded = R_SpeedsRegisterMetric("lights_ranges_uploaded", "");
|
R_SpeedsRegisterMetric(&g_lights_.stats.ranges_uploaded, "lights_ranges_uploaded", "");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -530,7 +530,7 @@ static qboolean addSurfaceLightToCell( int cell_index, int polygon_light_index )
|
|||||||
|
|
||||||
cluster->polygons[cluster->num_polygons++] = polygon_light_index;
|
cluster->polygons[cluster->num_polygons++] = polygon_light_index;
|
||||||
if (cluster->frame_sequence != g_lights_.frame_sequence) {
|
if (cluster->frame_sequence != g_lights_.frame_sequence) {
|
||||||
++g_lights_.stats.dirty_cells->value;
|
++g_lights_.stats.dirty_cells;
|
||||||
cluster->frame_sequence = g_lights_.frame_sequence;
|
cluster->frame_sequence = g_lights_.frame_sequence;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -549,7 +549,7 @@ static qboolean addLightToCell( int cell_index, int light_index ) {
|
|||||||
cluster->point_lights[cluster->num_point_lights++] = light_index;
|
cluster->point_lights[cluster->num_point_lights++] = light_index;
|
||||||
|
|
||||||
if (cluster->frame_sequence != g_lights_.frame_sequence) {
|
if (cluster->frame_sequence != g_lights_.frame_sequence) {
|
||||||
++g_lights_.stats.dirty_cells->value;
|
++g_lights_.stats.dirty_cells;
|
||||||
cluster->frame_sequence = g_lights_.frame_sequence;
|
cluster->frame_sequence = g_lights_.frame_sequence;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -947,7 +947,7 @@ void RT_LightsLoadEnd( void ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g_lights_.stats.dirty_cells->value = g_lights.map.grid_cells;
|
g_lights_.stats.dirty_cells = g_lights.map.grid_cells;
|
||||||
}
|
}
|
||||||
|
|
||||||
qboolean RT_GetEmissiveForTexture( vec3_t out, int texture_id ) {
|
qboolean RT_GetEmissiveForTexture( vec3_t out, int texture_id ) {
|
||||||
@ -1134,9 +1134,6 @@ void RT_LightsFrameBegin( void ) {
|
|||||||
g_lights_.num_point_lights = g_lights_.num_static.point_lights;
|
g_lights_.num_point_lights = g_lights_.num_static.point_lights;
|
||||||
g_lights_.num_polygon_vertices = g_lights_.num_static.polygon_vertices;
|
g_lights_.num_polygon_vertices = g_lights_.num_static.polygon_vertices;
|
||||||
|
|
||||||
g_lights_.stats.dirty_cells->value = 0;
|
|
||||||
g_lights_.stats.dirty_cells_size->value = 0;
|
|
||||||
|
|
||||||
for (int i = 0; i < g_lights.map.grid_cells; ++i) {
|
for (int i = 0; i < g_lights.map.grid_cells; ++i) {
|
||||||
vk_lights_cell_t *const cell = g_lights.cells + i;
|
vk_lights_cell_t *const cell = g_lights.cells + i;
|
||||||
cell->num_polygons = cell->num_static.polygons;
|
cell->num_polygons = cell->num_static.polygons;
|
||||||
@ -1173,14 +1170,12 @@ static void uploadGridRange( int begin, int end ) {
|
|||||||
|
|
||||||
R_VkStagingUnlock( locked.handle );
|
R_VkStagingUnlock( locked.handle );
|
||||||
|
|
||||||
g_lights_.stats.ranges_uploaded->value++;
|
g_lights_.stats.ranges_uploaded++;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void uploadGrid( void ) {
|
static void uploadGrid( void ) {
|
||||||
ASSERT(g_lights.map.grid_cells <= MAX_LIGHT_CLUSTERS);
|
ASSERT(g_lights.map.grid_cells <= MAX_LIGHT_CLUSTERS);
|
||||||
|
|
||||||
g_lights_.stats.ranges_uploaded->value = 0;
|
|
||||||
|
|
||||||
int begin = -1;
|
int begin = -1;
|
||||||
for (int i = 0; i < g_lights.map.grid_cells; ++i) {
|
for (int i = 0; i < g_lights.map.grid_cells; ++i) {
|
||||||
const vk_lights_cell_t *const cell = g_lights.cells + i;
|
const vk_lights_cell_t *const cell = g_lights.cells + i;
|
||||||
@ -1365,7 +1360,7 @@ void RT_LightsFrameEnd( void ) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
g_lights_.stats.dirty_cells_size->value = g_lights_.stats.dirty_cells->value * sizeof(struct LightCluster) / 1024;
|
g_lights_.stats.dirty_cells_size = g_lights_.stats.dirty_cells * sizeof(struct LightCluster) / 1024;
|
||||||
|
|
||||||
debug_dump_lights.enabled = false;
|
debug_dump_lights.enabled = false;
|
||||||
APROF_SCOPE_END(finalize);
|
APROF_SCOPE_END(finalize);
|
||||||
|
@ -12,8 +12,8 @@ struct rt_vk_ray_accel_s g_accel = {0};
|
|||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
struct {
|
struct {
|
||||||
r_speeds_metric_t *blas_count;
|
int blas_count;
|
||||||
r_speeds_metric_t *accels_built;
|
int accels_built;
|
||||||
} stats;
|
} stats;
|
||||||
} g_accel_;
|
} g_accel_;
|
||||||
|
|
||||||
@ -120,7 +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);
|
//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++;
|
g_accel_.stats.accels_built++;
|
||||||
vkCmdBuildAccelerationStructuresKHR(cmdbuf, 1, &build_info, &args->build_ranges);
|
vkCmdBuildAccelerationStructuresKHR(cmdbuf, 1, &build_info, &args->build_ranges);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -207,7 +207,7 @@ void RT_VkAccelPrepareTlas(VkCommandBuffer cmdbuf) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g_accel_.stats.blas_count->value = g_ray_model_state.frame.num_models;
|
g_accel_.stats.blas_count = g_ray_model_state.frame.num_models;
|
||||||
|
|
||||||
// Barrier for building all BLASes
|
// Barrier for building all BLASes
|
||||||
// BLAS building is now in cmdbuf, need to synchronize with results
|
// BLAS building is now in cmdbuf, need to synchronize with results
|
||||||
@ -260,8 +260,8 @@ qboolean RT_VkAccelInit(void) {
|
|||||||
g_accel.tlas_geom_buffer_addr = R_VkBufferGetDeviceAddress(g_accel.tlas_geom_buffer.buffer);
|
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);
|
R_FlippingBuffer_Init(&g_accel.tlas_geom_buffer_alloc, MAX_ACCELS * 2);
|
||||||
|
|
||||||
g_accel_.stats.blas_count = R_SpeedsRegisterMetric("blas_count", "");
|
R_SpeedsRegisterMetric(&g_accel_.stats.blas_count, "blas_count", "");
|
||||||
g_accel_.stats.accels_built = R_SpeedsRegisterMetric("accels_built", "");
|
R_SpeedsRegisterMetric(&g_accel_.stats.accels_built, "accels_built", "");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -313,6 +313,4 @@ void RT_VkAccelNewMap(void) {
|
|||||||
|
|
||||||
void RT_VkAccelFrameBegin(void) {
|
void RT_VkAccelFrameBegin(void) {
|
||||||
g_accel.frame.scratch_offset = 0;
|
g_accel.frame.scratch_offset = 0;
|
||||||
g_accel_.stats.accels_built->value = 0;
|
|
||||||
g_accel_.stats.blas_count->value = 0;
|
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ static struct {
|
|||||||
float fov_angle_y;
|
float fov_angle_y;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
r_speeds_metric_t *models_dynamic;
|
int dynamic_model_count;
|
||||||
} stats;
|
} stats;
|
||||||
} g_render;
|
} g_render;
|
||||||
|
|
||||||
@ -338,7 +338,7 @@ qboolean VK_RenderInit( void ) {
|
|||||||
if (!createPipelines())
|
if (!createPipelines())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
g_render.stats.models_dynamic = R_SpeedsRegisterMetric("models_dynamic", "");
|
R_SpeedsRegisterMetric(&g_render.stats.dynamic_model_count, "models_dynamic", "");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -363,8 +363,6 @@ enum {
|
|||||||
void VK_RenderBegin( qboolean ray_tracing ) {
|
void VK_RenderBegin( qboolean ray_tracing ) {
|
||||||
APROF_SCOPE_BEGIN(renderbegin);
|
APROF_SCOPE_BEGIN(renderbegin);
|
||||||
|
|
||||||
g_render.stats.models_dynamic->value = 0;
|
|
||||||
|
|
||||||
g_render_state.uniform_data_set_mask = UNIFORM_UNSET;
|
g_render_state.uniform_data_set_mask = UNIFORM_UNSET;
|
||||||
g_render_state.current_ubo_offset_FIXME = UINT32_MAX;
|
g_render_state.current_ubo_offset_FIXME = UINT32_MAX;
|
||||||
memset(&g_render_state.current_uniform_data, 0, sizeof(g_render_state.current_uniform_data));
|
memset(&g_render_state.current_uniform_data, 0, sizeof(g_render_state.current_uniform_data));
|
||||||
@ -815,7 +813,7 @@ void VK_RenderModelDynamicCommit( void ) {
|
|||||||
ASSERT(g_dynamic_model.model.geometries);
|
ASSERT(g_dynamic_model.model.geometries);
|
||||||
|
|
||||||
if (g_dynamic_model.model.num_geometries > 0) {
|
if (g_dynamic_model.model.num_geometries > 0) {
|
||||||
g_render.stats.models_dynamic->value++;
|
g_render.stats.dynamic_model_count++;
|
||||||
g_dynamic_model.model.dynamic = true;
|
g_dynamic_model.model.dynamic = true;
|
||||||
VK_RenderModelInit( &g_dynamic_model.model );
|
VK_RenderModelInit( &g_dynamic_model.model );
|
||||||
VK_RenderModelDraw( NULL, &g_dynamic_model.model );
|
VK_RenderModelDraw( NULL, &g_dynamic_model.model );
|
||||||
|
@ -38,11 +38,11 @@ static struct {
|
|||||||
VkCommandBuffer cmdbuf;
|
VkCommandBuffer cmdbuf;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
r_speeds_metric_t *total_size;
|
int total_size;
|
||||||
r_speeds_metric_t *buffers_size;
|
int buffers_size;
|
||||||
r_speeds_metric_t *images_size;
|
int images_size;
|
||||||
r_speeds_metric_t *buffer_chunks;
|
int buffer_chunks;
|
||||||
r_speeds_metric_t *images;
|
int images;
|
||||||
} stats;
|
} stats;
|
||||||
} g_staging = {0};
|
} g_staging = {0};
|
||||||
|
|
||||||
@ -54,12 +54,12 @@ qboolean R_VkStagingInit(void) {
|
|||||||
|
|
||||||
R_FlippingBuffer_Init(&g_staging.buffer_alloc, DEFAULT_STAGING_SIZE);
|
R_FlippingBuffer_Init(&g_staging.buffer_alloc, DEFAULT_STAGING_SIZE);
|
||||||
|
|
||||||
g_staging.stats.total_size = R_SpeedsRegisterMetric("staging_total_size", "KiB");
|
R_SpeedsRegisterMetric(&g_staging.stats.total_size, "staging_total_size", "KiB");
|
||||||
g_staging.stats.buffers_size = R_SpeedsRegisterMetric("staging_buffers_size", "KiB");
|
R_SpeedsRegisterMetric(&g_staging.stats.buffers_size, "staging_buffers_size", "KiB");
|
||||||
g_staging.stats.images_size = R_SpeedsRegisterMetric("staging_images_size", "KiB");
|
R_SpeedsRegisterMetric(&g_staging.stats.images_size, "staging_images_size", "KiB");
|
||||||
|
|
||||||
g_staging.stats.buffer_chunks = R_SpeedsRegisterMetric("staging_buffer_chunks", "");
|
R_SpeedsRegisterMetric(&g_staging.stats.buffer_chunks, "staging_buffer_chunks", "");
|
||||||
g_staging.stats.images = R_SpeedsRegisterMetric("staging_images", "");
|
R_SpeedsRegisterMetric(&g_staging.stats.images, "staging_images", "");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -189,13 +189,13 @@ static void commitBuffers(VkCommandBuffer cmdbuf) {
|
|||||||
|
|
||||||
if (prev_buffer != VK_NULL_HANDLE) {
|
if (prev_buffer != VK_NULL_HANDLE) {
|
||||||
DEBUG_NV_CHECKPOINTF(cmdbuf, "staging dst_buffer=%p count=%d", prev_buffer, i-first_copy);
|
DEBUG_NV_CHECKPOINTF(cmdbuf, "staging dst_buffer=%p count=%d", prev_buffer, i-first_copy);
|
||||||
g_staging.stats.buffer_chunks->value++;
|
g_staging.stats.buffer_chunks++;
|
||||||
vkCmdCopyBuffer(cmdbuf, g_staging.buffer.buffer,
|
vkCmdCopyBuffer(cmdbuf, g_staging.buffer.buffer,
|
||||||
prev_buffer,
|
prev_buffer,
|
||||||
i - first_copy, g_staging.buffers.copy + first_copy);
|
i - first_copy, g_staging.buffers.copy + first_copy);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_staging.stats.buffers_size->value += g_staging.buffers.copy[i].size;
|
g_staging.stats.buffers_size += g_staging.buffers.copy[i].size;
|
||||||
|
|
||||||
prev_buffer = g_staging.buffers.dest[i];
|
prev_buffer = g_staging.buffers.dest[i];
|
||||||
first_copy = i;
|
first_copy = i;
|
||||||
@ -203,7 +203,7 @@ static void commitBuffers(VkCommandBuffer cmdbuf) {
|
|||||||
|
|
||||||
if (prev_buffer != VK_NULL_HANDLE) {
|
if (prev_buffer != VK_NULL_HANDLE) {
|
||||||
DEBUG_NV_CHECKPOINTF(cmdbuf, "staging dst_buffer=%p count=%d", prev_buffer, g_staging.buffers.count-first_copy);
|
DEBUG_NV_CHECKPOINTF(cmdbuf, "staging dst_buffer=%p count=%d", prev_buffer, g_staging.buffers.count-first_copy);
|
||||||
g_staging.stats.buffer_chunks->value++;
|
g_staging.stats.buffer_chunks++;
|
||||||
vkCmdCopyBuffer(cmdbuf, g_staging.buffer.buffer,
|
vkCmdCopyBuffer(cmdbuf, g_staging.buffer.buffer,
|
||||||
prev_buffer,
|
prev_buffer,
|
||||||
g_staging.buffers.count - first_copy, g_staging.buffers.copy + first_copy);
|
g_staging.buffers.count - first_copy, g_staging.buffers.copy + first_copy);
|
||||||
@ -219,8 +219,8 @@ static void commitImages(VkCommandBuffer cmdbuf) {
|
|||||||
/* gEngine.Con_Reportf(" i%d: [%08llx, ?) => %p\n", i, copy->bufferOffset, g_staging.images.dest[i].image); */
|
/* gEngine.Con_Reportf(" i%d: [%08llx, ?) => %p\n", i, copy->bufferOffset, g_staging.images.dest[i].image); */
|
||||||
/* } */
|
/* } */
|
||||||
|
|
||||||
g_staging.stats.images->value++;
|
g_staging.stats.images++;
|
||||||
g_staging.stats.images_size->value += g_staging.images.dest[i].size;
|
g_staging.stats.images_size += g_staging.images.dest[i].size;
|
||||||
|
|
||||||
vkCmdCopyBufferToImage(cmdbuf, g_staging.buffer.buffer,
|
vkCmdCopyBufferToImage(cmdbuf, g_staging.buffer.buffer,
|
||||||
g_staging.images.dest[i].image,
|
g_staging.images.dest[i].image,
|
||||||
@ -261,12 +261,6 @@ void R_VkStagingFrameBegin(void) {
|
|||||||
|
|
||||||
g_staging.buffers.count = 0;
|
g_staging.buffers.count = 0;
|
||||||
g_staging.images.count = 0;
|
g_staging.images.count = 0;
|
||||||
|
|
||||||
g_staging.stats.images->value = 0;
|
|
||||||
g_staging.stats.buffer_chunks->value = 0;
|
|
||||||
g_staging.stats.total_size->value = 0;
|
|
||||||
g_staging.stats.buffers_size->value = 0;
|
|
||||||
g_staging.stats.images_size->value = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VkCommandBuffer R_VkStagingFrameEnd(void) {
|
VkCommandBuffer R_VkStagingFrameEnd(void) {
|
||||||
@ -281,9 +275,9 @@ VkCommandBuffer R_VkStagingFrameEnd(void) {
|
|||||||
g_staging.upload_pool.buffers[1] = g_staging.upload_pool.buffers[2];
|
g_staging.upload_pool.buffers[1] = g_staging.upload_pool.buffers[2];
|
||||||
g_staging.upload_pool.buffers[2] = tmp;
|
g_staging.upload_pool.buffers[2] = tmp;
|
||||||
|
|
||||||
g_staging.stats.total_size->value = (g_staging.stats.images_size->value + g_staging.stats.buffers_size->value) / 1024;
|
g_staging.stats.total_size = (g_staging.stats.images_size + g_staging.stats.buffers_size) / 1024;
|
||||||
g_staging.stats.images_size->value /= 1024;
|
g_staging.stats.images_size /= 1024;
|
||||||
g_staging.stats.buffers_size->value /= 1024;
|
g_staging.stats.buffers_size /= 1024;
|
||||||
|
|
||||||
return cmdbuf;
|
return cmdbuf;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user