summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Guérin <libcg@protonmail.com>2020-06-02 22:14:44 -0700
committerMarge Bot <eric+marge@anholt.net>2020-06-04 15:16:30 +0000
commit202252566bf053a31a4162e99f6fef5b82efc837 (patch)
tree6b6acca2f1f0aea5c6f31a989144e1da6d083389
parent622e3a8510ad6ccff41b2ba2f6184b80ad67dea5 (diff)
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>
-rw-r--r--src/amd/vulkan/radv_device.c25
1 files changed, 7 insertions, 18 deletions
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index c6845c5c494..4d3d0dea3e4 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -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) {