mesa/src/broadcom/vulkan
Iago Toral Quiroga bdf2a470d3 v3dv: fix job suspend with command buffer simultaneous use flag
With the simultaneous use flag we can reuse the same command
buffer multiple times. That means, for example, that we can
have an instance of a job running in the GPU while we are
submitting another one for execution to a queue.

This scenario is problematic with dynamic rendering and job
suspension because suspended jobs need to be patched with the
resume address at queue submit time, and thus, if we have another
instance of the same job currently executing in the GPU we could
stomp its resume address, which could be different.

To fix this, at queue submission time, when we detect a suspending
job in a command buffer with the simultaneous use flag, we clone the
job and create its own copy of the BCL so we can patch the resume
address into it safely without conflicting with any other instance
of the job that may be running.

We need to flag these clones  as having their own BCL since
we would have to free it when the job is destroyed, unlike other
clones that don't own any resources of their own. Also, because
this job is created at queue submit time, it won't be in the
execution list of the command buffer, so it won't be automatically
destroyed with it, so we need to add it to the command buffer
as a private object.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28521>
2024-04-03 13:35:54 +02:00
..
.dir-locals.el
.editorconfig
meson.build meson: add VK_DRIVER_FILES to devenv, alongside the old VK_ICD_FILENAMES 2024-04-02 18:08:52 +00:00
v3dv_android.c treewide: Remove vulkan/runtime vulkan/util prefix in include path 2024-03-05 19:05:00 +00:00
v3dv_bo.c v3dv: store the offset of the BRANCH instruction in a CL 2024-04-03 12:57:56 +02:00
v3dv_bo.h v3dv: store the offset of the BRANCH instruction in a CL 2024-04-03 12:57:56 +02:00
v3dv_cl.c v3dv: store the offset of the BRANCH instruction in a CL 2024-04-03 12:57:56 +02:00
v3dv_cl.h broadcom: replace redefined ALIGN() macro with common util functions 2023-06-29 21:12:07 +00:00
v3dv_cmd_buffer.c v3dv: fix job suspend with command buffer simultaneous use flag 2024-04-03 13:35:54 +02:00
v3dv_debug.c v3dv/v3d: Fix copyright holder to Raspberry Pi Ltd 2022-02-18 11:50:07 +01:00
v3dv_debug.h v3dv/v3d: Fix copyright holder to Raspberry Pi Ltd 2022-02-18 11:50:07 +01:00
v3dv_descriptor_set.c vulkan,nir: Refactor ycbcr conversion state into a struct 2023-02-06 18:36:29 +00:00
v3dv_device.c v3dv: require multisync kernel 2024-04-03 10:34:17 +00:00
v3dv_event.c nir: Drop "SSA" from NIR language 2023-08-12 16:44:41 -04:00
v3dv_formats.c v3dv: refactor to use DETECT_OS_ANDROID instead of ANDROID 2024-02-01 19:29:49 +00:00
v3dv_image.c v3dv: fix image creation when exceeding maxResourceSize 2024-03-26 07:23:56 +00:00
v3dv_limits.h v3d,v3dv: support up to 8 render targets in v7.1+ 2023-10-13 22:37:43 +00:00
v3dv_meta_clear.c v3d,v3dv: don't use max internal bpp for tile sizing in V3D 7.x 2023-10-13 22:37:43 +00:00
v3dv_meta_common.h v3dv/v3d: Fix copyright holder to Raspberry Pi Ltd 2022-02-18 11:50:07 +01:00
v3dv_meta_copy.c treewide: Remove vulkan/runtime vulkan/util prefix in include path 2024-03-05 19:05:00 +00:00
v3dv_pass.c v3dv: handle render pass continue flag with dynamic passes 2024-03-19 12:06:21 +00:00
v3dv_pipeline.c v3dv: don't assume that pipelines have a render pass 2024-03-19 12:06:21 +00:00
v3dv_pipeline_cache.c treewide: Remove vulkan/runtime vulkan/util prefix in include path 2024-03-05 19:05:00 +00:00
v3dv_private.h v3dv: fix job suspend with command buffer simultaneous use flag 2024-04-03 13:35:54 +02:00
v3dv_query.c v3dv: use the reset performance query user extension 2023-12-14 16:43:13 +00:00
v3dv_queue.c v3dv: fix job suspend with command buffer simultaneous use flag 2024-04-03 13:35:54 +02:00
v3dv_uniforms.c treewide: Replace usage of macro DEBUG with MESA_DEBUG when possible 2024-03-22 18:22:34 +00:00
v3dv_wsi.c v3dv: disallow image stores on VK_KHR_DISPLAY surfaces 2023-12-13 06:17:15 +00:00
v3dvx_cmd_buffer.c v3dv: fix job suspend with command buffer simultaneous use flag 2024-04-03 13:35:54 +02:00
v3dvx_descriptor_set.c v3dv: add support for multi-planar formats, enable YCbCr 2023-01-16 14:10:21 +00:00
v3dvx_device.c treewide: Replace usage of macro DEBUG with MESA_DEBUG when possible 2024-03-22 18:22:34 +00:00
v3dvx_formats.c treewide: Remove vulkan/runtime vulkan/util prefix in include path 2024-03-05 19:05:00 +00:00
v3dvx_image.c v3dv: use new texture shader state rb_swap and reverse fields in v3d 7.x 2023-10-13 22:37:43 +00:00
v3dvx_meta_common.c v3d,v3dv: don't use max internal bpp for tile sizing in V3D 7.x 2023-10-13 22:37:43 +00:00
v3dvx_pipeline.c v3dv: don't assume that pipelines have a render pass 2024-03-19 12:06:21 +00:00
v3dvx_private.h v3dv: fix job suspend with command buffer simultaneous use flag 2024-04-03 13:35:54 +02:00
v3dvx_query.c broadcom: add performance counters for V3D 7.x 2023-10-13 22:37:44 +00:00
v3dvx_queue.c v3d,v3dv: don't use max internal bpp for tile sizing in V3D 7.x 2023-10-13 22:37:43 +00:00