diff options
author | Jason Ekstrand <[email protected]> | 2017-05-17 11:31:02 -0700 |
---|---|---|
committer | Juan A. Suarez Romero <[email protected]> | 2017-06-02 23:04:01 +0200 |
commit | 86a8854b118fd42d157a5b640fa7a3a1cad92301 (patch) | |
tree | 6eee1dcab3200c7cb42666371a22b4382609fe01 /src/intel | |
parent | 0f042901e3cd451f9a7630376083a805328aebe3 (diff) |
anv: Stop setting BO flags in bo_init_new
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. This commit has the
following functional changes:
1) The workaround_bo created in anv_CreateDevice loses both flags.
This shouldn't matter because it's very small and entirely internal
to the driver.
2) The bo created in anv_CreateDmaBufImageINTEL loses the
EXEC_OBJECT_ASYNC flag. In retrospect, it never should have gotten
EXEC_OBJECT_ASYNC in the first place.
Reviewed-by: Nanley Chery <[email protected]>
Cc: "17.1" <[email protected]>
(cherry picked from commit 00df1cd9d6234cdfc9fb2bf3615196ff83a3c956)
[Juan A. Suarez: resolve trivial conflicts]
Signed-off-by: Juan A. Suarez Romero <[email protected]>
Conflicts:
src/intel/vulkan/anv_allocator.c
src/intel/vulkan/anv_device.c
src/intel/vulkan/anv_queue.c
Diffstat (limited to 'src/intel')
-rw-r--r-- | src/intel/vulkan/anv_allocator.c | 11 | ||||
-rw-r--r-- | src/intel/vulkan/anv_device.c | 12 | ||||
-rw-r--r-- | src/intel/vulkan/genX_query.c | 7 |
3 files changed, 23 insertions, 7 deletions
diff --git a/src/intel/vulkan/anv_allocator.c b/src/intel/vulkan/anv_allocator.c index b1efd324f51..ab825cdbc36 100644 --- a/src/intel/vulkan/anv_allocator.c +++ b/src/intel/vulkan/anv_allocator.c @@ -884,6 +884,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); @@ -1013,7 +1019,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(); diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c index e8ddf9faeed..b07def96288 100644 --- a/src/intel/vulkan/anv_device.c +++ b/src/intel/vulkan/anv_device.c @@ -1562,12 +1562,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; } @@ -1627,6 +1621,12 @@ VkResult anv_AllocateMemory( mem->map = NULL; mem->map_size = 0; + 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/genX_query.c b/src/intel/vulkan/genX_query.c index 2c70b4f528e..d5052b7f2e3 100644 --- a/src/intel/vulkan/genX_query.c +++ b/src/intel/vulkan/genX_query.c @@ -39,6 +39,7 @@ VkResult genX(CreateQueryPool)( VkQueryPool* pQueryPool) { ANV_FROM_HANDLE(anv_device, device, _device); + const struct anv_physical_device *pdevice = &device->instance->physicalDevice; struct anv_query_pool *pool; VkResult result; @@ -90,6 +91,12 @@ VkResult genX(CreateQueryPool)( if (result != VK_SUCCESS) goto fail; + if (pdevice->supports_48bit_addresses) + pool->bo.flags |= EXEC_OBJECT_SUPPORTS_48B_ADDRESS; + + if (pdevice->has_exec_async) + pool->bo.flags |= EXEC_OBJECT_ASYNC; + /* For query pools, we set the caching mode to I915_CACHING_CACHED. On LLC * platforms, this does nothing. On non-LLC platforms, this means snooping * which comes at a slight cost. However, the buffers aren't big, won't be |