anv: Make supports_48bit_addresses a heap property

Reviewed-by: Nanley Chery <nanley.g.chery@intel.com>
Cc: "17.1" <mesa-stable@lists.freedesktop.org>
This commit is contained in:
Jason Ekstrand
2017-05-17 11:38:16 -07:00
parent 00df1cd9d6
commit b83b1af6f6
2 changed files with 14 additions and 3 deletions

View File

@@ -149,9 +149,10 @@ anv_physical_device_init_heaps(struct anv_physical_device *device, int fd)
} }
device->memory.heap_count = 1; device->memory.heap_count = 1;
device->memory.heaps[0] = (VkMemoryHeap) { device->memory.heaps[0] = (struct anv_memory_heap) {
.size = heap_size, .size = heap_size,
.flags = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT, .flags = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
.supports_48bit_addresses = device->supports_48bit_addresses,
}; };
return VK_SUCCESS; return VK_SUCCESS;
@@ -1530,7 +1531,8 @@ VkResult anv_AllocateMemory(
goto fail; goto fail;
} }
if (pdevice->supports_48bit_addresses) assert(mem->type->heapIndex < pdevice->memory.heap_count);
if (pdevice->memory.heaps[mem->type->heapIndex].supports_48bit_addresses)
mem->bo->flags |= EXEC_OBJECT_SUPPORTS_48B_ADDRESS; mem->bo->flags |= EXEC_OBJECT_SUPPORTS_48B_ADDRESS;
if (pdevice->has_exec_async) if (pdevice->has_exec_async)

View File

@@ -649,6 +649,15 @@ struct anv_memory_type {
VkBufferUsageFlags valid_buffer_usage; VkBufferUsageFlags valid_buffer_usage;
}; };
struct anv_memory_heap {
/* Standard bits passed on to the client */
VkDeviceSize size;
VkMemoryHeapFlags flags;
/* Driver-internal book-keeping */
bool supports_48bit_addresses;
};
struct anv_physical_device { struct anv_physical_device {
VK_LOADER_DATA _loader_data; VK_LOADER_DATA _loader_data;
@@ -678,7 +687,7 @@ struct anv_physical_device {
uint32_t type_count; uint32_t type_count;
struct anv_memory_type types[VK_MAX_MEMORY_TYPES]; struct anv_memory_type types[VK_MAX_MEMORY_TYPES];
uint32_t heap_count; uint32_t heap_count;
VkMemoryHeap heaps[VK_MAX_MEMORY_HEAPS]; struct anv_memory_heap heaps[VK_MAX_MEMORY_HEAPS];
} memory; } memory;
uint8_t pipeline_cache_uuid[VK_UUID_SIZE]; uint8_t pipeline_cache_uuid[VK_UUID_SIZE];