diff options
| author | 2023-08-13 00:12:08 +0100 | |
|---|---|---|
| committer | 2023-08-13 02:22:39 +0100 | |
| commit | 5a37b8f2c1e724671e900fef31435b0ff66a9b73 (patch) | |
| tree | 0a58be4ca860ec01b9f6633bc6c43018967e1abd /src/video_core/renderer_vulkan | |
| parent | Merge pull request #11219 from zeltermann/title-id-search (diff) | |
| download | yuzu-5a37b8f2c1e724671e900fef31435b0ff66a9b73.tar.gz yuzu-5a37b8f2c1e724671e900fef31435b0ff66a9b73.tar.xz yuzu-5a37b8f2c1e724671e900fef31435b0ff66a9b73.zip | |
Mark accelerted DMA destination buffers and images as GPU-modified
Diffstat (limited to 'src/video_core/renderer_vulkan')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index aa59889bd..89aa243d2 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp | |||
| @@ -830,7 +830,8 @@ bool AccelerateDMA::DmaBufferImageCopy(const Tegra::DMA::ImageCopy& copy_info, | |||
| 830 | } | 830 | } |
| 831 | const u32 buffer_size = static_cast<u32>(buffer_operand.pitch * buffer_operand.height); | 831 | const u32 buffer_size = static_cast<u32>(buffer_operand.pitch * buffer_operand.height); |
| 832 | static constexpr auto sync_info = VideoCommon::ObtainBufferSynchronize::FullSynchronize; | 832 | static constexpr auto sync_info = VideoCommon::ObtainBufferSynchronize::FullSynchronize; |
| 833 | const auto post_op = VideoCommon::ObtainBufferOperation::DoNothing; | 833 | const auto post_op = IS_IMAGE_UPLOAD ? VideoCommon::ObtainBufferOperation::DoNothing |
| 834 | : VideoCommon::ObtainBufferOperation::MarkAsWritten; | ||
| 834 | const auto [buffer, offset] = | 835 | const auto [buffer, offset] = |
| 835 | buffer_cache.ObtainBuffer(buffer_operand.address, buffer_size, sync_info, post_op); | 836 | buffer_cache.ObtainBuffer(buffer_operand.address, buffer_size, sync_info, post_op); |
| 836 | 837 | ||
| @@ -839,8 +840,12 @@ bool AccelerateDMA::DmaBufferImageCopy(const Tegra::DMA::ImageCopy& copy_info, | |||
| 839 | const std::span copy_span{©, 1}; | 840 | const std::span copy_span{©, 1}; |
| 840 | 841 | ||
| 841 | if constexpr (IS_IMAGE_UPLOAD) { | 842 | if constexpr (IS_IMAGE_UPLOAD) { |
| 843 | texture_cache.PrepareImage(image_id, true, false); | ||
| 842 | image->UploadMemory(buffer->Handle(), offset, copy_span); | 844 | image->UploadMemory(buffer->Handle(), offset, copy_span); |
| 843 | } else { | 845 | } else { |
| 846 | if (offset % BytesPerBlock(image->info.format)) { | ||
| 847 | return false; | ||
| 848 | } | ||
| 844 | texture_cache.DownloadImageIntoBuffer(image, buffer->Handle(), offset, copy_span, | 849 | texture_cache.DownloadImageIntoBuffer(image, buffer->Handle(), offset, copy_span, |
| 845 | buffer_operand.address, buffer_size); | 850 | buffer_operand.address, buffer_size); |
| 846 | } | 851 | } |