anv: Set EXEC_OBJECT_ASYNC when available
Reviewed-by: Chad Versace <chadversary@chromium.org>
This commit is contained in:
@@ -504,6 +504,9 @@ anv_block_pool_grow(struct anv_block_pool *pool, struct anv_block_state *state)
|
|||||||
anv_bo_init(&pool->bo, gem_handle, size);
|
anv_bo_init(&pool->bo, gem_handle, size);
|
||||||
pool->bo.map = map;
|
pool->bo.map = map;
|
||||||
|
|
||||||
|
if (pool->device->instance->physicalDevice.has_exec_async)
|
||||||
|
pool->bo.flags |= EXEC_OBJECT_ASYNC;
|
||||||
|
|
||||||
done:
|
done:
|
||||||
pthread_mutex_unlock(&pool->device->mutex);
|
pthread_mutex_unlock(&pool->device->mutex);
|
||||||
|
|
||||||
|
@@ -202,6 +202,8 @@ anv_physical_device_init(struct anv_physical_device *device,
|
|||||||
if (result != VK_SUCCESS)
|
if (result != VK_SUCCESS)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
device->has_exec_async = anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_ASYNC);
|
||||||
|
|
||||||
if (!anv_device_get_cache_uuid(device->uuid, device->chipset_id)) {
|
if (!anv_device_get_cache_uuid(device->uuid, device->chipset_id)) {
|
||||||
result = vk_errorf(VK_ERROR_INITIALIZATION_FAILED,
|
result = vk_errorf(VK_ERROR_INITIALIZATION_FAILED,
|
||||||
"cannot generate UUID");
|
"cannot generate UUID");
|
||||||
@@ -1527,6 +1529,9 @@ anv_bo_init_new(struct anv_bo *bo, struct anv_device *device, uint64_t size)
|
|||||||
if (device->instance->physicalDevice.supports_48bit_addresses)
|
if (device->instance->physicalDevice.supports_48bit_addresses)
|
||||||
bo->flags |= EXEC_OBJECT_SUPPORTS_48B_ADDRESS;
|
bo->flags |= EXEC_OBJECT_SUPPORTS_48B_ADDRESS;
|
||||||
|
|
||||||
|
if (device->instance->physicalDevice.has_exec_async)
|
||||||
|
bo->flags |= EXEC_OBJECT_ASYNC;
|
||||||
|
|
||||||
return VK_SUCCESS;
|
return VK_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -625,6 +625,7 @@ struct anv_physical_device {
|
|||||||
struct brw_compiler * compiler;
|
struct brw_compiler * compiler;
|
||||||
struct isl_device isl_dev;
|
struct isl_device isl_dev;
|
||||||
int cmd_parser_version;
|
int cmd_parser_version;
|
||||||
|
bool has_exec_async;
|
||||||
|
|
||||||
uint32_t eu_total;
|
uint32_t eu_total;
|
||||||
uint32_t subslice_total;
|
uint32_t subslice_total;
|
||||||
|
@@ -208,6 +208,7 @@ x11_anv_wsi_image_create(VkDevice device_h,
|
|||||||
* know we're writing to them and synchronize uses on other rings (eg if
|
* know we're writing to them and synchronize uses on other rings (eg if
|
||||||
* the display server uses the blitter ring).
|
* the display server uses the blitter ring).
|
||||||
*/
|
*/
|
||||||
|
memory->bo.flags &= ~EXEC_OBJECT_ASYNC;
|
||||||
memory->bo.flags |= EXEC_OBJECT_WRITE;
|
memory->bo.flags |= EXEC_OBJECT_WRITE;
|
||||||
|
|
||||||
anv_BindImageMemory(device_h, image_h, memory_h, 0);
|
anv_BindImageMemory(device_h, image_h, memory_h, 0);
|
||||||
|
Reference in New Issue
Block a user