Yiwei Zhang
2ed4f04869
venus: use in_render_pass to skip present_src counting
...
It's an early return also benefiting dynamic rendering. We then no
longer need to track the legacy pass from inheritance info.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24103 >
2023-07-22 01:49:43 +00:00
Yiwei Zhang
e47da97be6
venus: refactor more cmd states into cmd builder
...
This change:
- adds helpers for cmd begin/end rendering
- simplifies cmd reset
- updates ordering to align with cmd builder
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24103 >
2023-07-22 01:49:43 +00:00
Yiwei Zhang
10c791619c
venus: avoid redundant tracking of render pass
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24103 >
2023-07-22 01:49:43 +00:00
Yiwei Zhang
540242f9ff
venus: add helpers to track subpass view mask
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24103 >
2023-07-22 01:49:43 +00:00
Yiwei Zhang
311a0eeb21
venus: cleanup vn_cmd_begin_render_pass usage
...
For secondary command buffers, vn_cmd_begin_render_pass was only used to
track inherited render pass previously. So we clean it up.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24103 >
2023-07-22 01:49:43 +00:00
Yiwei Zhang
81b69f8e8b
venus: use tracked queue_family_index from the cmd pool
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24103 >
2023-07-22 01:49:43 +00:00
Yiwei Zhang
72728f83ed
venus: remove redundant fb tracking from cmd builder
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24103 >
2023-07-22 01:49:43 +00:00
Yiwei Zhang
f0b5a6335d
venus: move transient storage from cmd to pool
...
The storage is for command scope usage, so it fits better for the pool.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24103 >
2023-07-22 01:49:43 +00:00
Yiwei Zhang
566df7821b
venus: log and doc the broken query feedback in suspended render pass
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24103 >
2023-07-22 01:49:43 +00:00
Yiwei Zhang
d13bf8f6b1
venus: fix cmd state leak across implicit reset
...
Reset cmd states during vkBeginCommandBuffer regardless of the
VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT for simplicity.
Cc: mesa-stable
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24103 >
2023-07-22 01:49:42 +00:00
Yiwei Zhang
a9f058d614
venus: fix a cmd builder render_pass state leak across reset
...
Cc: mesa-stable
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24103 >
2023-07-22 01:49:42 +00:00
Yiwei Zhang
a151d26513
venus: refactor query feedback cmd record
...
Now copy and reset are similar enough to unify.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24130 >
2023-07-12 22:32:45 +00:00
Yiwei Zhang
26d83ae255
venus: refactor query batch handling
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24009 >
2023-07-06 22:36:48 +00:00
Yiwei Zhang
c3ad8c2f94
venus: cache query batches at cmd pool
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24009 >
2023-07-06 22:36:48 +00:00
Yiwei Zhang
a74b606142
venus: refactor vn_cmd_add_query_feedback and miscs
...
There's no functional changes:
1. remove unused function arg and use snake case
2. do early return for direct recording (avoid dup feedback checks)
3. use vk_alloc instead of vk_zalloc if applicable
4. move local struct closer to usage, and use assignment
5. convert secondary cmd in_render_pass condition check to assert
6. avoid redundant list_del upon freeing up
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24009 >
2023-07-06 22:36:48 +00:00
Yiwei Zhang
5889995fbd
venus: cmd to reuse alloc copy from cmd pool
...
Directly use the alloc callback upon pool reset/destroy since the compat
is blessed by the spec.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24009 >
2023-07-06 22:36:48 +00:00
Yiwei Zhang
81aa680b3c
venus: track pool in cmd and track device in pool
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24009 >
2023-07-06 22:36:48 +00:00
Yiwei Zhang
fe4cf26687
venus: fix leaks from tracked present src images
...
The cmd can be reset and freed during render pass recording as well.
Cc: mesa-stable
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24009 >
2023-07-06 22:36:48 +00:00
Yiwei Zhang
ee3f17ca79
venus: fix a cmd tmp storage leak
...
When the pool is destroyed, cmds are implicitly freed. Cmd level allocs
have to be cleaned up to avoid leak.
Cc: mesa-stable
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24009 >
2023-07-06 22:36:47 +00:00
Juston Li
e6cffa1f0e
venus: use feedback for vkGetQueryPoolResults
...
Create a feedback buffer for each query pool and retrieve the query
results from the buffer instead of a roundtrip call in
vkGetQueryPoolResults.
VK_QUERY_RESULT_WAIT_BIT queries will poll until the queries are
available in the feedback buffer.
Query results in the feedback buffer are always VK_QUERY_RESULT_64_BIT
and if needed converted to what the app requests at
vkGetQueryPoolResults time.
Signed-off-by: Juston Li <justonli@google.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23348 >
2023-06-30 18:50:52 +00:00
Juston Li
38b1c39b59
venus: batch query feedback and defer until after render pass
...
vkCmdCopyQueryPoolResults cannot be called within a render pass so batch
and defer the query feedback copies until after the render pass.
Secondary command buffers inside render passes also have their query
feedback copies batched when recorded. When the secondary command buffer
is recorded via vkCmdExecuteCommands, it's batch is merged into the
primary command buffer's batch and is defered until the render pass ends.
If multiview is enabled, vkCmdCopyQueryPoolResults needs to copy
additional queries matching the number of bits set in viewMask.
Signed-off-by: Juston Li <justonli@google.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23348 >
2023-06-30 18:50:52 +00:00
Juston Li
e96428d588
venus: track render pass
...
vkCmdCopyQueryPoolResults cannot be called within a render pass/or
while the render pass is suspended so track when commands are inside
a render pass. Also track whether a secondary command buffer is
considered to be entirely inside a render pass.
Signed-off-by: Juston Li <justonli@google.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23348 >
2023-06-30 18:50:52 +00:00
Juston Li
fb537262c2
venus: track viewMask
...
Per spec 1.3.255: "If queries are used while executing a render pass
instance that has multiview enabled, the query uses N consecutive query
indices in the query pool (starting at query) where N is the number of
bits set in the view mask in the subpass the query is used in."
track viewMask so query feedback can copy the correct amount of queries
when multiview is enabled.
viewMask is passed in for vkCmdBeginRendering but for legacy
vkCmdBeginRenderPass/2 they are set by vkCreateRenderPass for each
subpass.
Signed-off-by: Juston Li <justonli@google.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23348 >
2023-06-30 18:50:52 +00:00
Juston Li
106e97a43a
venus: enable VK_EXT_color_write_enable
...
Signed-off-by: Juston Li <justonli@google.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23510 >
2023-06-08 21:08:13 +00:00
Yiwei Zhang
830c7a9f1a
venus: render server enforces blob_id_0
...
Render server enforcement has guaranteed blob_id_0. Meanwhile, blob_id_0
has deprecated largeRing feature.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21153 >
2023-02-08 05:34:13 +00:00
Juston Li
72371af332
venus: refactor out vn_feedback_event_cmd_record2
...
Refactor out vn_feedback_event_cmd_record2 into a shared functon
that downgrades pipeline barrier commands for non synchronization2
commands.
Signed-off-by: Juston Li <justonli@google.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20088 >
2023-01-14 00:51:55 +00:00
Corentin Noël
808a25c30a
venus: Avoid to copy the descriptor sets when it is not required
...
Allows to reduce the amount of allocations when the VkWriteDescriptorSet is
already sanitized.
Signed-off-by: Corentin Noël <corentin.noel@collabora.com >
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20095 >
2023-01-06 11:20:00 +00:00
Yiwei Zhang
34b28cfb7d
venus: scrub ignored fields for descriptor writes for push descriptor
...
Fixes: 933ca11f1a ("venus: implement vkCmdPushDescriptorSetWithTemplateKHR")
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Reviewed-by: Corentin Noël <corentin.noel@collabora.com >
Reviewed-by: Dawn Han <dawnhan@google.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20191 >
2022-12-08 01:56:35 +00:00
Yiwei Zhang
c2fdd6a2c2
venus: add VN_PERF_NO_CMD_BATCHING
...
Make it easier to debug object lifetime issues in Venus.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19830 >
2022-12-02 21:42:25 +00:00
Yiwei Zhang
739b20beda
venus: fix draw cmd batch accounting
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19830 >
2022-12-02 21:42:25 +00:00
Dawn Han
933ca11f1a
venus: implement vkCmdPushDescriptorSetWithTemplateKHR
...
Signed-off-by: Dawn Han <dawnhan@google.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18988 >
2022-11-23 01:21:34 +00:00
Chad Versace
85a6a2461d
venus: Enable VK_KHR_synchronization2
...
Signed-off-by: Chad Versace <chadversary@chromium.org >
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org >
Reviewed-by: Ryan Neph <ryanneph@google.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19046 >
2022-10-12 16:59:20 -07:00
Chad Versace
58eb3ac666
venus: Refactor vn_command_buffer_builder temp storage
...
Easy refactor. Change the storage type from `VkImageMemoryBarrier *` to
`void *`. Prepares for VK_KHR_synchronization2.
The patch series is cleaner with this refactor. I promise.
Signed-off-by: Chad Versace <chadversary@chromium.org >
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org >
Reviewed-by: Ryan Neph <ryanneph@google.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19046 >
2022-10-12 16:59:20 -07:00
Yiwei Zhang
e9b995ecf4
venus: ignore pInheritanceInfo if not secondary command buffer
...
TEST: no segfault in dEQP-VK.api.command_buffers.bad_inheritance_info_random
Fixes: 6f5289df53 ("venus: refactor VkCommandBufferBeginInfo fixups to function")
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18583 >
2022-09-13 23:19:54 +00:00
Juston Li
a6e6ffb703
venus: add support for VK_EXT_multi_draw
...
Test:
./deqp-vk -n dEQP-VK.draw.*multi_draw*
Test run totals:
Passed: 11520/11520 (100.0%)
Failed: 0/11520 (0.0%)
Not supported: 0/11520 (0.0%)
Warnings: 0/11520 (0.0%)
Waived: 0/11520 (0.0%)
Signed-off-by: Juston Li <justonli@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18304 >
2022-09-13 19:20:55 +00:00
Yiwei Zhang
ac95ecd044
venus: some clang format fixes
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18447 >
2022-09-06 19:52:26 +00:00
Chad Versace
b3619743c0
venus: Drop vn_present_src_attachment::acquire
...
The field is redundant.
Signed-off-by: Chad Versace <chadversary@chromium.org >
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16681 >
2022-08-10 18:17:52 +00:00
Chad Versace
7cc3f046e0
venus: Remove cryptic pointer arithmetic on present attachments
...
Each time some code wanted to access in vn_render_pass the present
acquire attachments or the present release attachments, it needed to
know the memory layout of vn_render_pass and do pointer arithmetic.
It's fragile to handroll this layout knowledge and pointer arithmetic
throughout the code, so add a pointer in vn_render_pass for each
attachment type.
The new pointers are:
- present_attachments: all present attachments
- present_acquire_attachments: a subslice of present_attachments
- present_release_attachments: a subslice of present_attachments
Signed-off-by: Chad Versace <chadversary@chromium.org >
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16681 >
2022-08-10 18:17:52 +00:00
Ryan Neph
1f28d221d9
venus: add support for VK_KHR_dynamic_rendering
...
Signed-off-by: Ryan Neph <ryanneph@google.com >
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17668 >
2022-07-23 01:14:22 +00:00
Ryan Neph
6f5289df53
venus: refactor VkCommandBufferBeginInfo fixups to function
...
Signed-off-by: Ryan Neph <ryanneph@google.com >
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17668 >
2022-07-23 01:14:22 +00:00
Yiwei Zhang
62f79f9ec1
venus: add more tracepoints for perf analysis
...
This change adds the tracepoints that can help understand app behavior
for debugging and performance optimization purposes.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Reviewed-by: Ryan Neph <ryanneph@google.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17497 >
2022-07-15 20:57:41 +00:00
Ryan Neph
627ba5c91b
venus: support VK_KHR_copy_commands2
...
Signed-off-by: Ryan Neph <ryanneph@google.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17226 >
2022-06-24 23:20:05 +00:00
Yiwei Zhang
942ec179f3
venus: add event feedback
...
- add perf option VN_PERF_NO_EVENT_FEEDBACK
- intercept to record feedback cmds for:
- vkCmdSetEvent
- vkCmdResetEvent
- add feedback code path for
- vkGetEventStatus
- vkSetEvent
- vkResetEvent
Test: dEQP-VK.synchronization.basic.event.*
Test: dEQP-VK.api.command_buffers.record_simul*
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Reviewed-by: Ryan Neph <ryanneph@google.com >
Reviewed-by: Chad Versace <chadversary@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16731 >
2022-06-16 19:00:36 +00:00
Yiwei Zhang
1598d18a88
venus: flush when batched draw calls reach a threshold
...
Add VN_DRAW_CMD_BATCH_LIMIT option
e.g. for Android
adb shell setprop mesa.vn.draw.cmd.batch.limit 100
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16110 >
2022-04-26 23:49:59 +00:00
Yiwei Zhang
9dc68bd975
venus: refactor vn_cmd_submit
...
The caller checks cmd->state instead.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16110 >
2022-04-26 23:49:59 +00:00
Igor Torrente
cc8e271813
venus: add VK_EXT_{conditional_rendering,index_type_uint8} extensions
...
Implements all the necessary code in the device initialization
and extensions functions.
Signed-off-by: Igor Torrente <igor.torrente@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15652 >
2022-04-05 05:10:26 +00:00
Igor Torrente
5d33068cd9
venus: add VK_EXT_extended_dynamic_state2 extension
...
Implements all the necessary code in the device initialization
and extension functions.
Signed-off-by: Igor Torrente <igor.torrente@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15428 >
2022-03-24 17:35:43 +00:00
Igor Torrente
f30334b6c4
Venus: add VN_CMD_ENQUEUE to vn_cmd_encode_memory_barriers
...
Signed-off-by: Igor Torrente <igor.torrente@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15344 >
2022-03-14 21:47:19 +00:00
Igor Torrente
a65d2ef1c1
Venus: Adjust VN_CMD_ENQUEUE to set VN_COMMAND_BUFFER_STATE_INVALID
...
This improves the issue of a return inside the macro.
Signed-off-by: Igor Torrente <igor.torrente@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15344 >
2022-03-14 21:47:19 +00:00
Igor Torrente
6cdbc0299a
Venus: Add VN_CMD_ENQUEUE macro with vkCmd* common code
...
Several `vn_Cmd` share the same code to enqueue the command to the
command stream.
This adds a macro with this common code.
Signed-off-by: Igor Torrente <igor.torrente@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15344 >
2022-03-14 21:47:19 +00:00