pipeline_statistics.h 768 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <mutex>
  5. #include <vector>
  6. #include "common/common_types.h"
  7. #include "video_core/vulkan_common/vulkan_wrapper.h"
  8. namespace Vulkan {
  9. class Device;
  10. class PipelineStatistics {
  11. public:
  12. explicit PipelineStatistics(const Device& device_);
  13. void Collect(VkPipeline pipeline);
  14. void Report() const;
  15. private:
  16. struct Stats {
  17. u64 code_size{};
  18. u64 register_count{};
  19. u64 sgpr_count{};
  20. u64 vgpr_count{};
  21. u64 branches_count{};
  22. u64 basic_block_count{};
  23. };
  24. const Device& device;
  25. mutable std::mutex mutex;
  26. std::vector<Stats> collected_stats;
  27. };
  28. } // namespace Vulkan