video_core/morton: Use enum to describe MortonCopyPixels128 mode

This commit is contained in:
ReinUsesLisp 2019-03-13 16:32:33 -03:00
parent 6ed6129b4f
commit ffe2e50458
3 changed files with 10 additions and 7 deletions

View file

@ -287,8 +287,9 @@ void MortonSwizzle(MortonSwizzleMode mode, Surface::PixelFormat format, u32 stri
tile_width_spacing, buffer, addr); tile_width_spacing, buffer, addr);
} }
void MortonCopyPixels128(u32 width, u32 height, u32 bytes_per_pixel, u32 linear_bytes_per_pixel, void MortonCopyPixels128(MortonSwizzleMode mode, u32 width, u32 height, u32 bytes_per_pixel,
u8* morton_data, u8* linear_data, bool morton_to_linear) { u32 linear_bytes_per_pixel, u8* morton_data, u8* linear_data) {
const bool morton_to_linear = mode == MortonSwizzleMode::MortonToLinear;
u8* data_ptrs[2]; u8* data_ptrs[2];
for (u32 y = 0; y < height; ++y) { for (u32 y = 0; y < height; ++y) {
for (u32 x = 0; x < width; ++x) { for (u32 x = 0; x < width; ++x) {

View file

@ -15,7 +15,7 @@ void MortonSwizzle(MortonSwizzleMode mode, VideoCore::Surface::PixelFormat forma
u32 block_height, u32 height, u32 block_depth, u32 depth, u32 tile_width_spacing, u32 block_height, u32 height, u32 block_depth, u32 depth, u32 tile_width_spacing,
u8* buffer, VAddr addr); u8* buffer, VAddr addr);
void MortonCopyPixels128(u32 width, u32 height, u32 bytes_per_pixel, u32 linear_bytes_per_pixel, void MortonCopyPixels128(MortonSwizzleMode mode, u32 width, u32 height, u32 bytes_per_pixel,
u8* morton_data, u8* linear_data, bool morton_to_linear); u32 linear_bytes_per_pixel, u8* morton_data, u8* linear_data);
} // namespace VideoCore } // namespace VideoCore

View file

@ -167,9 +167,11 @@ void RendererOpenGL::LoadFBToScreenInfo(const Tegra::FramebufferConfig& framebuf
Memory::RasterizerFlushVirtualRegion(framebuffer_addr, size_in_bytes, Memory::RasterizerFlushVirtualRegion(framebuffer_addr, size_in_bytes,
Memory::FlushMode::Flush); Memory::FlushMode::Flush);
VideoCore::MortonCopyPixels128(framebuffer.width, framebuffer.height, bytes_per_pixel, 4, constexpr u32 linear_bpp = 4;
Memory::GetPointer(framebuffer_addr), VideoCore::MortonCopyPixels128(VideoCore::MortonSwizzleMode::MortonToLinear,
gl_framebuffer_data.data(), true); framebuffer.width, framebuffer.height, bytes_per_pixel,
linear_bpp, Memory::GetPointer(framebuffer_addr),
gl_framebuffer_data.data());
glPixelStorei(GL_UNPACK_ROW_LENGTH, static_cast<GLint>(framebuffer.stride)); glPixelStorei(GL_UNPACK_ROW_LENGTH, static_cast<GLint>(framebuffer.stride));