mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
panvk: Rework iter_sb to be the scoreboard directly
This patch changes iter_sb to contains the actual scoreboard info instead of the index in the iter range. This is required to handle NEXT_SB_ENTRY on v11+. Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com> Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35307>
This commit is contained in:
parent
0d3e8fa536
commit
e23612d0a9
6 changed files with 9 additions and 8 deletions
|
|
@ -387,11 +387,12 @@ VK_DEFINE_HANDLE_CASTS(panvk_cmd_buffer, vk.base, VkCommandBuffer,
|
|||
VK_OBJECT_TYPE_COMMAND_BUFFER)
|
||||
|
||||
static inline uint32_t
|
||||
next_iter_sb(struct panvk_cmd_buffer *cmdbuf, uint32_t sb)
|
||||
next_iter_sb(struct panvk_cmd_buffer *cmdbuf, uint32_t iter_sb_idx)
|
||||
{
|
||||
struct panvk_device *dev = to_panvk_device(cmdbuf->vk.base.device);
|
||||
|
||||
return sb + 1 < dev->csf.sb.iter_count ? sb + 1 : 0;
|
||||
return iter_sb_idx + 1 < dev->csf.sb.iter_count ? SB_ITER(iter_sb_idx + 1)
|
||||
: SB_ITER(0);
|
||||
}
|
||||
|
||||
static bool
|
||||
|
|
|
|||
|
|
@ -630,7 +630,7 @@ panvk_per_arch(cs_pick_iter_sb)(struct panvk_cmd_buffer *cmdbuf,
|
|||
|
||||
cs_match(b, iter_sb, cmp_scratch) {
|
||||
#define CASE(x) \
|
||||
cs_case(b, x) { \
|
||||
cs_case(b, SB_ITER(x)) { \
|
||||
cs_wait_slot(b, SB_ITER(x)); \
|
||||
cs_select_sb_entries_for_async_ops(b, SB_ITER(x)); \
|
||||
}
|
||||
|
|
|
|||
|
|
@ -311,7 +311,7 @@ cmd_dispatch(struct panvk_cmd_buffer *cmdbuf, struct panvk_dispatch_info *info)
|
|||
|
||||
cs_match(b, iter_sb, cmp_scratch) {
|
||||
#define CASE(x) \
|
||||
cs_case(b, x) { \
|
||||
cs_case(b, SB_ITER(x)) { \
|
||||
cs_sync64_add(b, true, MALI_CS_SYNC_SCOPE_CSG, add_val, sync_addr, \
|
||||
cs_defer(SB_WAIT_ITER(x), SB_ID(DEFERRED_SYNC))); \
|
||||
cs_move32_to(b, iter_sb, next_iter_sb(cmdbuf, x)); \
|
||||
|
|
|
|||
|
|
@ -2870,7 +2870,7 @@ flush_tiling(struct panvk_cmd_buffer *cmdbuf)
|
|||
|
||||
cs_match(b, iter_sb, cmp_scratch) {
|
||||
#define CASE(x) \
|
||||
cs_case(b, x) { \
|
||||
cs_case(b, SB_ITER(x)) { \
|
||||
cs_heap_operation(b, MALI_CS_HEAP_OPERATION_VERTEX_TILER_COMPLETED, \
|
||||
cs_defer(SB_WAIT_ITER(x), SB_ID(DEFERRED_SYNC))); \
|
||||
cs_sync64_add(b, true, MALI_CS_SYNC_SCOPE_CSG, add_val, sync_addr, \
|
||||
|
|
@ -3123,7 +3123,7 @@ issue_fragment_jobs(struct panvk_cmd_buffer *cmdbuf)
|
|||
|
||||
cs_match(b, iter_sb, cmp_scratch) {
|
||||
#define CASE(x) \
|
||||
cs_case(b, x) { \
|
||||
cs_case(b, SB_ITER(x)) { \
|
||||
const struct cs_async_op async = \
|
||||
cs_defer(SB_WAIT_ITER(x), SB_ID(DEFERRED_SYNC)); \
|
||||
if (td_count == 1) { \
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@ panvk_per_arch(dispatch_precomp)(struct panvk_precomp_ctx *ctx,
|
|||
|
||||
cs_match(b, iter_sb, cmp_scratch) {
|
||||
#define CASE(x) \
|
||||
cs_case(b, x) { \
|
||||
cs_case(b, SB_ITER(x)) { \
|
||||
cs_sync64_add(b, true, MALI_CS_SYNC_SCOPE_CSG, add_val, sync_addr, \
|
||||
cs_defer(SB_WAIT_ITER(x), SB_ID(DEFERRED_SYNC))); \
|
||||
cs_move32_to(b, iter_sb, next_iter_sb(cmdbuf, x)); \
|
||||
|
|
|
|||
|
|
@ -395,7 +395,7 @@ init_subqueue(struct panvk_queue *queue, enum panvk_subqueue_id subqueue)
|
|||
.syncobjs = panvk_priv_mem_dev_addr(queue->syncobjs),
|
||||
.debug.syncobjs = panvk_priv_mem_dev_addr(queue->debug_syncobjs),
|
||||
.debug.tracebuf.cs = subq->tracebuf.addr.dev,
|
||||
.iter_sb = 0,
|
||||
.iter_sb = SB_ITER(0),
|
||||
.reg_dump_addr = panvk_priv_mem_dev_addr(subq->regs_save),
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue