When the kernel support flagging our BO, let's mark batch &
instruction BOs for capture so then can be included in the error
state.
v2: Only add EXEC_CAPTURE if supported (Kristian)
v3: Fix operator precedence issue (Lionel)
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
goto fail;
device->has_exec_async = anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_ASYNC);
goto fail;
device->has_exec_async = anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_ASYNC);
+ device->has_exec_capture = anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_CAPTURE);
device->has_exec_fence = anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_FENCE);
device->has_syncobj = anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_FENCE_ARRAY);
device->has_syncobj_wait = device->has_syncobj &&
device->has_exec_fence = anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_FENCE);
device->has_syncobj = anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_FENCE_ARRAY);
device->has_syncobj_wait = device->has_syncobj &&
uint64_t bo_flags =
(physical_device->supports_48bit_addresses ? EXEC_OBJECT_SUPPORTS_48B_ADDRESS : 0) |
uint64_t bo_flags =
(physical_device->supports_48bit_addresses ? EXEC_OBJECT_SUPPORTS_48B_ADDRESS : 0) |
- (physical_device->has_exec_async ? EXEC_OBJECT_ASYNC : 0);
+ (physical_device->has_exec_async ? EXEC_OBJECT_ASYNC : 0) |
+ (physical_device->has_exec_capture ? EXEC_OBJECT_CAPTURE : 0);
anv_bo_pool_init(&device->batch_bo_pool, device, bo_flags);
anv_bo_pool_init(&device->batch_bo_pool, device, bo_flags);
goto fail_bo_cache;
result = anv_state_pool_init(&device->instruction_state_pool, device, 16384,
goto fail_bo_cache;
result = anv_state_pool_init(&device->instruction_state_pool, device, 16384,
+ bo_flags |
+ (physical_device->has_exec_capture ? EXEC_OBJECT_CAPTURE : 0));
if (result != VK_SUCCESS)
goto fail_dynamic_state_pool;
if (result != VK_SUCCESS)
goto fail_dynamic_state_pool;
struct isl_device isl_dev;
int cmd_parser_version;
bool has_exec_async;
struct isl_device isl_dev;
int cmd_parser_version;
bool has_exec_async;
bool has_exec_fence;
bool has_syncobj;
bool has_syncobj_wait;
bool has_exec_fence;
bool has_syncobj;
bool has_syncobj_wait;