mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 11:08:03 +02:00
radv: Implement vkCmdWriteTimestamp2 on transfer queues.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26580>
This commit is contained in:
parent
32dd77ea2d
commit
7a4f535145
1 changed files with 17 additions and 5 deletions
|
|
@ -2443,12 +2443,28 @@ radv_CmdWriteTimestamp2(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 sta
|
|||
{
|
||||
RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
|
||||
RADV_FROM_HANDLE(radv_query_pool, pool, queryPool);
|
||||
const unsigned num_queries = MAX2(util_bitcount(cmd_buffer->state.render.view_mask), 1);
|
||||
struct radeon_cmdbuf *cs = cmd_buffer->cs;
|
||||
uint64_t va = radv_buffer_get_va(pool->bo);
|
||||
const uint64_t va = radv_buffer_get_va(pool->bo);
|
||||
uint64_t query_va = va + pool->stride * query;
|
||||
|
||||
radv_cs_add_buffer(cmd_buffer->device->ws, cs, pool->bo);
|
||||
|
||||
if (cmd_buffer->qf == RADV_QUEUE_TRANSFER) {
|
||||
if (cmd_buffer->device->instance->flush_before_timestamp_write) {
|
||||
radeon_check_space(cmd_buffer->device->ws, cmd_buffer->cs, 1);
|
||||
radeon_emit(cmd_buffer->cs, SDMA_PACKET(SDMA_OPCODE_NOP, 0, 0));
|
||||
}
|
||||
|
||||
for (unsigned i = 0; i < num_queries; ++i, query_va += pool->stride) {
|
||||
radeon_check_space(cmd_buffer->device->ws, cmd_buffer->cs, 3);
|
||||
radeon_emit(cmd_buffer->cs, SDMA_PACKET(SDMA_OPCODE_TIMESTAMP, SDMA_TS_SUB_OPCODE_GET_GLOBAL_TIMESTAMP, 0));
|
||||
radeon_emit(cs, query_va);
|
||||
radeon_emit(cs, query_va >> 32);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (cmd_buffer->device->instance->flush_before_timestamp_write) {
|
||||
/* Make sure previously launched waves have finished */
|
||||
cmd_buffer->state.flush_bits |= RADV_CMD_FLAG_PS_PARTIAL_FLUSH | RADV_CMD_FLAG_CS_PARTIAL_FLUSH;
|
||||
|
|
@ -2456,10 +2472,6 @@ radv_CmdWriteTimestamp2(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 sta
|
|||
|
||||
si_emit_cache_flush(cmd_buffer);
|
||||
|
||||
int num_queries = 1;
|
||||
if (cmd_buffer->state.render.view_mask)
|
||||
num_queries = util_bitcount(cmd_buffer->state.render.view_mask);
|
||||
|
||||
ASSERTED unsigned cdw_max = radeon_check_space(cmd_buffer->device->ws, cs, 28 * num_queries);
|
||||
|
||||
for (unsigned i = 0; i < num_queries; i++) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue