ruffle icon indicating copy to clipboard operation
ruffle copied to clipboard

wgpu: Include memory report in debug info

Open Aaron1011 opened this issue 1 year ago • 3 comments

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 } }) }

Aaron1011 avatar Aug 12 '24 18:08 Aaron1011

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
      }
    }
  )
}

torokati44 avatar Aug 12 '24 18:08 torokati44

Shouldn't that info be gathered at the time of a panic instead of when instantiating the player?

kjarosh avatar Aug 20 '24 14:08 kjarosh

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.

Dinnerbone avatar Aug 21 '24 20:08 Dinnerbone