summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>2016-12-08 22:28:21 +0100
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>2016-12-09 08:53:05 +0100
commit4ae84efbc5c6f3cad830c71b7569a2659e43fb29 (patch)
tree2312d86684fd6b3ddf429a3daacab425a79c0d3d
parent011e5570f833ad13d4827ebc4b25bab2b672cc0c (diff)
radv: Use enum for memory heaps.
Inspired by patches from Eric Engestrom. Signed-off-by: Bas Nieuwenhuizen <basni@google.com> Cc: Eric Engestrom <eric@engestrom.ch> Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net> Reviewed-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--src/amd/vulkan/radv_device.c18
-rw-r--r--src/amd/vulkan/radv_private.h7
2 files changed, 17 insertions, 8 deletions
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index 0defc0fb4ab..7a253f63036 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -578,37 +578,39 @@ void radv_GetPhysicalDeviceMemoryProperties(
pMemoryProperties->memoryTypeCount = 4;
pMemoryProperties->memoryTypes[0] = (VkMemoryType) {
.propertyFlags = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
- .heapIndex = 0,
+ .heapIndex = RADV_MEM_HEAP_VRAM,
};
pMemoryProperties->memoryTypes[1] = (VkMemoryType) {
.propertyFlags = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
- .heapIndex = 2,
+ .heapIndex = RADV_MEM_HEAP_GTT,
};
pMemoryProperties->memoryTypes[2] = (VkMemoryType) {
.propertyFlags = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT |
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
- .heapIndex = 1,
+ .heapIndex = RADV_MEM_HEAP_VRAM_CPU_ACCESS,
};
pMemoryProperties->memoryTypes[3] = (VkMemoryType) {
.propertyFlags = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
VK_MEMORY_PROPERTY_HOST_COHERENT_BIT |
VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
- .heapIndex = 2,
+ .heapIndex = RADV_MEM_HEAP_GTT,
};
- pMemoryProperties->memoryHeapCount = 3;
- pMemoryProperties->memoryHeaps[0] = (VkMemoryHeap) {
+ STATIC_ASSERT(RADV_MEM_HEAP_COUNT <= VK_MAX_MEMORY_HEAPS);
+
+ pMemoryProperties->memoryHeapCount = RADV_MEM_HEAP_COUNT;
+ pMemoryProperties->memoryHeaps[RADV_MEM_HEAP_VRAM] = (VkMemoryHeap) {
.size = physical_device->rad_info.vram_size -
physical_device->rad_info.visible_vram_size,
.flags = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
};
- pMemoryProperties->memoryHeaps[1] = (VkMemoryHeap) {
+ pMemoryProperties->memoryHeaps[RADV_MEM_HEAP_VRAM_CPU_ACCESS] = (VkMemoryHeap) {
.size = physical_device->rad_info.visible_vram_size,
.flags = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
};
- pMemoryProperties->memoryHeaps[2] = (VkMemoryHeap) {
+ pMemoryProperties->memoryHeaps[RADV_MEM_HEAP_GTT] = (VkMemoryHeap) {
.size = physical_device->rad_info.gart_size,
.flags = 0,
};
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
index 754cd0029ed..f2b6bf45d97 100644
--- a/src/amd/vulkan/radv_private.h
+++ b/src/amd/vulkan/radv_private.h
@@ -85,6 +85,13 @@ typedef uint32_t xcb_window_t;
#define NUM_DEPTH_CLEAR_PIPELINES 3
+enum radv_mem_heap {
+ RADV_MEM_HEAP_VRAM,
+ RADV_MEM_HEAP_VRAM_CPU_ACCESS,
+ RADV_MEM_HEAP_GTT,
+ RADV_MEM_HEAP_COUNT
+};
+
#define radv_noreturn __attribute__((__noreturn__))
#define radv_printflike(a, b) __attribute__((__format__(__printf__, a, b)))