Browse Source

[TEST] VMA budget fix

temporary-branch
CamilleLaVey 4 days ago
parent
commit
de9b1071a5
  1. 5
      src/video_core/vulkan_common/vulkan_device.cpp
  2. 5
      src/video_core/vulkan_common/vulkan_memory_allocator.cpp

5
src/video_core/vulkan_common/vulkan_device.cpp

@ -1504,7 +1504,10 @@ void Device::TickAllocatorFrame() const {
} }
u64 Device::GetDeviceMemoryUsage() const { u64 Device::GetDeviceMemoryUsage() const {
VkPhysicalDeviceMemoryBudgetPropertiesEXT budget;
if (!extensions.memory_budget) {
return GetMemoryBudgetInfo().allocation_bytes;
}
VkPhysicalDeviceMemoryBudgetPropertiesEXT budget{};
budget.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT; budget.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT;
budget.pNext = nullptr; budget.pNext = nullptr;
physical.GetMemoryProperties(&budget); physical.GetMemoryProperties(&budget);

5
src/video_core/vulkan_common/vulkan_memory_allocator.cpp

@ -108,7 +108,7 @@ namespace Vulkan {
vk::Image MemoryAllocator::CreateImage(const VkImageCreateInfo &ci) const vk::Image MemoryAllocator::CreateImage(const VkImageCreateInfo &ci) const
{ {
const VmaAllocationCreateInfo alloc_ci = { const VmaAllocationCreateInfo alloc_ci = {
.flags = VMA_ALLOCATION_CREATE_WITHIN_BUDGET_BIT,
.flags = device.CanReportMemoryUsage() ? VMA_ALLOCATION_CREATE_WITHIN_BUDGET_BIT : 0u,
.usage = VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE, .usage = VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE,
.requiredFlags = 0, .requiredFlags = 0,
.preferredFlags = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, .preferredFlags = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
@ -162,7 +162,8 @@ namespace Vulkan {
&& device.GetDriverID() == VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA) && device.GetDriverID() == VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA)
? VK_MEMORY_PROPERTY_HOST_CACHED_BIT : 0; ? VK_MEMORY_PROPERTY_HOST_CACHED_BIT : 0;
const VmaAllocationCreateInfo alloc_ci = { const VmaAllocationCreateInfo alloc_ci = {
.flags = VMA_ALLOCATION_CREATE_WITHIN_BUDGET_BIT | MemoryUsageVmaFlags(usage),
.flags = (device.CanReportMemoryUsage() ? VMA_ALLOCATION_CREATE_WITHIN_BUDGET_BIT : 0u) |
MemoryUsageVmaFlags(usage),
.usage = MemoryUsageVma(usage), .usage = MemoryUsageVma(usage),
.requiredFlags = 0, .requiredFlags = 0,
.preferredFlags = MemoryUsagePreferredVmaFlags(usage) | anv_flags, .preferredFlags = MemoryUsagePreferredVmaFlags(usage) | anv_flags,

Loading…
Cancel
Save