summaryrefslogtreecommitdiffstats
path: root/src/intel/vulkan
diff options
context:
space:
mode:
Diffstat (limited to 'src/intel/vulkan')
-rw-r--r--src/intel/vulkan/anv_device.c12
-rw-r--r--src/intel/vulkan/anv_private.h2
2 files changed, 7 insertions, 7 deletions
diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index 523d40e05c9..4a0115ecf52 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -1466,6 +1466,7 @@ VkResult anv_AllocateMemory(
VkDeviceMemory* pMem)
{
ANV_FROM_HANDLE(anv_device, device, _device);
+ struct anv_physical_device *pdevice = &device->instance->physicalDevice;
struct anv_device_memory *mem;
VkResult result = VK_SUCCESS;
@@ -1474,10 +1475,6 @@ VkResult anv_AllocateMemory(
/* The Vulkan 1.0.33 spec says "allocationSize must be greater than 0". */
assert(pAllocateInfo->allocationSize > 0);
- /* We support exactly one memory heap. */
- assert(pAllocateInfo->memoryTypeIndex == 0 ||
- (!device->info.has_llc && pAllocateInfo->memoryTypeIndex < 2));
-
/* The kernel relocation API has a limitation of a 32-bit delta value
* applied to the address before it is written which, in spite of it being
* unsigned, is treated as signed . Because of the way that this maps to
@@ -1505,7 +1502,8 @@ VkResult anv_AllocateMemory(
if (mem == NULL)
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
- mem->type_index = pAllocateInfo->memoryTypeIndex;
+ assert(pAllocateInfo->memoryTypeIndex < pdevice->memory.type_count);
+ mem->type = &pdevice->memory.types[pAllocateInfo->memoryTypeIndex];
mem->map = NULL;
mem->map_size = 0;
@@ -1630,7 +1628,9 @@ VkResult anv_MapMemory(
* userspace. */
uint32_t gem_flags = 0;
- if (!device->info.has_llc && mem->type_index == 0)
+
+ if (!device->info.has_llc &&
+ (mem->type->propertyFlags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT))
gem_flags |= I915_MMAP_WC;
/* GEM will fail to map if the offset isn't 4k-aligned. Round down. */
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index 16e31d32952..90fee8fc26f 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -1002,7 +1002,7 @@ _anv_combine_address(struct anv_batch *batch, void *location,
struct anv_device_memory {
struct anv_bo * bo;
- uint32_t type_index;
+ VkMemoryType * type;
VkDeviceSize map_size;
void * map;
};