anv: flag batch & instruction BOs for capture
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Fri, 17 Nov 2017 17:29:26 +0000 (17:29 +0000)
committerLionel Landwerlin <lionel.g.landwerlin@intel.com>
Wed, 22 Nov 2017 22:53:27 +0000 (22:53 +0000)
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>
src/intel/vulkan/anv_device.c
src/intel/vulkan/anv_private.h

index fccf6a63778e6ac85f626598ae714eed0647fa0d..b5577ee61de7c77ba6a4274699ea53f817a8d428 100644 (file)
@@ -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;
 
index f9770788a6d2bad99d517a58aa9d807d4f607c48..6d4e43f2e687cbf26ccd86c0e4b1924ceb70742c 100644 (file)
@@ -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;