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 <nanley.g.chery@intel.com>
Cc: "17.1" <mesa-stable@lists.freedesktop.org>
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);
*
* 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();
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);
}
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;
}
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;
/* 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);
/* 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);
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;
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