Browse Source

[vk/vma] force anv to have HOST_CACHED stream buffers

Signed-off-by: lizzie <lizzie@eden-emu.dev>
lizzie/anv-cached-mesa-hack
lizzie 1 week ago
parent
commit
9c70cb432b
  1. 10
      src/video_core/vulkan_common/vulkan_memory_allocator.cpp

10
src/video_core/vulkan_common/vulkan_memory_allocator.cpp

@ -256,14 +256,16 @@ namespace Vulkan {
device.GetDispatchLoader());
}
vk::Buffer
MemoryAllocator::CreateBuffer(const VkBufferCreateInfo &ci, MemoryUsage usage) const
{
vk::Buffer MemoryAllocator::CreateBuffer(const VkBufferCreateInfo &ci, MemoryUsage usage) const {
// MESA will do memcpy() if not marked as host cached, so just force mark it for most buffers
auto const anv_flags = (usage == MemoryUsage::Stream
&& device.GetDriverID() == VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA)
? VK_MEMORY_PROPERTY_HOST_CACHED_BIT : 0;
const VmaAllocationCreateInfo alloc_ci = {
.flags = VMA_ALLOCATION_CREATE_WITHIN_BUDGET_BIT | MemoryUsageVmaFlags(usage),
.usage = MemoryUsageVma(usage),
.requiredFlags = 0,
.preferredFlags = MemoryUsagePreferredVmaFlags(usage),
.preferredFlags = MemoryUsagePreferredVmaFlags(usage) | anv_flags,
.memoryTypeBits = usage == MemoryUsage::Stream ? 0u : valid_memory_types,
.pool = VK_NULL_HANDLE,
.pUserData = nullptr,

Loading…
Cancel
Save