mesa/src
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
..
amd radv: discard the PS epilog when the pipeline doesn't use a fragment shader 2022-10-17 08:13:26 +02:00
android_stub
asahi agx: Reserve live-in regs at the start of block 2022-10-14 01:37:39 +00:00
broadcom v3dv/pipeline: keep qpu_insts around if we expect them to be used later 2022-10-17 10:06:23 +00:00
c11 c11: Update the values of enum mtx_plain, mtx_recursive, mtx_timed to make sure mtx_recursive != mtx_plain | mtx_recursive 2022-09-14 02:46:51 +00:00
compiler nir: Be smarter fusing ffma 2022-10-15 17:47:31 +00:00
drm-shim drm-shim: drop gnu99 override 2022-09-16 02:06:38 +00:00
egl util/mesa/wide: Rename _SIMPLE_MTX_INITIALIZER_NP to SIMPLE_MTX_INITIALIZER 2022-10-14 03:27:41 +00:00
etnaviv util/mesa/wide: Rename _SIMPLE_MTX_INITIALIZER_NP to SIMPLE_MTX_INITIALIZER 2022-10-14 03:27:41 +00:00
freedreno util/mesa/wide: Rename _SIMPLE_MTX_INITIALIZER_NP to SIMPLE_MTX_INITIALIZER 2022-10-14 03:27:41 +00:00
gallium mesa,gallium: Revert "Make point coord origin a CAP" 2022-10-16 02:23:12 +00:00
gbm Android: Use libgbm_mesa name for SDK30+ 2022-09-12 07:37:27 +00:00
getopt
glx egl/glx: add fallback for zink loading 2022-09-21 20:29:06 +00:00
gtest gtest: Fix maybe-uninitialized compiler warning 2022-06-29 21:02:18 +00:00
hgl
imagination pvr: Add vulkan shader factory headers for Query and clear APIs. 2022-10-07 14:23:05 +00:00
imgui
intel intel: Add and use intel_engines_class_to_string() 2022-10-15 20:04:51 +00:00
loader loader: use os_get_option for driver override 2022-09-08 19:30:38 +00:00
mapi mesa: add EXT_debug_label support 2022-10-17 08:53:20 +11:00
mesa glthread: leave dlist dispatch in place for Begin/End 2022-10-17 09:31:12 +00:00
microsoft dzn: rename module_dir to icd_lib_path for consistence 2022-09-22 17:54:24 +00:00
nouveau nv50: call nir_lower_flrp 2022-10-10 17:22:49 +00:00
panfrost panfrost/ci: Disable t720 jobs 2022-10-15 00:53:22 +00:00
tool pps: enable track_event in intel.cfg 2022-10-09 22:39:53 +03:00
util util/mesa/wide: Rename _SIMPLE_MTX_INITIALIZER_NP to SIMPLE_MTX_INITIALIZER 2022-10-14 03:27:41 +00:00
virtio util/mesa/wide: Rename _SIMPLE_MTX_INITIALIZER_NP to SIMPLE_MTX_INITIALIZER 2022-10-14 03:27:41 +00:00
vulkan vulkan/runtime: don't lookup the pipeline disk cache if disabled 2022-10-14 23:03:16 +00:00
meson.build meson: Remove usage of use_elf_tls 2022-07-29 23:59:11 +00:00