radv: Always expose non-visible local memory type on dedicated GPUs
DOOM Eternal expects this type, but RADV doesn't expose it when the VRAM is entirely host-visible, in my case on Fiji. Matches AMDVLK behavior. Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/3054 Cc: <mesa-stable@lists.freedesktop.org> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5308>
This commit is contained in:
committed by
Marge Bot
parent
622e3a8510
commit
202252566b
@@ -162,24 +162,13 @@ radv_physical_device_init_mem_types(struct radv_physical_device *device)
|
||||
|
||||
unsigned type_count = 0;
|
||||
|
||||
if (device->rad_info.has_dedicated_vram) {
|
||||
if (vram_index >= 0) {
|
||||
device->memory_domains[type_count] = RADEON_DOMAIN_VRAM;
|
||||
device->memory_flags[type_count] = RADEON_FLAG_NO_CPU_ACCESS;
|
||||
device->memory_properties.memoryTypes[type_count++] = (VkMemoryType) {
|
||||
.propertyFlags = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
|
||||
.heapIndex = vram_index,
|
||||
};
|
||||
}
|
||||
} else {
|
||||
if (visible_vram_index >= 0) {
|
||||
device->memory_domains[type_count] = RADEON_DOMAIN_VRAM;
|
||||
device->memory_flags[type_count] = RADEON_FLAG_NO_CPU_ACCESS;
|
||||
device->memory_properties.memoryTypes[type_count++] = (VkMemoryType) {
|
||||
.propertyFlags = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
|
||||
.heapIndex = visible_vram_index,
|
||||
};
|
||||
}
|
||||
if (vram_index >= 0 || visible_vram_index >= 0) {
|
||||
device->memory_domains[type_count] = RADEON_DOMAIN_VRAM;
|
||||
device->memory_flags[type_count] = RADEON_FLAG_NO_CPU_ACCESS;
|
||||
device->memory_properties.memoryTypes[type_count++] = (VkMemoryType) {
|
||||
.propertyFlags = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
|
||||
.heapIndex = vram_index >= 0 ? vram_index : visible_vram_index,
|
||||
};
|
||||
}
|
||||
|
||||
if (gart_index >= 0) {
|
||||
|
||||
Reference in New Issue
Block a user