Browse Source
Revert "[vk] Fix Vulkan Upload & Present Barriers for Spec Compliance (#2681 )" (#2748 )
Vulkan layout and barrier edits made the GPU use a different shader path that compiled a TLDS instruction with an unaligned register (R157).
The old path never generated that case, so the translator’s missing unaligned-register handling only surfaced after this change.
Co-authored-by: Ribbit <ribbit@placeholder.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2748
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Co-authored-by: Ribbit <ribbit@eden-emu.dev>
Co-committed-by: Ribbit <ribbit@eden-emu.dev>
pull/2751/head
Ribbit
2 months ago
committed by
crueter
No known key found for this signature in database
GPG Key ID: 425ACD2D4830EBC6
3 changed files with
4 additions and
4 deletions
src/video_core/renderer_vulkan/present/layer.cpp
src/video_core/renderer_vulkan/vk_present_manager.cpp
src/video_core/renderer_vulkan/vk_texture_cache.cpp
@ -332,7 +332,7 @@ void Layer::UpdateRawImage(const Tegra::FramebufferConfig& framebuffer, size_t i
write_barrier . dstAccessMask = VK_ACCESS_SHADER_READ_BIT ;
write_barrier . oldLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL ;
cmdbuf . PipelineBarrier ( VK_PIPELINE_STAGE_TOP_OF_PIPE _BIT , VK_PIPELINE_STAGE_TRANSFER_BIT , 0 ,
cmdbuf . PipelineBarrier ( VK_PIPELINE_STAGE_HOST _BIT , VK_PIPELINE_STAGE_TRANSFER_BIT , 0 ,
read_barrier ) ;
cmdbuf . CopyBufferToImage ( * buffer , image , VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL , copy ) ;
cmdbuf . PipelineBarrier ( VK_PIPELINE_STAGE_TRANSFER_BIT ,
@ -412,7 +412,7 @@ void PresentManager::CopyToSwapchainImpl(Frame* frame) {
. sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER ,
. pNext = nullptr ,
. srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT ,
. dstAccessMask = 0 ,
. dstAccessMask = VK_ACCESS_MEMORY_READ_BIT ,
. oldLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL ,
. newLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR ,
. srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED ,
@ -460,7 +460,7 @@ void PresentManager::CopyToSwapchainImpl(Frame* frame) {
MakeImageCopy ( frame - > width , frame - > height , extent . width , extent . height ) ) ;
}
cmdbuf . PipelineBarrier ( VK_PIPELINE_STAGE_TRANSFER_BIT , VK_PIPELINE_STAGE_BOTTOM_OF_PIPE _BIT , { } ,
cmdbuf . PipelineBarrier ( VK_PIPELINE_STAGE_TRANSFER_BIT , VK_PIPELINE_STAGE_ALL_GRAPHICS _BIT , { } ,
{ } , { } , post_barriers ) ;
cmdbuf . End ( ) ;
@ -1068,7 +1068,7 @@ void TextureCacheRuntime::ReinterpretImage(Image& dst, Image& src,
cmdbuf . PipelineBarrier ( VK_PIPELINE_STAGE_ALL_COMMANDS_BIT , VK_PIPELINE_STAGE_TRANSFER_BIT ,
0 , READ_BARRIER , { } , middle_out_barrier ) ;
cmdbuf . CopyBufferToImage ( copy_buffer , dst_image , VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIM AL , vk_out_copies ) ;
cmdbuf . CopyBufferToImage ( copy_buffer , dst_image , VK_IMAGE_LAYOUT_GENER AL , vk_out_copies ) ;
cmdbuf . PipelineBarrier ( VK_PIPELINE_STAGE_TRANSFER_BIT , VK_PIPELINE_STAGE_ALL_COMMANDS_BIT ,
0 , { } , { } , post_barriers ) ;
} ) ;