Yiwei Zhang
eb0ad64e80
venus: add stubs for accel struct host commands
...
They won't be implemented, and the host cmds feature will always be
disabled in venus.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33907 >
2025-03-07 22:44:10 +00:00
Yiwei Zhang
3eb554a2b5
venus: support VK_KHR_deferred_host_operations
...
Details are at:
https://gitlab.freedesktop.org/virgl/venus-protocol/-/merge_requests/97
For venus and vkr, we'll use pure driver side impl. Start with (1) and
move towards (2) later as things evolve. We'd like renderer side to be
simple and passive.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33907 >
2025-03-07 22:44:10 +00:00
Yiwei Zhang
90f9a1cca5
venus: add a debug option for ray tracing support
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33907 >
2025-03-07 22:44:10 +00:00
Yiwei Zhang
6868212774
venus: fix a memory corruption in query records recycle
...
The free list must be re-initialized. Found the bug while running:
dEQP-VK.ray_tracing_pipeline.acceleration_structures.device_compability_khr.gpu_built.top
where it invokes VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT to purge
the cmd pool resources, and the next alloc still gets cache hit with the
"empty" list.
Fixes: e2c4bafccc ("venus: free query batches for VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT")
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33908 >
2025-03-06 18:25:20 +00:00
Yiwei Zhang
c35b52638c
venus: relax the requirement for sync2
...
The current requirement for sync is only to support WSI, and it is not
necessarily needed at all per the comment added. Will drop it later.
Cc: mesa-stable
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33829 >
2025-03-02 16:40:14 +00:00
Yiwei Zhang
af1b4f61b5
venus: added passthrough extension support - Part V
...
Below extensions are added:
1. VK_KHR_fragment_shader_barycentric
2. VK_EXT_legacy_vertex_attributes
3. VK_EXT_ycbcr_image_arrays
Test:
- dEQP-VK.fragment_shading_barycentric.*
- dEQP-VK.pipeline.*.vertex_input.legacy_vertex_attributes.*
- dEQP-VK.ycbcr.format.*
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33783 >
2025-02-27 20:35:36 +00:00
Yiwei Zhang
b02e8a9f1d
venus: added passthrough extension support - Part IV
...
Below extensions are added:
1. VK_EXT_shader_atomic_float
2. VK_EXT_shader_atomic_float2
3. VK_EXT_shader_image_atomic_int64
4. VK_EXT_shader_replicated_composites
Test:
- dEQP-VK.glsl.atomic_operations.*
- dEQP-VK.image.atomic_operations.*
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33783 >
2025-02-27 20:35:35 +00:00
Yiwei Zhang
1fe8be9215
venus: added passthrough extension support - Part III
...
Below are added:
1. VK_KHR_shader_maximal_reconvergence
2. VK_KHR_shader_subgroup_uniform_control_flow
3. VK_KHR_shader_quad_control
4. VK_EXT_shader_subgroup_vote
Test:
- dEQP-VK.reconvergence.*
- dEQP-VK.subgroups.subgroup_uniform_control_flow.*
- dEQP-VK.subgroups.shader_quad_control.*
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33783 >
2025-02-27 20:35:35 +00:00
Yiwei Zhang
f16345b2f6
venus: added passthrough extension support - Part II
...
Below are added:
1. VK_KHR_compute_shader_derivatives
2. VK_NV_compute_shader_derivatives
3. VK_KHR_workgroup_memory_explicit_layout
Test:
- dEQP-VK.compute.*workgroup_memory_explicit_layout.*
- dEQP-VK.spirv_assembly.instruction.compute.compute_shader_derivatives.*
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33783 >
2025-02-27 20:35:35 +00:00
Yiwei Zhang
48b50c77df
venus: added passthrough extension support - Part I
...
Below are added:
1. VK_KHR_depth_clamp_zero_one
2. VK_EXT_depth_clamp_zero_one
3. VK_EXT_depth_range_unrestricted
4. VK_EXT_post_depth_coverage
5. VK_ARM_rasterization_order_attachment_access
Test: dEQP-VK.depth.*
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33783 >
2025-02-27 20:35:35 +00:00
Yiwei Zhang
acd5497067
venus: support wsi maintenance1 extensions
...
Venus has long supported creating swapchain image alias via binding. So
below are exposed without extra work needed:
- VK_EXT_surface_maintenance1
- VK_EXT_swapchain_maintenance1
Test: dEQP-VK.wsi.*.maintenance1.*
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33782 >
2025-02-27 09:53:57 +00:00
Yiwei Zhang
673a95e5b4
venus: align on wsi frontends support
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33782 >
2025-02-27 09:53:57 +00:00
Yiwei Zhang
bef1c23a23
venus: re-enable 1.4 support
...
Have made core venus protocol update to be able to support host image
copy.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33757 >
2025-02-26 19:16:48 +00:00
Yiwei Zhang
577fa1793d
venus: enable VK_EXT_host_image_copy support
...
Fill the core features and properties properly, and conditionally pass
through support of the extension based on the renderer venus protocol
spec version.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33757 >
2025-02-26 19:16:48 +00:00
Yiwei Zhang
c13da1c744
venus: implement host image copy commands
...
The img-2-img and layout transition are trivial passthrough. For
img-2-mem and mem-2-img copies, host pointer has to be sized for proper
protocol encoding and decoding, and we have to either query or calculate
on our own based on VK_HOST_IMAGE_COPY_MEMCPY_EXT flag being used or
not.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33757 >
2025-02-26 19:16:48 +00:00
Yiwei Zhang
036493f43d
venus: extend image format cache for host copy props
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33757 >
2025-02-26 19:16:48 +00:00
Yiwei Zhang
fde5cebec5
venus: fix image format cache miss with AHB usage query
...
should skip updating cache key instead of marking as a miss
Fixes: e48645250c ("venus: image format properties cache")
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33757 >
2025-02-26 19:16:48 +00:00
Yiwei Zhang
15777727c9
venus: use sharing_mode from common vk_image
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33757 >
2025-02-26 19:16:48 +00:00
Yiwei Zhang
f9afd65695
venus: drop unnecessary struct
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33757 >
2025-02-26 19:16:48 +00:00
Yiwei Zhang
bcb0b8c7f6
venus: suppress a few -Wmaybe-uninitialized
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33757 >
2025-02-26 19:16:48 +00:00
Simon Ser
8f9a390f33
venus: replace dup() with os_dupfd_cloexec()
...
dup() will leak the new FD into any child process after fork().
Signed-off-by: Simon Ser <contact@emersion.fr>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26203 >
2025-02-26 00:45:51 +00:00
Yiwei Zhang
43c3270c26
venus: temporarily disable 1.4 support
...
Will implement VK_EXT_host_image_copy via custom venus protocol support
and then re-enable 1.4.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33698 >
2025-02-24 00:11:55 +00:00
Yiwei Zhang
ac13146092
venus: limit second queue emulation to android framework
...
A proper emulation of a second queue requires handling of
wait-before-signal behavior of timeline semaphore. It's doable in Venus
but not that much useful since 1.4 requires a second transfer queue
family if not implementing hostImageCopy. So this change has limited
the second queue emulation as a workaround for android framework on
Android 14 and above.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33698 >
2025-02-24 00:11:55 +00:00
Yiwei Zhang
ed4e2fac86
venus: fix sample location info validity
...
Only look for sample location info when MSAA state is valid.
Test: dEQP-VK.api.pipeline.pipeline_invalid_pointers_unused_structs.graphics
Fixes: ff64092ff3 ("venus: support VK_EXT_sample_locations")
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33696 >
2025-02-22 22:29:43 -08:00
Yiwei Zhang
33bb47388f
venus: fix 2 entry points from maint6
...
This is surprisingly not caught by maint6 tests or the entire
binding_model group.
Fixes: 0fa2758103a ("venus: support VK_KHR_maintenance6")
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33695 >
2025-02-22 16:48:17 -08:00
Yiwei Zhang
a9da750388
venus: advertise 1.4 support
...
This change:
- adds the core 1.4 support
- handles partially promoted dynamicRenderingLocalRead feature
- properly scrubs host copy related features and properties if needed
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33690 >
2025-02-22 21:14:47 +00:00
Yiwei Zhang
e651dc0b2b
venus: deprecate a few useless micros
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33690 >
2025-02-22 21:14:47 +00:00
Yiwei Zhang
b282e49d67
venus: update second queue emulation for 1.4 requirement
...
Venus picks the option to always advertise an additional queue that
supports transfer.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33690 >
2025-02-22 21:14:47 +00:00
Yiwei Zhang
d26643c6c2
venus: support VK_KHR_maintenance6
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33690 >
2025-02-22 21:14:47 +00:00
Yiwei Zhang
e46bb404bd
venus: a few tiny naming fixes
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33690 >
2025-02-22 21:14:47 +00:00
Yiwei Zhang
015dd37931
venus: support VK_KHR_dynamic_rendering_local_read
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33690 >
2025-02-22 21:14:47 +00:00
Yiwei Zhang
e488b5e45e
venus: support VK_KHR_global_priority
...
as well as the prior versions promoted from.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33594 >
2025-02-19 04:06:58 +00:00
Yiwei Zhang
696ee859ef
venus: support VK_KHR_map_memory2
...
This is purely on the driver side.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33594 >
2025-02-19 04:06:58 +00:00
Yiwei Zhang
f69a0201da
venus: support VK_EXT_pipeline_robustness
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33594 >
2025-02-19 04:06:57 +00:00
Yiwei Zhang
e027f2afc1
venus: support VK_EXT_pipeline_protected_access
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33594 >
2025-02-19 04:06:57 +00:00
Yiwei Zhang
ea8a396b91
venus: support VK_KHR_shader_float_controls2
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33594 >
2025-02-19 04:06:56 +00:00
Yiwei Zhang
82408f81b4
venus: support VK_KHR_shader_subgroup_rotate
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33594 >
2025-02-19 04:06:56 +00:00
Yiwei Zhang
0b908bb27e
venus: updated to use core types for promoted extensions
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33567 >
2025-02-17 10:46:35 +00:00
Yiwei Zhang
207c9ec65a
venus: sync protocol for v1.4.307 release and update promoted entries
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33567 >
2025-02-17 10:46:35 +00:00
Yiwei Zhang
ae2830e520
venus: drop unused codes
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33567 >
2025-02-17 10:46:34 +00:00
Yiwei Zhang
8741be3365
venus: fix maintenance5 props init and create flags2
...
More are found missed from prior maint5 support. This change has
properly initialized the maint5 props as well as fixing its new
VkPipelineCreateFlags2CreateInfo integrations.
Verified with dEQP-VK.*maintenance5*
Fixes: be6fece6e1 ("venus: enable VK_KHR_maintenance5")
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33566 >
2025-02-15 22:55:55 -08:00
Yiwei Zhang
dfd2af5da1
Support 5 more promoted extensions
...
VK_KHR_calibrated_timestamps
VK_KHR_index_type_uint8
VK_KHR_line_rasterization
VK_KHR_load_store_op_none
VK_KHR_vertex_attribute_divisor
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33561 >
2025-02-16 00:23:48 +00:00
Yiwei Zhang
5603b78779
venus: sync protocol to v1.3.302
...
and update extensions being promoted
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33561 >
2025-02-16 00:23:48 +00:00
Yiwei Zhang
2026e4a262
venus: fix sampler locations feats and props scrub
...
Fixes: ff64092ff3 ("venus: support VK_EXT_sample_locations")
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33561 >
2025-02-16 00:23:48 +00:00
Yiwei Zhang
ff64092ff3
venus: support VK_EXT_sample_locations
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33520 >
2025-02-13 17:12:58 +00:00
Yiwei Zhang
ae3bc10d58
venus: refactor to share more codes between pipeline state fillings
...
A lot of codes can be shared for filling states of fragment shader and
fragment output interface.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33520 >
2025-02-13 17:12:58 +00:00
Yiwei Zhang
7c28f614a4
venus: support VK_EXT_blend_operation_advanced
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33520 >
2025-02-13 17:12:58 +00:00
Yiwei Zhang
a7fccbbf85
venus: fix to handle pipeline flags2 from maint5
...
Fixes: be6fece6e1 ("venus: enable VK_KHR_maintenance5")
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33520 >
2025-02-13 17:12:58 +00:00
Yiwei Zhang
a7adf8db67
venus: group private data together with other 1.3 exts
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33520 >
2025-02-13 17:12:58 +00:00
Yiwei Zhang
d0e02df3a6
venus: emulate a second graphics queue on Android
...
Starting from Android 14 (Android U), framework HWUI has required a
second graphics queue to avoid racing between webview and skiavk. For
non-Android, we leave the second queue emulation behind a debug option.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30985 >
2025-02-11 06:07:24 +00:00