mirror of
https://gitee.com/openharmony/third_party_mesa3d
synced 2024-11-24 16:00:56 +00:00
radv: allow to use a compute shader for resetting the query pool
Serious Sam Fusion 2017 uses a huge number of occlusion queries, and the allocated query pool buffer is greater than 4096 bytes. This slightly improves performance (tested in Ultra) from 117.2 FPS to 119.7 FPS (~+2%) on my RX480. This also improves Talos, from 69 FPS to 72/73 FPS (~+5%). Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
parent
0d61109bb7
commit
a41e2e9cf5
@ -1058,16 +1058,18 @@ void radv_CmdResetQueryPool(
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
|
||||
RADV_FROM_HANDLE(radv_query_pool, pool, queryPool);
|
||||
uint64_t va = radv_buffer_get_va(pool->bo);
|
||||
struct radv_cmd_state *state = &cmd_buffer->state;
|
||||
|
||||
cmd_buffer->device->ws->cs_add_buffer(cmd_buffer->cs, pool->bo, 8);
|
||||
state->flush_bits |= radv_fill_buffer(cmd_buffer, pool->bo,
|
||||
firstQuery * pool->stride,
|
||||
queryCount * pool->stride, 0);
|
||||
|
||||
si_cp_dma_clear_buffer(cmd_buffer, va + firstQuery * pool->stride,
|
||||
queryCount * pool->stride, 0);
|
||||
if (pool->type == VK_QUERY_TYPE_TIMESTAMP ||
|
||||
pool->type == VK_QUERY_TYPE_PIPELINE_STATISTICS)
|
||||
si_cp_dma_clear_buffer(cmd_buffer, va + pool->availability_offset + firstQuery * 4,
|
||||
queryCount * 4, 0);
|
||||
pool->type == VK_QUERY_TYPE_PIPELINE_STATISTICS) {
|
||||
state->flush_bits |= radv_fill_buffer(cmd_buffer, pool->bo,
|
||||
pool->availability_offset + firstQuery * 4,
|
||||
queryCount * 4, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void radv_CmdBeginQuery(
|
||||
|
Loading…
Reference in New Issue
Block a user