panvk: hide utrace behind more generic interface
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com> Reviewed-by: Olivia Lee <olivia.lee@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36161>
This commit is contained in:
committed by
Marge Bot
parent
0ed1a10b73
commit
7358f0e045
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* Copyright 2025 Arm Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#include "panvk_cmd_buffer.h"
|
||||
#include "panvk_queue.h"
|
||||
|
||||
enum panvk_instr_work_type {
|
||||
PANVK_INSTR_WORK_TYPE_CMDBUF,
|
||||
PANVK_INSTR_WORK_TYPE_META,
|
||||
PANVK_INSTR_WORK_TYPE_RENDER,
|
||||
PANVK_INSTR_WORK_TYPE_DISPATCH,
|
||||
PANVK_INSTR_WORK_TYPE_DISPATCH_INDIRECT,
|
||||
PANVK_INSTR_WORK_TYPE_BARRIER,
|
||||
PANVK_INSTR_WORK_TYPE_SYNC_WAIT,
|
||||
};
|
||||
|
||||
struct panvk_instr_end_args {
|
||||
/* Depending on which work type is ended, one of the options below is valid. */
|
||||
union {
|
||||
struct {
|
||||
uint8_t wait_sb_mask;
|
||||
uint8_t wait_subqueue_mask;
|
||||
uint8_t l2;
|
||||
uint8_t lsc;
|
||||
uint8_t other;
|
||||
} barrier;
|
||||
|
||||
struct {
|
||||
VkCommandBufferUsageFlags flags;
|
||||
} cmdbuf;
|
||||
|
||||
struct {
|
||||
VkRenderingFlags flags;
|
||||
const struct pan_fb_info *fb;
|
||||
} render;
|
||||
|
||||
struct {
|
||||
uint16_t base_group_x;
|
||||
uint16_t base_group_y;
|
||||
uint16_t base_group_z;
|
||||
uint16_t group_count_x;
|
||||
uint16_t group_count_y;
|
||||
uint16_t group_count_z;
|
||||
uint16_t group_size_x;
|
||||
uint16_t group_size_y;
|
||||
uint16_t group_size_z;
|
||||
} dispatch;
|
||||
|
||||
struct {
|
||||
uint64_t buffer_gpu;
|
||||
} dispatch_indirect;
|
||||
};
|
||||
};
|
||||
|
||||
void
|
||||
panvk_per_arch(panvk_instr_begin_work)(enum panvk_subqueue_id id,
|
||||
struct panvk_cmd_buffer *cmdbuf,
|
||||
enum panvk_instr_work_type work_type);
|
||||
|
||||
/**
|
||||
* Mark the end of synchronous work.
|
||||
*/
|
||||
void panvk_per_arch(panvk_instr_end_work)(
|
||||
enum panvk_subqueue_id id, struct panvk_cmd_buffer *cmdbuf,
|
||||
enum panvk_instr_work_type work_type,
|
||||
const struct panvk_instr_end_args *const args);
|
||||
@@ -40,6 +40,7 @@
|
||||
#include "panvk_device.h"
|
||||
#include "panvk_entrypoints.h"
|
||||
#include "panvk_instance.h"
|
||||
#include "panvk_instr.h"
|
||||
#include "panvk_physical_device.h"
|
||||
#include "panvk_priv_bo.h"
|
||||
#include "panvk_tracepoints.h"
|
||||
@@ -171,7 +172,11 @@ finish_cs(struct panvk_cmd_buffer *cmdbuf, uint32_t subqueue)
|
||||
}
|
||||
}
|
||||
|
||||
trace_end_cmdbuf(&cmdbuf->utrace.uts[subqueue], cmdbuf, cmdbuf->flags);
|
||||
struct panvk_instr_end_args instr_info = {.cmdbuf = {
|
||||
.flags = cmdbuf->flags,
|
||||
}};
|
||||
panvk_per_arch(panvk_instr_end_work)(
|
||||
subqueue, cmdbuf, PANVK_INSTR_WORK_TYPE_CMDBUF, &instr_info);
|
||||
|
||||
cs_finish(&cmdbuf->state.cs[subqueue].builder);
|
||||
}
|
||||
@@ -600,7 +605,8 @@ panvk_per_arch(emit_barrier)(struct panvk_cmd_buffer *cmdbuf,
|
||||
}
|
||||
|
||||
u_foreach_bit(i, utrace_subqueue_mask)
|
||||
trace_begin_barrier(&cmdbuf->utrace.uts[i], cmdbuf);
|
||||
panvk_per_arch(panvk_instr_begin_work)(i, cmdbuf,
|
||||
PANVK_INSTR_WORK_TYPE_BARRIER);
|
||||
|
||||
for (uint32_t i = 0; i < PANVK_SUBQUEUE_COUNT; i++) {
|
||||
struct cs_builder *b = panvk_get_cs_builder(cmdbuf, i);
|
||||
@@ -652,10 +658,14 @@ panvk_per_arch(emit_barrier)(struct panvk_cmd_buffer *cmdbuf,
|
||||
}
|
||||
|
||||
u_foreach_bit(i, utrace_subqueue_mask) {
|
||||
trace_end_barrier(
|
||||
&cmdbuf->utrace.uts[i], cmdbuf, deps.src[i].wait_sb_mask,
|
||||
deps.dst[i].wait_subqueue_mask, deps.src[i].cache_flush.l2,
|
||||
deps.src[i].cache_flush.lsc, deps.src[i].cache_flush.others);
|
||||
struct panvk_instr_end_args info = {
|
||||
.barrier = {.wait_sb_mask = deps.src[i].wait_sb_mask,
|
||||
.wait_subqueue_mask = deps.dst[i].wait_subqueue_mask,
|
||||
.l2 = deps.src[i].cache_flush.l2,
|
||||
.lsc = deps.src[i].cache_flush.lsc,
|
||||
.other = deps.src[i].cache_flush.others}};
|
||||
panvk_per_arch(panvk_instr_end_work)(
|
||||
i, cmdbuf, PANVK_INSTR_WORK_TYPE_BARRIER, &info);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -960,7 +970,8 @@ panvk_per_arch(BeginCommandBuffer)(VkCommandBuffer commandBuffer,
|
||||
panvk_per_arch(cmd_inherit_render_state)(cmdbuf, pBeginInfo);
|
||||
|
||||
for (uint32_t i = 0; i < PANVK_SUBQUEUE_COUNT; i++)
|
||||
trace_begin_cmdbuf(&cmdbuf->utrace.uts[i], cmdbuf);
|
||||
panvk_per_arch(panvk_instr_begin_work)(i, cmdbuf,
|
||||
PANVK_INSTR_WORK_TYPE_CMDBUF);
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "panvk_cmd_push_constant.h"
|
||||
#include "panvk_device.h"
|
||||
#include "panvk_entrypoints.h"
|
||||
#include "panvk_instr.h"
|
||||
#include "panvk_macros.h"
|
||||
#include "panvk_meta.h"
|
||||
#include "panvk_physical_device.h"
|
||||
@@ -362,14 +363,26 @@ panvk_per_arch(CmdDispatchBase)(VkCommandBuffer commandBuffer,
|
||||
.direct.wg_count = {groupCountX, groupCountY, groupCountZ},
|
||||
};
|
||||
|
||||
trace_begin_dispatch(&cmdbuf->utrace.uts[PANVK_SUBQUEUE_COMPUTE], cmdbuf);
|
||||
panvk_per_arch(panvk_instr_begin_work)(PANVK_SUBQUEUE_COMPUTE, cmdbuf,
|
||||
PANVK_INSTR_WORK_TYPE_DISPATCH);
|
||||
|
||||
cmd_dispatch(cmdbuf, &info);
|
||||
|
||||
trace_end_dispatch(&cmdbuf->utrace.uts[PANVK_SUBQUEUE_COMPUTE], cmdbuf,
|
||||
baseGroupX, baseGroupY, baseGroupZ, groupCountX,
|
||||
groupCountY, groupCountZ, shader->cs.local_size.x,
|
||||
shader->cs.local_size.y, shader->cs.local_size.z);
|
||||
struct panvk_instr_end_args instr_info = {
|
||||
.dispatch = {
|
||||
.base_group_x = baseGroupX,
|
||||
.base_group_y = baseGroupY,
|
||||
.base_group_z = baseGroupZ,
|
||||
.group_count_x = groupCountX,
|
||||
.group_count_y = groupCountY,
|
||||
.group_count_z = groupCountZ,
|
||||
.group_size_x = shader->cs.local_size.x,
|
||||
.group_size_y = shader->cs.local_size.y,
|
||||
.group_size_z = shader->cs.local_size.z,
|
||||
}};
|
||||
panvk_per_arch(panvk_instr_end_work)(PANVK_SUBQUEUE_COMPUTE, cmdbuf,
|
||||
PANVK_INSTR_WORK_TYPE_DISPATCH,
|
||||
&instr_info);
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL
|
||||
@@ -383,12 +396,15 @@ panvk_per_arch(CmdDispatchIndirect)(VkCommandBuffer commandBuffer,
|
||||
.indirect.buffer_dev_addr = buffer_gpu,
|
||||
};
|
||||
|
||||
trace_begin_dispatch_indirect(&cmdbuf->utrace.uts[PANVK_SUBQUEUE_COMPUTE],
|
||||
cmdbuf);
|
||||
panvk_per_arch(panvk_instr_begin_work)(
|
||||
PANVK_SUBQUEUE_COMPUTE, cmdbuf, PANVK_INSTR_WORK_TYPE_DISPATCH_INDIRECT);
|
||||
|
||||
cmd_dispatch(cmdbuf, &info);
|
||||
|
||||
trace_end_dispatch_indirect(&cmdbuf->utrace.uts[PANVK_SUBQUEUE_COMPUTE],
|
||||
cmdbuf,
|
||||
(struct u_trace_address){.offset = buffer_gpu});
|
||||
struct panvk_instr_end_args instr_info = {.dispatch_indirect = {
|
||||
.buffer_gpu = buffer_gpu,
|
||||
}};
|
||||
panvk_per_arch(panvk_instr_end_work)(PANVK_SUBQUEUE_COMPUTE, cmdbuf,
|
||||
PANVK_INSTR_WORK_TYPE_DISPATCH_INDIRECT,
|
||||
&instr_info);
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "panvk_image.h"
|
||||
#include "panvk_image_view.h"
|
||||
#include "panvk_instance.h"
|
||||
#include "panvk_instr.h"
|
||||
#include "panvk_priv_bo.h"
|
||||
#include "panvk_query_pool.h"
|
||||
#include "panvk_shader.h"
|
||||
@@ -2855,8 +2856,10 @@ panvk_per_arch(CmdBeginRendering)(VkCommandBuffer commandBuffer,
|
||||
/* If we're not resuming, the FBD should be NULL. */
|
||||
assert(!state->render.fbds.gpu || resuming);
|
||||
|
||||
trace_begin_render(&cmdbuf->utrace.uts[PANVK_SUBQUEUE_VERTEX_TILER], cmdbuf);
|
||||
trace_begin_render(&cmdbuf->utrace.uts[PANVK_SUBQUEUE_FRAGMENT], cmdbuf);
|
||||
panvk_per_arch(panvk_instr_begin_work)(PANVK_SUBQUEUE_VERTEX_TILER, cmdbuf,
|
||||
PANVK_INSTR_WORK_TYPE_RENDER);
|
||||
panvk_per_arch(panvk_instr_begin_work)(PANVK_SUBQUEUE_FRAGMENT, cmdbuf,
|
||||
PANVK_INSTR_WORK_TYPE_RENDER);
|
||||
|
||||
if (!resuming)
|
||||
panvk_per_arch(cmd_preload_render_area_border)(cmdbuf, pRenderingInfo);
|
||||
@@ -3060,9 +3063,11 @@ issue_fragment_jobs(struct panvk_cmd_buffer *cmdbuf)
|
||||
length_reg);
|
||||
|
||||
/* Wait for the tiling to be done before submitting the fragment job. */
|
||||
trace_begin_sync_wait(&cmdbuf->utrace.uts[PANVK_SUBQUEUE_FRAGMENT], cmdbuf);
|
||||
panvk_per_arch(panvk_instr_begin_work)(PANVK_SUBQUEUE_FRAGMENT, cmdbuf,
|
||||
PANVK_INSTR_WORK_TYPE_SYNC_WAIT);
|
||||
wait_finish_tiling(cmdbuf);
|
||||
trace_end_sync_wait(&cmdbuf->utrace.uts[PANVK_SUBQUEUE_FRAGMENT], cmdbuf);
|
||||
panvk_per_arch(panvk_instr_end_work)(PANVK_SUBQUEUE_FRAGMENT, cmdbuf,
|
||||
PANVK_INSTR_WORK_TYPE_SYNC_WAIT, NULL);
|
||||
|
||||
/* Disable the oom handler once the vertex/tiler work has finished.
|
||||
* We need to disable the handler at this point as the vertex/tiler subqueue
|
||||
@@ -3435,10 +3440,15 @@ panvk_per_arch(CmdEndRendering)(VkCommandBuffer commandBuffer)
|
||||
if (!suspending)
|
||||
panvk_per_arch(cmd_resolve_attachments)(cmdbuf);
|
||||
|
||||
trace_end_render(&cmdbuf->utrace.uts[PANVK_SUBQUEUE_VERTEX_TILER], cmdbuf,
|
||||
cmdbuf->state.gfx.render.flags,
|
||||
&cmdbuf->state.gfx.render.fb.info);
|
||||
trace_end_render(&cmdbuf->utrace.uts[PANVK_SUBQUEUE_FRAGMENT], cmdbuf,
|
||||
cmdbuf->state.gfx.render.flags,
|
||||
&cmdbuf->state.gfx.render.fb.info);
|
||||
struct panvk_instr_end_args instr_info = {
|
||||
.render = {
|
||||
.flags = cmdbuf->state.gfx.render.flags,
|
||||
.fb = &cmdbuf->state.gfx.render.fb.info,
|
||||
}};
|
||||
panvk_per_arch(panvk_instr_end_work)(PANVK_SUBQUEUE_VERTEX_TILER, cmdbuf,
|
||||
PANVK_INSTR_WORK_TYPE_RENDER,
|
||||
&instr_info);
|
||||
panvk_per_arch(panvk_instr_end_work)(PANVK_SUBQUEUE_FRAGMENT, cmdbuf,
|
||||
PANVK_INSTR_WORK_TYPE_RENDER,
|
||||
&instr_info);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
/*
|
||||
* Copyright 2025 Arm Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#include "panvk_instr.h"
|
||||
#include "panvk_tracepoints.h"
|
||||
#include "panvk_utrace.h"
|
||||
|
||||
#include "util/macros.h"
|
||||
|
||||
static void
|
||||
panvk_instr_end_barrier(enum panvk_subqueue_id id,
|
||||
struct panvk_cmd_buffer *cmdbuf,
|
||||
const struct panvk_instr_end_args *const args)
|
||||
{
|
||||
trace_end_barrier(&cmdbuf->utrace.uts[id], cmdbuf,
|
||||
args->barrier.wait_sb_mask,
|
||||
args->barrier.wait_subqueue_mask, args->barrier.l2,
|
||||
args->barrier.lsc, args->barrier.other);
|
||||
}
|
||||
|
||||
static void
|
||||
panvk_instr_end_cmdbuf(enum panvk_subqueue_id id,
|
||||
struct panvk_cmd_buffer *cmdbuf,
|
||||
const struct panvk_instr_end_args *const args)
|
||||
{
|
||||
trace_end_cmdbuf(&cmdbuf->utrace.uts[id], cmdbuf, args->cmdbuf.flags);
|
||||
}
|
||||
|
||||
static void
|
||||
panvk_instr_end_render(enum panvk_subqueue_id id,
|
||||
struct panvk_cmd_buffer *cmdbuf,
|
||||
const struct panvk_instr_end_args *const args)
|
||||
{
|
||||
trace_end_render(&cmdbuf->utrace.uts[id], cmdbuf, args->render.flags,
|
||||
args->render.fb);
|
||||
}
|
||||
|
||||
static void
|
||||
panvk_instr_end_dispatch(enum panvk_subqueue_id id,
|
||||
struct panvk_cmd_buffer *cmdbuf,
|
||||
const struct panvk_instr_end_args *const args)
|
||||
{
|
||||
trace_end_dispatch(&cmdbuf->utrace.uts[id], cmdbuf,
|
||||
args->dispatch.base_group_x, args->dispatch.base_group_y,
|
||||
args->dispatch.base_group_z, args->dispatch.group_count_x,
|
||||
args->dispatch.group_count_y,
|
||||
args->dispatch.group_count_z, args->dispatch.group_size_x,
|
||||
args->dispatch.group_size_y, args->dispatch.group_size_z);
|
||||
}
|
||||
|
||||
static void
|
||||
panvk_instr_end_dispatch_indirect(enum panvk_subqueue_id id,
|
||||
struct panvk_cmd_buffer *cmdbuf,
|
||||
const struct panvk_instr_end_args *const args)
|
||||
{
|
||||
trace_end_dispatch_indirect(&cmdbuf->utrace.uts[id], cmdbuf,
|
||||
(struct u_trace_address){
|
||||
.bo = NULL,
|
||||
.offset = args->dispatch_indirect.buffer_gpu,
|
||||
});
|
||||
}
|
||||
|
||||
void
|
||||
panvk_per_arch(panvk_instr_begin_work)(enum panvk_subqueue_id id,
|
||||
struct panvk_cmd_buffer *cmdbuf,
|
||||
enum panvk_instr_work_type work_type)
|
||||
{
|
||||
switch (work_type) {
|
||||
case PANVK_INSTR_WORK_TYPE_CMDBUF:
|
||||
trace_begin_cmdbuf(&cmdbuf->utrace.uts[id], cmdbuf);
|
||||
break;
|
||||
case PANVK_INSTR_WORK_TYPE_META:
|
||||
trace_begin_meta(&cmdbuf->utrace.uts[id], cmdbuf);
|
||||
break;
|
||||
case PANVK_INSTR_WORK_TYPE_RENDER:
|
||||
trace_begin_render(&cmdbuf->utrace.uts[id], cmdbuf);
|
||||
break;
|
||||
case PANVK_INSTR_WORK_TYPE_DISPATCH:
|
||||
trace_begin_dispatch(&cmdbuf->utrace.uts[id], cmdbuf);
|
||||
break;
|
||||
case PANVK_INSTR_WORK_TYPE_DISPATCH_INDIRECT:
|
||||
trace_begin_dispatch_indirect(&cmdbuf->utrace.uts[id], cmdbuf);
|
||||
break;
|
||||
case PANVK_INSTR_WORK_TYPE_BARRIER:
|
||||
trace_begin_barrier(&cmdbuf->utrace.uts[id], cmdbuf);
|
||||
break;
|
||||
case PANVK_INSTR_WORK_TYPE_SYNC_WAIT:
|
||||
trace_begin_sync_wait(&cmdbuf->utrace.uts[id], cmdbuf);
|
||||
break;
|
||||
default:
|
||||
unreachable("unsupported panvk_instr_work_type");
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
panvk_per_arch(panvk_instr_end_work)(
|
||||
enum panvk_subqueue_id id, struct panvk_cmd_buffer *cmdbuf,
|
||||
enum panvk_instr_work_type work_type,
|
||||
const struct panvk_instr_end_args *const args)
|
||||
{
|
||||
switch (work_type) {
|
||||
case PANVK_INSTR_WORK_TYPE_CMDBUF:
|
||||
panvk_instr_end_cmdbuf(id, cmdbuf, args);
|
||||
break;
|
||||
case PANVK_INSTR_WORK_TYPE_META:
|
||||
trace_end_meta(&cmdbuf->utrace.uts[id], cmdbuf);
|
||||
break;
|
||||
case PANVK_INSTR_WORK_TYPE_RENDER:
|
||||
panvk_instr_end_render(id, cmdbuf, args);
|
||||
break;
|
||||
case PANVK_INSTR_WORK_TYPE_DISPATCH:
|
||||
panvk_instr_end_dispatch(id, cmdbuf, args);
|
||||
break;
|
||||
case PANVK_INSTR_WORK_TYPE_DISPATCH_INDIRECT:
|
||||
panvk_instr_end_dispatch_indirect(id, cmdbuf, args);
|
||||
break;
|
||||
case PANVK_INSTR_WORK_TYPE_BARRIER:
|
||||
panvk_instr_end_barrier(id, cmdbuf, args);
|
||||
break;
|
||||
case PANVK_INSTR_WORK_TYPE_SYNC_WAIT:
|
||||
trace_end_sync_wait(&cmdbuf->utrace.uts[id], cmdbuf);
|
||||
break;
|
||||
default:
|
||||
unreachable("unsupported panvk_instr_work_type");
|
||||
}
|
||||
}
|
||||
@@ -93,6 +93,7 @@ csf_files = [
|
||||
'csf/panvk_vX_event.c',
|
||||
'csf/panvk_vX_exception_handler.c',
|
||||
'csf/panvk_vX_gpu_queue.c',
|
||||
'csf/panvk_vX_instr.c',
|
||||
'csf/panvk_vX_utrace.c',
|
||||
]
|
||||
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
#include "panvk_cmd_meta.h"
|
||||
#include "panvk_entrypoints.h"
|
||||
#include "panvk_tracepoints.h"
|
||||
#if PAN_ARCH >= 10
|
||||
#include "csf/panvk_instr.h"
|
||||
#endif
|
||||
|
||||
static bool
|
||||
copy_to_image_use_gfx_pipeline(struct panvk_device *dev,
|
||||
@@ -48,7 +51,8 @@ panvk_per_arch(cmd_meta_compute_start)(
|
||||
save_ctx->cs.desc = cmdbuf->state.compute.cs.desc;
|
||||
|
||||
#if PAN_ARCH >= 10
|
||||
trace_begin_meta(&cmdbuf->utrace.uts[PANVK_SUBQUEUE_COMPUTE], cmdbuf);
|
||||
panvk_per_arch(panvk_instr_begin_work)(PANVK_SUBQUEUE_COMPUTE, cmdbuf,
|
||||
PANVK_INSTR_WORK_TYPE_META);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -61,7 +65,8 @@ panvk_per_arch(cmd_meta_compute_end)(
|
||||
cmdbuf->state.compute.desc_state.push_sets[0];
|
||||
|
||||
#if PAN_ARCH >= 10
|
||||
trace_end_meta(&cmdbuf->utrace.uts[PANVK_SUBQUEUE_COMPUTE], cmdbuf);
|
||||
panvk_per_arch(panvk_instr_end_work)(PANVK_SUBQUEUE_COMPUTE, cmdbuf,
|
||||
PANVK_INSTR_WORK_TYPE_META, NULL);
|
||||
#endif
|
||||
|
||||
cmdbuf->state.compute.desc_state.sets[0] = save_ctx->set0;
|
||||
@@ -119,8 +124,10 @@ panvk_per_arch(cmd_meta_gfx_start)(
|
||||
cmdbuf->state.gfx.vk_meta = true;
|
||||
|
||||
#if PAN_ARCH >= 10
|
||||
trace_begin_meta(&cmdbuf->utrace.uts[PANVK_SUBQUEUE_VERTEX_TILER], cmdbuf);
|
||||
trace_begin_meta(&cmdbuf->utrace.uts[PANVK_SUBQUEUE_FRAGMENT], cmdbuf);
|
||||
panvk_per_arch(panvk_instr_begin_work)(PANVK_SUBQUEUE_VERTEX_TILER, cmdbuf,
|
||||
PANVK_INSTR_WORK_TYPE_META);
|
||||
panvk_per_arch(panvk_instr_begin_work)(PANVK_SUBQUEUE_FRAGMENT, cmdbuf,
|
||||
PANVK_INSTR_WORK_TYPE_META);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -133,8 +140,10 @@ panvk_per_arch(cmd_meta_gfx_end)(
|
||||
cmdbuf->state.gfx.desc_state.push_sets[0];
|
||||
|
||||
#if PAN_ARCH >= 10
|
||||
trace_end_meta(&cmdbuf->utrace.uts[PANVK_SUBQUEUE_VERTEX_TILER], cmdbuf);
|
||||
trace_end_meta(&cmdbuf->utrace.uts[PANVK_SUBQUEUE_FRAGMENT], cmdbuf);
|
||||
panvk_per_arch(panvk_instr_end_work)(PANVK_SUBQUEUE_VERTEX_TILER, cmdbuf,
|
||||
PANVK_INSTR_WORK_TYPE_META, NULL);
|
||||
panvk_per_arch(panvk_instr_end_work)(PANVK_SUBQUEUE_FRAGMENT, cmdbuf,
|
||||
PANVK_INSTR_WORK_TYPE_META, NULL);
|
||||
#endif
|
||||
|
||||
cmdbuf->state.gfx.desc_state.sets[0] = save_ctx->set0;
|
||||
|
||||
Reference in New Issue
Block a user