radeonsi: split setting num_threads in si_emit_dispatch_packets

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26055>
This commit is contained in:
Marek Olšák
2023-10-24 07:44:20 -04:00
parent 5a38757fcf
commit 2a83532ed6

View File

@@ -825,6 +825,10 @@ static void si_emit_dispatch_packets(struct si_context *sctx, const struct pipe_
bool partial_block_en = last_block[0] || last_block[1] || last_block[2];
uint32_t num_threads[3];
num_threads[0] = S_00B81C_NUM_THREAD_FULL(info->block[0]);
num_threads[1] = S_00B820_NUM_THREAD_FULL(info->block[1]);
num_threads[2] = S_00B824_NUM_THREAD_FULL(info->block[2]);
if (partial_block_en) {
unsigned partial[3];
@@ -833,18 +837,11 @@ static void si_emit_dispatch_packets(struct si_context *sctx, const struct pipe_
partial[1] = last_block[1] ? last_block[1] : info->block[1];
partial[2] = last_block[2] ? last_block[2] : info->block[2];
num_threads[0] = S_00B81C_NUM_THREAD_FULL(info->block[0]) |
S_00B81C_NUM_THREAD_PARTIAL(partial[0]);
num_threads[1] = S_00B820_NUM_THREAD_FULL(info->block[1]) |
S_00B820_NUM_THREAD_PARTIAL(partial[1]);
num_threads[2] = S_00B824_NUM_THREAD_FULL(info->block[2]) |
S_00B824_NUM_THREAD_PARTIAL(partial[2]);
num_threads[0] |= S_00B81C_NUM_THREAD_PARTIAL(partial[0]);
num_threads[1] |= S_00B820_NUM_THREAD_PARTIAL(partial[1]);
num_threads[2] |= S_00B824_NUM_THREAD_PARTIAL(partial[2]);
dispatch_initiator |= S_00B800_PARTIAL_TG_EN(1);
} else {
num_threads[0] = S_00B81C_NUM_THREAD_FULL(info->block[0]);
num_threads[1] = S_00B820_NUM_THREAD_FULL(info->block[1]);
num_threads[2] = S_00B824_NUM_THREAD_FULL(info->block[2]);
}
if (sctx->screen->info.has_set_pairs_packets) {