summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/common/color.h18
-rw-r--r--src/video_core/debug_utils/debug_utils.cpp6
-rw-r--r--src/video_core/pica.h3
3 files changed, 26 insertions, 1 deletions
diff --git a/src/common/color.h b/src/common/color.h
index 9dafdca0c..eb199e308 100644
--- a/src/common/color.h
+++ b/src/common/color.h
@@ -69,6 +69,15 @@ inline const Math::Vec4<u8> DecodeRGB8(const u8* bytes) {
69} 69}
70 70
71/** 71/**
72 * Decode a color stored in RG8 (aka HILO8) format
73 * @param bytes Pointer to encoded source color
74 * @return Result color decoded as Math::Vec4<u8>
75 */
76inline const Math::Vec4<u8> DecodeRG8(const u8* bytes) {
77 return { bytes[1], bytes[0], 0, 255 };
78}
79
80/**
72 * Decode a color stored in RGB565 format 81 * Decode a color stored in RGB565 format
73 * @param bytes Pointer to encoded source color 82 * @param bytes Pointer to encoded source color
74 * @return Result color decoded as Math::Vec4<u8> 83 * @return Result color decoded as Math::Vec4<u8>
@@ -152,6 +161,15 @@ inline void EncodeRGB8(const Math::Vec4<u8>& color, u8* bytes) {
152} 161}
153 162
154/** 163/**
164 * Encode a color as RG8 (aka HILO8) format
165 * @param color Source color to encode
166 * @param bytes Destination pointer to store encoded color
167 */
168inline void EncodeRG8(const Math::Vec4<u8>& color, u8* bytes) {
169 bytes[1] = color.r();
170 bytes[0] = color.g();
171}
172/**
155 * Encode a color as RGB565 format 173 * Encode a color as RGB565 format
156 * @param color Source color to encode 174 * @param color Source color to encode
157 * @param bytes Destination pointer to store encoded color 175 * @param bytes Destination pointer to store encoded color
diff --git a/src/video_core/debug_utils/debug_utils.cpp b/src/video_core/debug_utils/debug_utils.cpp
index 572b4fd62..6d6b65286 100644
--- a/src/video_core/debug_utils/debug_utils.cpp
+++ b/src/video_core/debug_utils/debug_utils.cpp
@@ -359,6 +359,12 @@ const Math::Vec4<u8> LookupTexture(const u8* source, int x, int y, const Texture
359 } 359 }
360 } 360 }
361 361
362 case Regs::TextureFormat::RG8:
363 {
364 auto res = Color::DecodeRG8(source + VideoCore::GetMortonOffset(x, y, 2));
365 return { res.r(), res.g(), 0, 255 };
366 }
367
362 case Regs::TextureFormat::I8: 368 case Regs::TextureFormat::I8:
363 { 369 {
364 const u8* source_ptr = source + VideoCore::GetMortonOffset(x, y, 1); 370 const u8* source_ptr = source + VideoCore::GetMortonOffset(x, y, 1);
diff --git a/src/video_core/pica.h b/src/video_core/pica.h
index 6ce90f95a..a5ec5ee9f 100644
--- a/src/video_core/pica.h
+++ b/src/video_core/pica.h
@@ -163,7 +163,7 @@ struct Regs {
163 RGB565 = 3, 163 RGB565 = 3,
164 RGBA4 = 4, 164 RGBA4 = 4,
165 IA8 = 5, 165 IA8 = 5,
166 166 RG8 = 6, ///< @note Also called HILO8 in 3DBrew.
167 I8 = 7, 167 I8 = 7,
168 A8 = 8, 168 A8 = 8,
169 IA4 = 9, 169 IA4 = 9,
@@ -204,6 +204,7 @@ struct Regs {
204 case TextureFormat::RGB565: 204 case TextureFormat::RGB565:
205 case TextureFormat::RGBA4: 205 case TextureFormat::RGBA4:
206 case TextureFormat::IA8: 206 case TextureFormat::IA8:
207 case TextureFormat::RG8:
207 return 4; 208 return 4;
208 209
209 case TextureFormat::I4: 210 case TextureFormat::I4: