On Thu, May 18, 2017 at 02:00:55PM -0700, Jason Ekstrand wrote: > Before, we were just comparing the type index to 0. Now we actually > look the type up in the table and check its properties to determine what > kind of mapping we want to do. > --- > src/intel/vulkan/anv_device.c | 12 ++++++------ > src/intel/vulkan/anv_private.h | 2 +- > 2 files changed, 7 insertions(+), 7 deletions(-) >
Patches 7 and 8 are Reviewed-by: Nanley Chery <nanley.g.ch...@intel.com> > diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c > index 523d40e..4a0115e 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 5287daf..8ed8e0f 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; > }; > -- > 2.5.0.400.gff86faf > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev