The idea behind doing this was to make it easier to set various flags. However, we have enough custom flag settings floating around the driver that this is more of a nuisance than a help. --- src/intel/vulkan/anv_allocator.c | 17 ++++++++++------- src/intel/vulkan/anv_device.c | 12 ++++++------ src/intel/vulkan/anv_queue.c | 4 ++-- 3 files changed, 18 insertions(+), 15 deletions(-)
diff --git a/src/intel/vulkan/anv_allocator.c b/src/intel/vulkan/anv_allocator.c index b767542..d637867 100644 --- a/src/intel/vulkan/anv_allocator.c +++ b/src/intel/vulkan/anv_allocator.c @@ -1025,6 +1025,12 @@ anv_bo_pool_alloc(struct anv_bo_pool *pool, struct anv_bo *bo, uint32_t size) if (result != VK_SUCCESS) return result; + if (pool->device->instance->physicalDevice.supports_48bit_addresses) + new_bo.flags |= EXEC_OBJECT_SUPPORTS_48B_ADDRESS; + + if (pool->device->instance->physicalDevice.has_exec_async) + new_bo.flags |= EXEC_OBJECT_ASYNC; + assert(new_bo.size == pow2_size); new_bo.map = anv_gem_mmap(pool->device, new_bo.gem_handle, 0, pow2_size, 0); @@ -1154,7 +1160,10 @@ anv_scratch_pool_alloc(struct anv_device *device, struct anv_scratch_pool *pool, * * so nothing will ever touch the top page. */ - bo->bo.flags &= ~EXEC_OBJECT_SUPPORTS_48B_ADDRESS; + assert(!(bo->bo.flags & EXEC_OBJECT_SUPPORTS_48B_ADDRESS)); + + if (device->instance->physicalDevice.has_exec_async) + bo->bo.flags |= EXEC_OBJECT_ASYNC; /* Set the exists last because it may be read by other threads */ __sync_synchronize(); @@ -1309,12 +1318,6 @@ anv_bo_cache_import(struct anv_device *device, anv_bo_init(&bo->bo, gem_handle, size); - if (device->instance->physicalDevice.supports_48bit_addresses) - bo->bo.flags |= EXEC_OBJECT_SUPPORTS_48B_ADDRESS; - - if (device->instance->physicalDevice.has_exec_async) - bo->bo.flags |= EXEC_OBJECT_ASYNC; - _mesa_hash_table_insert(cache->bo_map, (void *)(uintptr_t)gem_handle, bo); } diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c index b0ccbbb..9444ff8 100644 --- a/src/intel/vulkan/anv_device.c +++ b/src/intel/vulkan/anv_device.c @@ -1453,12 +1453,6 @@ anv_bo_init_new(struct anv_bo *bo, struct anv_device *device, uint64_t size) anv_bo_init(bo, gem_handle, size); - if (device->instance->physicalDevice.supports_48bit_addresses) - bo->flags |= EXEC_OBJECT_SUPPORTS_48B_ADDRESS; - - if (device->instance->physicalDevice.has_exec_async) - bo->flags |= EXEC_OBJECT_ASYNC; - return VK_SUCCESS; } @@ -1536,6 +1530,12 @@ VkResult anv_AllocateMemory( goto fail; } + if (pdevice->supports_48bit_addresses) + mem->bo->flags |= EXEC_OBJECT_SUPPORTS_48B_ADDRESS; + + if (pdevice->has_exec_async) + mem->bo->flags |= EXEC_OBJECT_ASYNC; + *pMem = anv_device_memory_to_handle(mem); return VK_SUCCESS; diff --git a/src/intel/vulkan/anv_queue.c b/src/intel/vulkan/anv_queue.c index fac979a..86eee28 100644 --- a/src/intel/vulkan/anv_queue.c +++ b/src/intel/vulkan/anv_queue.c @@ -553,7 +553,7 @@ VkResult anv_CreateSemaphore( /* If we're going to use this as a fence, we need to *not* have the * EXEC_OBJECT_ASYNC bit set. */ - semaphore->permanent.bo->flags &= ~EXEC_OBJECT_ASYNC; + assert(!(semaphore->permanent.bo->flags & EXEC_OBJECT_ASYNC)); } else { assert(!"Unknown handle type"); vk_free2(&device->alloc, pAllocator, semaphore); @@ -644,7 +644,7 @@ VkResult anv_ImportSemaphoreFdKHX( /* If we're going to use this as a fence, we need to *not* have the * EXEC_OBJECT_ASYNC bit set. */ - bo->flags &= ~EXEC_OBJECT_ASYNC; + assert(!(bo->flags & EXEC_OBJECT_ASYNC)); anv_semaphore_impl_cleanup(device, &semaphore->permanent); -- 2.5.0.400.gff86faf _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev