radv: Mark GTT memory as device local for APUs.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Fri, 20 Apr 2018 16:16:02 +0000 (18:16 +0200)
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Fri, 20 Apr 2018 16:16:16 +0000 (18:16 +0200)
Otherwise a lot of games complain about not having enough memory,
and it is sort of local so this seems reasonable to me.

CC: 18.0 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
src/amd/vulkan/radv_device.c

index edf099e..d88d5f0 100644 (file)
@@ -144,7 +144,7 @@ radv_physical_device_init_mem_types(struct radv_physical_device *device)
                gart_index = device->memory_properties.memoryHeapCount++;
                device->memory_properties.memoryHeaps[gart_index] = (VkMemoryHeap) {
                        .size = device->rad_info.gart_size,
-                       .flags = 0,
+                       .flags = device->rad_info.has_dedicated_vram ? 0 : VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
                };
        }
 
@@ -161,7 +161,8 @@ radv_physical_device_init_mem_types(struct radv_physical_device *device)
                device->mem_type_indices[type_count] = RADV_MEM_TYPE_GTT_WRITE_COMBINE;
                device->memory_properties.memoryTypes[type_count++] = (VkMemoryType) {
                        .propertyFlags = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
-                       VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
+                       VK_MEMORY_PROPERTY_HOST_COHERENT_BIT |
+                       (device->rad_info.has_dedicated_vram ? 0 : VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT),
                        .heapIndex = gart_index,
                };
        }
@@ -179,7 +180,8 @@ radv_physical_device_init_mem_types(struct radv_physical_device *device)
                device->memory_properties.memoryTypes[type_count++] = (VkMemoryType) {
                        .propertyFlags = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
                        VK_MEMORY_PROPERTY_HOST_COHERENT_BIT |
-                       VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
+                       VK_MEMORY_PROPERTY_HOST_CACHED_BIT |
+                       (device->rad_info.has_dedicated_vram ? 0 : VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT),
                        .heapIndex = gart_index,
                };
        }