mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2026-07-09 17:25:37 -06:00
indirect dispatch/draw buffer barrier (#4597)
This commit is contained in:
parent
664804ba74
commit
1155575ca4
@ -268,6 +268,17 @@ void Rasterizer::DrawIndirect(bool is_indexed, VAddr arg_address, u32 offset, u3
|
||||
std::tie(count_buffer, count_base) = buffer_cache.ObtainBuffer(count_address, 4, false);
|
||||
}
|
||||
|
||||
if (auto barrier = buffer->GetBarrier(vk::AccessFlagBits2::eIndirectCommandRead,
|
||||
vk::PipelineStageFlagBits2::eDrawIndirect)) {
|
||||
buffer_barriers.emplace_back(*barrier);
|
||||
}
|
||||
if (count_buffer) {
|
||||
if (auto barrier = count_buffer->GetBarrier(vk::AccessFlagBits2::eIndirectCommandRead,
|
||||
vk::PipelineStageFlagBits2::eDrawIndirect)) {
|
||||
buffer_barriers.emplace_back(*barrier);
|
||||
}
|
||||
}
|
||||
|
||||
pipeline->BindResources(set_writes, buffer_barriers, push_data);
|
||||
UpdateDynamicState(pipeline, is_indexed);
|
||||
scheduler.BeginRendering(state);
|
||||
@ -348,6 +359,11 @@ void Rasterizer::DispatchIndirect(VAddr address, u32 offset, u32 size) {
|
||||
|
||||
const auto [buffer, base] = buffer_cache.ObtainBuffer(address + offset, size, false);
|
||||
|
||||
if (auto barrier = buffer->GetBarrier(vk::AccessFlagBits2::eIndirectCommandRead,
|
||||
vk::PipelineStageFlagBits2::eDrawIndirect)) {
|
||||
buffer_barriers.emplace_back(*barrier);
|
||||
}
|
||||
|
||||
scheduler.EndRendering();
|
||||
pipeline->BindResources(set_writes, buffer_barriers, push_data);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user