mesa/src/broadcom/vulkan
Alejandro Piñeiro c1cb7506bb v3dv/pipeline: keep qpu_insts around if we expect them to be used later
If the pipeline was created with the creation flags
VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR or
VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR it is
really likely that methods from VK_KHR_pipeline_executable_properties
that would require having access to the qpu insts around will be
called.

Instead of getting those back from the BO where we upload them, we
just keep them around. This could require more host memory, but would
allow us to avoid needing to handle map/unmap the BO when needed (so
needing the host memory in any case). This can be tricky if those
methods are being called from different threads (so we can avoid
adding a mutex there).

In the same way, if the pipeline was not created with those flags, we
skip collecting data that requires the QPU. Only
GetPipelineExecutableProperties is allowed to be called without any of
those flags, and doesn't require that info.

This fixes a race condition crash at GetPipelineExecutableProperties
when using fossilize-replay with some fossils with several shaders,
and using several threads, as some thread would be unmapping the bo
before other thread stopped to use it.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18859>
2022-10-17 10:06:23 +00:00
..
.dir-locals.el
.editorconfig
meson.build meson: add various generated header dependencies as order-only deps 2022-07-31 18:10:15 +00:00
v3dv_android.c v3dv: Use the common physical device enumeration 2022-08-30 19:34:47 +00:00
v3dv_bo.c v3dv/bo: reduce DEFAULT_MAX_BO_CACHE_SIZE to 64 2022-09-05 22:25:09 +00:00
v3dv_bo.h v3dv/v3d: Fix copyright holder to Raspberry Pi Ltd 2022-02-18 11:50:07 +01:00
v3dv_cl.c v3dv/v3d: Fix copyright holder to Raspberry Pi Ltd 2022-02-18 11:50:07 +01:00
v3dv_cl.h v3dv/v3d: Fix copyright holder to Raspberry Pi Ltd 2022-02-18 11:50:07 +01:00
v3dv_cmd_buffer.c v3dv: don't load an attachment for unaligned render area if we are not storing 2022-09-14 13:48:45 +00: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 v3dv: ref/unref pipeline layout objects 2022-08-30 11:10:14 +00:00
v3dv_device.c v3dv: expose VK_EXT_image_robustness 2022-09-27 09:08:29 +00:00
v3dv_formats.c v3d: introduce V3D_DBG() macro to make V3D_DEBUG checks consistent 2022-08-24 23:03:57 +00:00
v3dv_image.c v3dv: fix swap_rb and channel_reverse flags in image views 2022-09-06 06:33:38 +00:00
v3dv_limits.h v3dv: Use util/os_time helpers 2022-04-13 17:22:14 +00:00
v3dv_meta_clear.c v3dv: postpone tile state allocation for render pass jobs 2022-08-15 23:35:16 +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 v3dv: postpone tile state allocation for render pass jobs 2022-08-15 23:35:16 +00:00
v3dv_pass.c v3dv: add a heuristic for double-buffer mode 2022-08-15 23:35:16 +00:00
v3dv_pipeline.c v3dv/pipeline: keep qpu_insts around if we expect them to be used later 2022-10-17 10:06:23 +00:00
v3dv_pipeline_cache.c v3dv: Use the common physical device enumeration 2022-08-30 19:34:47 +00:00
v3dv_private.h v3dv/pipeline: keep qpu_insts around if we expect them to be used later 2022-10-17 10:06:23 +00:00
v3dv_query.c v3dv: use updated tokens from vk.xml 2022-07-12 15:53:11 +00:00
v3dv_queue.c v3dv: use VkPipelineStageFlagBits2 when checking semaphore wait stage 2022-08-31 07:36:18 +00:00
v3dv_uniforms.c v3dv: implement VK_EXT_depth_clip_control 2022-09-09 10:03:58 +00:00
v3dv_wsi.c v3dv: Use the common physical device enumeration 2022-08-30 19:34:47 +00:00
v3dvx_cmd_buffer.c v3dv: don't load an attachment for unaligned render area if we are not storing 2022-09-14 13:48:45 +00:00
v3dvx_descriptor_set.c v3dv/v3d: Fix copyright holder to Raspberry Pi Ltd 2022-02-18 11:50:07 +01:00
v3dvx_device.c v3dv/v3d: Fix copyright holder to Raspberry Pi Ltd 2022-02-18 11:50:07 +01:00
v3dvx_formats.c v3dv: clean up get_internal_type_bpp_for_image_aspects 2022-07-13 10:09:34 +00:00
v3dvx_image.c v3d,v3dv: stop copying and pasting the translate_swizzle helper 2022-07-13 10:09:34 +00:00
v3dvx_meta_common.c v3dv: postpone tile state allocation for render pass jobs 2022-08-15 23:35:16 +00:00
v3dvx_pipeline.c v3dv: Remove redundant unreachable in v3dvx_pipeline.c 2022-09-01 03:00:36 +00:00
v3dvx_private.h v3dv: add a heuristic for double-buffer mode 2022-08-15 23:35:16 +00:00
v3dvx_queue.c v3dv: postpone tile state allocation for render pass jobs 2022-08-15 23:35:16 +00:00