diff options
author | Jason Ekstrand <jason.ekstrand@intel.com> | 2016-11-05 19:47:33 -0700 |
---|---|---|
committer | Emil Velikov <emil.l.velikov@gmail.com> | 2016-11-09 23:36:32 +0000 |
commit | 621b04873436e5875394cbe4d8733873e0c01d8e (patch) | |
tree | bb4d3b43c77672af77a022a394d58d493a78271b /src/intel/vulkan/anv_private.h | |
parent | 039a03d8d2073d2f4234c02376e082e7f107d284 (diff) | |
download | external_mesa3d-621b04873436e5875394cbe4d8733873e0c01d8e.zip external_mesa3d-621b04873436e5875394cbe4d8733873e0c01d8e.tar.gz external_mesa3d-621b04873436e5875394cbe4d8733873e0c01d8e.tar.bz2 |
anv: Move relocation handling from EndCommandBuffer to QueueSubmit
Ever since the early days of the Vulkan driver, we've been setting up the
lists of relocations at EndCommandBuffer time. The idea behind this was to
move some of the CPU load out of QueueSubmit which the client is required
to lock around and into command buffer building which could be done in
parallel. Then QueueSubmit basically just becomes a bunch of execbuf2
calls.
Technically, this works. However, when you start to do more in QueueSubmit
than just execbuf2, you start to run into problems. In particular, if a
block pool is resized between EndCommandBuffer and QueueSubmit, the list of
anv_bo's and the execbuf2 object list can get out of sync. This can cause
problems if, for instance, you wanted to do relocations in userspace.
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Cc: "13.0" <mesa-stable@lists.freedesktop.org>
(cherry picked from commit 8b61c57049ff75766715ad4f7b1ad2d3657b9b4d)
Diffstat (limited to 'src/intel/vulkan/anv_private.h')
-rw-r--r-- | src/intel/vulkan/anv_private.h | 13 |
1 files changed, 0 insertions, 13 deletions
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 2d5d673..31b4766 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -1141,17 +1141,6 @@ enum anv_cmd_buffer_exec_mode { ANV_CMD_BUFFER_EXEC_MODE_COPY_AND_CHAIN, }; -struct anv_execbuf { - struct drm_i915_gem_execbuffer2 execbuf; - - struct drm_i915_gem_exec_object2 * objects; - uint32_t bo_count; - struct anv_bo ** bos; - - /* Allocated length of the 'objects' and 'bos' arrays */ - uint32_t array_length; -}; - struct anv_cmd_buffer { VK_LOADER_DATA _loader_data; @@ -1187,8 +1176,6 @@ struct anv_cmd_buffer { /** Last seen surface state block pool center bo offset */ uint32_t last_ss_pool_center; - struct anv_execbuf execbuf2; - /* Serial for tracking buffer completion */ uint32_t serial; |