ruffle
ruffle copied to clipboard
wgpu: Include memory report in debug info
Sample report:
wgpu memory report: GlobalReport { surfaces: RegistryReport { num_allocated: 1, num_kept_from_user: 1, num_released_from_user: 0, num_error: 0, element_size: 592 }, vulkan: None, gl: Some(HubReport { adapters: RegistryReport { num_allocated: 1, num_kept_from_user: 1, num_released_from_user: 0, num_error: 0, element_size: 272 }, devices: RegistryReport { num_allocated: 1, num_kept_from_user: 1, num_released_from_user: 0, num_error: 0, element_size: 9720 }, queues: RegistryReport { num_allocated: 1, num_kept_from_user: 1, num_released_from_user: 0, num_error: 0, element_size: 88 }, pipeline_layouts: RegistryReport { num_allocated: 5, num_kept_from_user: 5, num_released_from_user: 1, num_error: 0, element_size: 216 }, shader_modules: RegistryReport { num_allocated: 19, num_kept_from_user: 19, num_released_from_user: 1, num_error: 0, element_size: 832 }, bind_group_layouts: RegistryReport { num_allocated: 12, num_kept_from_user: 12, num_released_from_user: 1, num_error: 0, element_size: 232 }, bind_groups: RegistryReport { num_allocated: 3, num_kept_from_user: 3, num_released_from_user: 0, num_error: 0, element_size: 304 }, command_buffers: RegistryReport { num_allocated: 1, num_kept_from_user: 1, num_released_from_user: 0, num_error: 0, element_size: 9192 }, render_bundles: RegistryReport { num_allocated: 0, num_kept_from_user: 0, num_released_from_user: 0, num_error: 0, element_size: 848 }, render_pipelines: RegistryReport { num_allocated: 84, num_kept_from_user: 84, num_released_from_user: 0, num_error: 0, element_size: 712 }, compute_pipelines: RegistryReport { num_allocated: 0, num_kept_from_user: 0, num_released_from_user: 0, num_error: 0, element_size: 280 }, pipeline_caches: RegistryReport { num_allocated: 0, num_kept_from_user: 0, num_released_from_user: 0, num_error: 0, element_size: 64 }, query_sets: RegistryReport { num_allocated: 0, num_kept_from_user: 0, num_released_from_user: 0, num_error: 0, element_size: 88 }, buffers: RegistryReport { num_allocated: 22, num_kept_from_user: 22, num_released_from_user: 0, num_error: 0, element_size: 280 }, textures: RegistryReport { num_allocated: 1, num_kept_from_user: 1, num_released_from_user: 0, num_error: 0, element_size: 776 }, texture_views: RegistryReport { num_allocated: 0, num_kept_from_user: 0, num_released_from_user: 1, num_error: 0, element_size: 208 }, samplers: RegistryReport { num_allocated: 25, num_kept_from_user: 25, num_released_from_user: 0, num_error: 0, element_size: 64 } }) }
Pretty-printed:
GlobalReport {
surfaces: RegistryReport {
num_allocated: 1,
num_kept_from_user: 1,
num_released_from_user: 0,
num_error: 0,
element_size: 592
},
vulkan: None,
gl: Some(
HubReport {
adapters: RegistryReport {
num_allocated: 1,
num_kept_from_user: 1,
num_released_from_user: 0,
num_error: 0,
element_size: 272
},
devices: RegistryReport {
num_allocated: 1,
num_kept_from_user: 1,
num_released_from_user: 0,
num_error: 0,
element_size: 9720
},
queues: RegistryReport {
num_allocated: 1,
num_kept_from_user: 1,
num_released_from_user: 0,
num_error: 0,
element_size: 88
},
pipeline_layouts: RegistryReport {
num_allocated: 5,
num_kept_from_user: 5,
num_released_from_user: 1,
num_error: 0,
element_size: 216
},
shader_modules: RegistryReport {
num_allocated: 19,
num_kept_from_user: 19,
num_released_from_user: 1,
num_error: 0,
element_size: 832
},
bind_group_layouts: RegistryReport {
num_allocated: 12,
num_kept_from_user: 12,
num_released_from_user: 1,
num_error: 0,
element_size: 232
},
bind_groups: RegistryReport {
num_allocated: 3,
num_kept_from_user: 3,
num_released_from_user: 0,
num_error: 0,
element_size: 304
},
command_buffers: RegistryReport {
num_allocated: 1,
num_kept_from_user: 1,
num_released_from_user: 0,
num_error: 0,
element_size: 9192
},
render_bundles: RegistryReport {
num_allocated: 0,
num_kept_from_user: 0,
num_released_from_user: 0,
num_error: 0,
element_size: 848
},
render_pipelines: RegistryReport {
num_allocated: 84,
num_kept_from_user: 84,
num_released_from_user: 0,
num_error: 0,
element_size: 712
},
compute_pipelines: RegistryReport {
num_allocated: 0,
num_kept_from_user: 0,
num_released_from_user: 0,
num_error: 0,
element_size: 280
},
pipeline_caches: RegistryReport {
num_allocated: 0,
num_kept_from_user: 0,
num_released_from_user: 0,
num_error: 0,
element_size: 64
},
query_sets: RegistryReport {
num_allocated: 0,
num_kept_from_user: 0,
num_released_from_user: 0,
num_error: 0,
element_size: 88
},
buffers: RegistryReport {
num_allocated: 22,
num_kept_from_user: 22,
num_released_from_user: 0,
num_error: 0,
element_size: 280
},
textures: RegistryReport {
num_allocated: 1,
num_kept_from_user: 1,
num_released_from_user: 0,
num_error: 0,
element_size: 776
},
texture_views: RegistryReport {
num_allocated: 0,
num_kept_from_user: 0,
num_released_from_user: 1,
num_error: 0,
element_size: 208
},
samplers: RegistryReport {
num_allocated: 25,
num_kept_from_user: 25,
num_released_from_user: 0,
num_error: 0,
element_size: 64
}
}
)
}
Shouldn't that info be gathered at the time of a panic instead of when instantiating the player?
We show cached data at panic time, because... well, we panicked. So any data in this report will be wrong for those cases.
We'll need to find a better way to do this - and also really should update the report to indicate that it's indeed old cached info.