From: Lionel Landwerlin Date: Fri, 17 Nov 2017 17:29:26 +0000 (+0000) Subject: anv: flag batch & instruction BOs for capture X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d4c52c540879d7e77aa83710f6b0acd3c5b30e99;p=mesa.git anv: flag batch & instruction BOs for capture 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 Reviewed-by: Kenneth Graunke --- diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c index fccf6a63778..b5577ee61de 100644 --- a/src/intel/vulkan/anv_device.c +++ b/src/intel/vulkan/anv_device.c @@ -362,6 +362,7 @@ anv_physical_device_init(struct anv_physical_device *device, 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 && @@ -1213,7 +1214,8 @@ VkResult anv_CreateDevice( 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); @@ -1230,7 +1232,8 @@ VkResult anv_CreateDevice( goto fail_bo_cache; result = anv_state_pool_init(&device->instruction_state_pool, device, 16384, - bo_flags); + bo_flags | + (physical_device->has_exec_capture ? EXEC_OBJECT_CAPTURE : 0)); if (result != VK_SUCCESS) goto fail_dynamic_state_pool; diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index f9770788a6d..6d4e43f2e68 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -773,6 +773,7 @@ struct anv_physical_device { struct isl_device isl_dev; int cmd_parser_version; bool has_exec_async; + bool has_exec_capture; bool has_exec_fence; bool has_syncobj; bool has_syncobj_wait;