radv: stop using conditional rendering internally when preprocessing DGC
Preprocess and execute can be executed on different queue families. If preprocess is executed on GFX and the indirect count optimization is enabled, this will generate an empty cmdbuf. Expect GPU hangs if this DGC IB is then executed on ACE. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27658>
This commit is contained in:
@@ -1628,23 +1628,7 @@ radv_CmdPreprocessGeneratedCommandsNV(VkCommandBuffer commandBuffer,
|
||||
if (!radv_dgc_can_preprocess(layout, pipeline))
|
||||
return;
|
||||
|
||||
const bool use_predication = radv_use_dgc_predication(cmd_buffer, pGeneratedCommandsInfo);
|
||||
|
||||
if (use_predication) {
|
||||
VK_FROM_HANDLE(radv_buffer, seq_count_buffer, pGeneratedCommandsInfo->sequencesCountBuffer);
|
||||
const uint64_t va = radv_buffer_get_va(seq_count_buffer->bo) + seq_count_buffer->offset +
|
||||
pGeneratedCommandsInfo->sequencesCountOffset;
|
||||
|
||||
radv_begin_conditional_rendering(cmd_buffer, va, true);
|
||||
cmd_buffer->state.predicating = true;
|
||||
}
|
||||
|
||||
radv_prepare_dgc(cmd_buffer, pGeneratedCommandsInfo);
|
||||
|
||||
if (use_predication) {
|
||||
cmd_buffer->state.predicating = false;
|
||||
radv_end_conditional_rendering(cmd_buffer);
|
||||
}
|
||||
}
|
||||
|
||||
/* Always need to call this directly before draw due to dependence on bound state. */
|
||||
|
||||
Reference in New Issue
Block a user