vulkan/overlay: add support for fps output in file

Also make the sampling period configurable.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
This commit is contained in:
Lionel Landwerlin
2019-02-25 17:48:14 +00:00
parent b6b275212d
commit add4b8930a
4 changed files with 39 additions and 15 deletions

View File

@@ -211,6 +211,8 @@ static struct instance_data *new_instance_data(VkInstance instance)
static void destroy_instance_data(struct instance_data *data)
{
if (data->params.output_file)
fclose(data->params.output_file);
unmap_object(data->instance);
ralloc_free(data);
}
@@ -338,7 +340,8 @@ static void destroy_swapchain_data(struct swapchain_data *data)
static void snapshot_swapchain_frame(struct swapchain_data *data)
{
uint64_t now = os_time_get();
struct instance_data *instance_data = data->device->instance;
uint64_t now = os_time_get(); /* us */
if (data->last_present_time) {
data->frame_times[(data->n_frames - 1) % ARRAY_SIZE(data->frame_times)] =
@@ -346,11 +349,15 @@ static void snapshot_swapchain_frame(struct swapchain_data *data)
}
if (data->last_fps_update) {
double elapsed = (double)(now - data->last_fps_update);
if (elapsed >= 500000.0) {
data->fps = ((uint64_t)data->n_frames_since_update * 1000000 / elapsed);
double elapsed = (double)(now - data->last_fps_update); /* us */
if (elapsed >= instance_data->params.fps_sampling_period) {
data->fps = 1000000.0f * data->n_frames_since_update / elapsed;
data->n_frames_since_update = 0;
data->last_fps_update = now;
if (instance_data->params.output_file) {
fprintf(instance_data->params.output_file, "%.2f\n", data->fps);
fflush(instance_data->params.output_file);
}
}
} else {
data->last_fps_update = now;