diff options
author | Liam <byteslice@airmail.cc> | 2022-07-28 03:52:06 +0200 |
---|---|---|
committer | Liam <byteslice@airmail.cc> | 2022-07-28 03:52:06 +0200 |
commit | cbe5b8a13e361d8f630e5b4a4aa517235abed884 (patch) | |
tree | a6515814e28d55180a62e562296ea7838f0b14a2 /src | |
parent | Merge pull request #8541 from FearlessTobi/multiplayer-part1 (diff) | |
download | yuzu-cbe5b8a13e361d8f630e5b4a4aa517235abed884.tar yuzu-cbe5b8a13e361d8f630e5b4a4aa517235abed884.tar.gz yuzu-cbe5b8a13e361d8f630e5b4a4aa517235abed884.tar.bz2 yuzu-cbe5b8a13e361d8f630e5b4a4aa517235abed884.tar.lz yuzu-cbe5b8a13e361d8f630e5b4a4aa517235abed884.tar.xz yuzu-cbe5b8a13e361d8f630e5b4a4aa517235abed884.tar.zst yuzu-cbe5b8a13e361d8f630e5b4a4aa517235abed884.zip |
Diffstat (limited to 'src')
-rw-r--r-- | src/video_core/renderer_vulkan/vk_blit_screen.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/video_core/renderer_vulkan/vk_blit_screen.cpp b/src/video_core/renderer_vulkan/vk_blit_screen.cpp index 4a1d96322..27e6ebf94 100644 --- a/src/video_core/renderer_vulkan/vk_blit_screen.cpp +++ b/src/video_core/renderer_vulkan/vk_blit_screen.cpp @@ -87,12 +87,8 @@ u32 GetBytesPerPixel(const Tegra::FramebufferConfig& framebuffer) { } std::size_t GetSizeInBytes(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)}; - return size_bytes; + return static_cast<std::size_t>(framebuffer.stride) * + static_cast<std::size_t>(framebuffer.height) * GetBytesPerPixel(framebuffer); } VkFormat GetFormat(const Tegra::FramebufferConfig& framebuffer) { @@ -173,10 +169,12 @@ 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{GetSizeInBytes(framebuffer)}; - + const u64 linear_size{GetSizeInBytes(framebuffer)}; + const u64 tiled_size{Tegra::Texture::CalculateSize(true, bytes_per_pixel, + framebuffer.stride, framebuffer.height, + 1, block_height_log2, 0)}; Tegra::Texture::UnswizzleTexture( - mapped_span.subspan(image_offset, size_bytes), std::span(host_ptr, size_bytes), + mapped_span.subspan(image_offset, linear_size), std::span(host_ptr, tiled_size), bytes_per_pixel, framebuffer.width, framebuffer.height, 1, block_height_log2, 0); const VkBufferImageCopy copy{ |