mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2026-03-26 20:58:32 -06:00
parent
ec1719e4d3
commit
78411c4b8a
@ -239,7 +239,13 @@ Image::Barriers Image::GetBarriers(vk::ImageLayout dst_layout, vk::AccessFlags2
|
||||
ASSERT(subres_idx < subresource_states.size());
|
||||
auto& state = subresource_states[subres_idx];
|
||||
|
||||
if (state.layout != dst_layout || state.access_mask != dst_mask) {
|
||||
if (state.layout != dst_layout || state.access_mask != dst_mask ||
|
||||
static_cast<bool>(dst_mask &
|
||||
(vk::AccessFlagBits2::eTransferWrite |
|
||||
vk::AccessFlagBits2::eShaderWrite |
|
||||
vk::AccessFlagBits2::eColorAttachmentWrite |
|
||||
vk::AccessFlagBits2::eDepthStencilAttachmentWrite |
|
||||
vk::AccessFlagBits2::eMemoryWrite))) {
|
||||
barriers.emplace_back(vk::ImageMemoryBarrier2{
|
||||
.srcStageMask = state.pl_stage,
|
||||
.srcAccessMask = state.access_mask,
|
||||
@ -269,7 +275,12 @@ Image::Barriers Image::GetBarriers(vk::ImageLayout dst_layout, vk::AccessFlags2
|
||||
subresource_states.clear();
|
||||
}
|
||||
} else { // Full resource transition
|
||||
if (last_state.layout == dst_layout && last_state.access_mask == dst_mask) {
|
||||
constexpr auto write_flags =
|
||||
vk::AccessFlagBits2::eTransferWrite | vk::AccessFlagBits2::eShaderWrite |
|
||||
vk::AccessFlagBits2::eColorAttachmentWrite |
|
||||
vk::AccessFlagBits2::eDepthStencilAttachmentWrite | vk::AccessFlagBits2::eMemoryWrite;
|
||||
const bool is_write = static_cast<bool>(dst_mask & write_flags);
|
||||
if (last_state.layout == dst_layout && last_state.access_mask == dst_mask && !is_write) {
|
||||
return {};
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user