mesa/src
Ryan Neph 48062f91c7 virgl: add debug flag to force synchronous GL shader compilation
This does two things:
1. Flush the command buffer and associate a fence with each
   glLinkProgram().
2. Force the application calling glLinkProgram() to wait on the
   associated fence, matching the semantics of native drivers.

This important for some workloads and some environments. For example, on
ChromeOS devices supporting VM-based android (ARCVM), an app's HWUI thread
may be configured to use skiagl, while the app may create its own GLES
context for custom rendering. Virgl+virtio_gpu supports a single fencing
timeline, so all guest GL/GLES contexts are serialized by submission
order to the guest kernel.

If the app's submits multiple heavy shaders for compliation+linking
(glCompileShader + glLinkProgram()), these are batched into a single
virtgpu execbuffer (with one fence). Then rendering performed by the
HWUI thread is blocked until the unrelated heavy host-side work is
finished. To the user, the app appears completely frozen until finished.

With this change, the app is throttled in its calls to glLinkProgram(),
and the HWUI work can fill in the gaps between each while hitting most
display update deadlines. To the user, the UI may render at reduced
framerate, but remains mostly responsive to interaction.

Signed-off-by: Ryan Neph <ryanneph@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22341>
2023-04-19 06:35:35 +00:00
..
amd util: Call mesa_bytes_to_hex directly instead of disk_cache_format_hex_id. 2023-04-19 04:19:51 +00:00
android_stub util/log: improve logger_android 2023-02-22 17:55:40 +00:00
asahi asahi: Add resource debugging 2023-04-07 03:23:04 +00:00
broadcom v3dv/ci: drop fixed failure from fails.txt 2023-04-16 20:49:05 +01:00
c11 c11: Remove _MTX_INITIALIZER_NP for windows 2022-11-09 04:38:28 +00:00
compiler nir,ac/llvm,radeonsi: replace nir_load_smem_buffer_amd with nir_load_ubo 2023-04-19 01:59:02 +00:00
drm-shim drm-shim: Use hide_drm_device_path() to hide other drm devices 2022-12-30 15:51:11 -08:00
egl egl/wayland: fix oob buffer access during buffer_fds clean up 2023-04-17 09:02:53 +00:00
etnaviv ci/etnaviv: Polish the gc2000 xfails a bit. 2023-03-29 07:52:45 +00:00
freedreno util: Call mesa_bytes_to_hex directly instead of disk_cache_format_hex_id. 2023-04-19 04:19:51 +00:00
gallium virgl: add debug flag to force synchronous GL shader compilation 2023-04-19 06:35:35 +00:00
gbm gbm: drop unnecessary vulkan dependency 2023-02-23 18:31:22 +00:00
getopt
glx glx: Fix error handling yet again in CreateContextAttribs 2023-04-06 21:29:54 +00:00
gtest
imagination pvr: fix buggy usage of unreachable() 2023-04-18 13:59:54 +00:00
imgui
intel anv: enable shaderStorageImageReadWithoutFormat on Gfx12.5+ 2023-04-19 06:04:52 +00:00
loader loader: Add Xe KMD support 2023-04-12 10:41:21 +00:00
mapi mesa: Add EXT_instanced_arrays support 2023-04-11 10:22:35 +00:00
mesa mesa/st: Make st_convert_image(_from_unit) declaration match definition 2023-04-18 09:49:44 +00:00
microsoft dzn: Remove #if D3D12_SDK_VERSION blocks now that 610 is required 2023-04-14 23:59:33 +00:00
nouveau nv50/ir: ignore CL system values 2023-04-14 07:41:54 +00:00
panfrost pan/va: fix typo in IADD_IMM.i32 description 2023-04-18 19:44:48 +03:00
tool pps: Fix build errors. 2023-03-13 01:22:46 +00:00
util virgl: add debug flag to force synchronous GL shader compilation 2023-04-19 06:35:35 +00:00
virtio venus: forward ARM driverVersion for ANGLE workarounds 2023-04-11 03:17:56 +00:00
vulkan vk/util: fix buggy usage of unreachable() 2023-04-18 13:59:55 +00:00
meson.build hgl: remove 2023-02-18 00:44:43 +00:00