From c439b3074d27073008166f4d49c6b8c8c881e39d Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Thu, 5 Feb 2015 14:15:42 +0000 Subject: video_core: Implement the remaining framebuffer formats in the OpenGL renderer. --- src/core/hw/gpu.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/core/hw') diff --git a/src/core/hw/gpu.h b/src/core/hw/gpu.h index 7c3a17ee..9fd694f6 100644 --- a/src/core/hw/gpu.h +++ b/src/core/hw/gpu.h @@ -53,6 +53,7 @@ struct Regs { "Structure size and register block length don't match") #endif + // All of those formats are described in reverse byte order, since the 3DS is little-endian. enum class PixelFormat : u32 { RGBA8 = 0, RGB8 = 1, @@ -61,6 +62,24 @@ struct Regs { RGBA4 = 4, }; + /** + * Returns the number of bytes per pixel. + */ + static int BytesPerPixel(PixelFormat format) { + switch (format) { + case PixelFormat::RGBA8: + return 4; + case PixelFormat::RGB8: + return 3; + case PixelFormat::RGB565: + case PixelFormat::RGB5A1: + case PixelFormat::RGBA4: + return 2; + default: + UNIMPLEMENTED(); + } + } + INSERT_PADDING_WORDS(0x4); struct { -- cgit v1.2.3