diff options
author | bunnei <bunneidev@gmail.com> | 2022-07-23 03:04:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-23 03:04:17 +0200 |
commit | d60b0e8655fb0b1af4094dea80ef665a11a37406 (patch) | |
tree | 1c03feb9065c82a63a40f67bbf1665784770b8d7 | |
parent | Merge pull request #8624 from lat9nq/vcpkg (diff) | |
parent | video_core: use correct byte size for framebuffer (diff) | |
download | yuzu-d60b0e8655fb0b1af4094dea80ef665a11a37406.tar yuzu-d60b0e8655fb0b1af4094dea80ef665a11a37406.tar.gz yuzu-d60b0e8655fb0b1af4094dea80ef665a11a37406.tar.bz2 yuzu-d60b0e8655fb0b1af4094dea80ef665a11a37406.tar.lz yuzu-d60b0e8655fb0b1af4094dea80ef665a11a37406.tar.xz yuzu-d60b0e8655fb0b1af4094dea80ef665a11a37406.tar.zst yuzu-d60b0e8655fb0b1af4094dea80ef665a11a37406.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/renderer_vulkan/vk_blit_screen.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/video_core/renderer_vulkan/vk_blit_screen.cpp b/src/video_core/renderer_vulkan/vk_blit_screen.cpp index 1ec8392e1..4a1d96322 100644 --- a/src/video_core/renderer_vulkan/vk_blit_screen.cpp +++ b/src/video_core/renderer_vulkan/vk_blit_screen.cpp @@ -87,8 +87,12 @@ u32 GetBytesPerPixel(const Tegra::FramebufferConfig& framebuffer) { } std::size_t GetSizeInBytes(const Tegra::FramebufferConfig& framebuffer) { - return static_cast<std::size_t>(framebuffer.stride) * - static_cast<std::size_t>(framebuffer.height) * GetBytesPerPixel(framebuffer); + // TODO(Rodrigo): Read this from HLE + constexpr u32 block_height_log2 = 4; + const u32 bytes_per_pixel = GetBytesPerPixel(framebuffer); + const u64 size_bytes{Tegra::Texture::CalculateSize( + true, bytes_per_pixel, framebuffer.stride, framebuffer.height, 1, block_height_log2, 0)}; + return size_bytes; } VkFormat GetFormat(const Tegra::FramebufferConfig& framebuffer) { @@ -169,9 +173,8 @@ VkSemaphore BlitScreen::Draw(const Tegra::FramebufferConfig& framebuffer, // TODO(Rodrigo): Read this from HLE constexpr u32 block_height_log2 = 4; const u32 bytes_per_pixel = GetBytesPerPixel(framebuffer); - const u64 size_bytes{Tegra::Texture::CalculateSize(true, bytes_per_pixel, - framebuffer.stride, framebuffer.height, - 1, block_height_log2, 0)}; + const u64 size_bytes{GetSizeInBytes(framebuffer)}; + Tegra::Texture::UnswizzleTexture( mapped_span.subspan(image_offset, size_bytes), std::span(host_ptr, size_bytes), bytes_per_pixel, framebuffer.width, framebuffer.height, 1, block_height_log2, 0); |