|
|
@ -87,12 +87,8 @@ u32 GetBytesPerPixel(const Tegra::FramebufferConfig& framebuffer) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
std::size_t GetSizeInBytes(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) { |
|
|
VkFormat GetFormat(const Tegra::FramebufferConfig& framebuffer) { |
|
|
@ -173,10 +169,12 @@ VkSemaphore BlitScreen::Draw(const Tegra::FramebufferConfig& framebuffer, |
|
|
// TODO(Rodrigo): Read this from HLE
|
|
|
// TODO(Rodrigo): Read this from HLE
|
|
|
constexpr u32 block_height_log2 = 4; |
|
|
constexpr u32 block_height_log2 = 4; |
|
|
const u32 bytes_per_pixel = GetBytesPerPixel(framebuffer); |
|
|
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( |
|
|
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); |
|
|
bytes_per_pixel, framebuffer.width, framebuffer.height, 1, block_height_log2, 0); |
|
|
|
|
|
|
|
|
const VkBufferImageCopy copy{ |
|
|
const VkBufferImageCopy copy{ |
|
|
|