diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2021-06-17 00:29:48 +0200 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2021-06-17 00:29:48 +0200 |
commit | ca6f47c6862a24dfa78f3d25c8b7819636218cdd (patch) | |
tree | d45fea664fa1e1d4de04b206289f638ffe1ceedc /src/video_core/vulkan_common | |
parent | Reaper: Address Feedback. (diff) | |
download | yuzu-ca6f47c6862a24dfa78f3d25c8b7819636218cdd.tar yuzu-ca6f47c6862a24dfa78f3d25c8b7819636218cdd.tar.gz yuzu-ca6f47c6862a24dfa78f3d25c8b7819636218cdd.tar.bz2 yuzu-ca6f47c6862a24dfa78f3d25c8b7819636218cdd.tar.lz yuzu-ca6f47c6862a24dfa78f3d25c8b7819636218cdd.tar.xz yuzu-ca6f47c6862a24dfa78f3d25c8b7819636218cdd.tar.zst yuzu-ca6f47c6862a24dfa78f3d25c8b7819636218cdd.zip |
Diffstat (limited to 'src/video_core/vulkan_common')
-rw-r--r-- | src/video_core/vulkan_common/vulkan_device.cpp | 14 | ||||
-rw-r--r-- | src/video_core/vulkan_common/vulkan_device.h | 9 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 64206b3d2..724a0141c 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -408,6 +408,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR } logical = vk::Device::Create(physical, queue_cis, extensions, first_next, dld); + CollectPhysicalMemoryInfo(); CollectTelemetryParameters(); CollectToolingInfo(); @@ -818,6 +819,19 @@ void Device::CollectTelemetryParameters() { } } +void Device::CollectPhysicalMemoryInfo() { + const auto mem_properties = physical.GetMemoryProperties(); + const std::size_t num_properties = mem_properties.memoryTypeCount; + device_access_memory = 0; + for (std::size_t element = 0; element < num_properties; element++) { + if ((mem_properties.memoryTypes[element].propertyFlags & + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) != 0) { + const std::size_t heap_index = mem_properties.memoryTypes[element].heapIndex; + device_access_memory += mem_properties.memoryHeaps[heap_index].size; + } + } +} + void Device::CollectToolingInfo() { if (!ext_tooling_info) { return; diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index 67d70cd22..a1aba973b 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h @@ -225,6 +225,10 @@ public: return use_asynchronous_shaders; } + u64 GetDeviceLocalMemory() const { + return device_access_memory; + } + private: /// Checks if the physical device is suitable. void CheckSuitability(bool requires_swapchain) const; @@ -244,6 +248,9 @@ private: /// Collects information about attached tools. void CollectToolingInfo(); + /// Collects information about the device's local memory. + void CollectPhysicalMemoryInfo(); + /// Returns a list of queue initialization descriptors. std::vector<VkDeviceQueueCreateInfo> GetDeviceQueueCreateInfos() const; @@ -302,6 +309,8 @@ private: /// Nsight Aftermath GPU crash tracker std::unique_ptr<NsightAftermathTracker> nsight_aftermath_tracker; + + u64 device_access_memory; }; } // namespace Vulkan |