anv_bo_init(&pool->bo, gem_handle, size);
pool->bo.map = map;
+ if (pool->device->instance->physicalDevice.has_exec_async)
+ pool->bo.flags |= EXEC_OBJECT_ASYNC;
+
done:
pthread_mutex_unlock(&pool->device->mutex);
if (result != VK_SUCCESS)
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)) {
result = vk_errorf(VK_ERROR_INITIALIZATION_FAILED,
"cannot generate UUID");
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;
}
struct brw_compiler * compiler;
struct isl_device isl_dev;
int cmd_parser_version;
+ bool has_exec_async;
uint32_t eu_total;
uint32_t subslice_total;
* know we're writing to them and synchronize uses on other rings (eg if
* the display server uses the blitter ring).
*/
+ memory->bo.flags &= ~EXEC_OBJECT_ASYNC;
memory->bo.flags |= EXEC_OBJECT_WRITE;
anv_BindImageMemory(device_h, image_h, memory_h, 0);