mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	Merge pull request #1034 from yuriks/rg8-textures
videocore: Added RG8 texture support
This commit is contained in:
		
						commit
						1f18c9f8dd
					
				
					 4 changed files with 27 additions and 2 deletions
				
			
		|  | @ -73,7 +73,7 @@ TextureInfoDockWidget::TextureInfoDockWidget(const Pica::DebugUtils::TextureInfo | ||||||
|     format_choice->addItem(tr("RGB565")); |     format_choice->addItem(tr("RGB565")); | ||||||
|     format_choice->addItem(tr("RGBA4")); |     format_choice->addItem(tr("RGBA4")); | ||||||
|     format_choice->addItem(tr("IA8")); |     format_choice->addItem(tr("IA8")); | ||||||
|     format_choice->addItem(tr("UNK6")); |     format_choice->addItem(tr("RG8")); | ||||||
|     format_choice->addItem(tr("I8")); |     format_choice->addItem(tr("I8")); | ||||||
|     format_choice->addItem(tr("A8")); |     format_choice->addItem(tr("A8")); | ||||||
|     format_choice->addItem(tr("IA4")); |     format_choice->addItem(tr("IA4")); | ||||||
|  |  | ||||||
|  | @ -68,6 +68,15 @@ inline const Math::Vec4<u8> DecodeRGB8(const u8* bytes) { | ||||||
|     return { bytes[2], bytes[1], bytes[0], 255 }; |     return { bytes[2], bytes[1], bytes[0], 255 }; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /**
 | ||||||
|  |  * Decode a color stored in RG8 (aka HILO8) format | ||||||
|  |  * @param bytes Pointer to encoded source color | ||||||
|  |  * @return Result color decoded as Math::Vec4<u8> | ||||||
|  |  */ | ||||||
|  | inline const Math::Vec4<u8> DecodeRG8(const u8* bytes) { | ||||||
|  |     return { bytes[1], bytes[0], 0, 255 }; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /**
 | /**
 | ||||||
|  * Decode a color stored in RGB565 format |  * Decode a color stored in RGB565 format | ||||||
|  * @param bytes Pointer to encoded source color |  * @param bytes Pointer to encoded source color | ||||||
|  | @ -151,6 +160,15 @@ inline void EncodeRGB8(const Math::Vec4<u8>& color, u8* bytes) { | ||||||
|     bytes[0] = color.b(); |     bytes[0] = color.b(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /**
 | ||||||
|  |  * Encode a color as RG8 (aka HILO8) format | ||||||
|  |  * @param color Source color to encode | ||||||
|  |  * @param bytes Destination pointer to store encoded color | ||||||
|  |  */ | ||||||
|  | inline void EncodeRG8(const Math::Vec4<u8>& color, u8* bytes) { | ||||||
|  |     bytes[1] = color.r(); | ||||||
|  |     bytes[0] = color.g(); | ||||||
|  | } | ||||||
| /**
 | /**
 | ||||||
|  * Encode a color as RGB565 format |  * Encode a color as RGB565 format | ||||||
|  * @param color Source color to encode |  * @param color Source color to encode | ||||||
|  |  | ||||||
|  | @ -410,6 +410,12 @@ const Math::Vec4<u8> LookupTexture(const u8* source, int x, int y, const Texture | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     case Regs::TextureFormat::RG8: | ||||||
|  |     { | ||||||
|  |         auto res = Color::DecodeRG8(source + VideoCore::GetMortonOffset(x, y, 2)); | ||||||
|  |         return { res.r(), res.g(), 0, 255 }; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     case Regs::TextureFormat::I8: |     case Regs::TextureFormat::I8: | ||||||
|     { |     { | ||||||
|         const u8* source_ptr = source + VideoCore::GetMortonOffset(x, y, 1); |         const u8* source_ptr = source + VideoCore::GetMortonOffset(x, y, 1); | ||||||
|  |  | ||||||
|  | @ -174,7 +174,7 @@ struct Regs { | ||||||
|         RGB565       =  3, |         RGB565       =  3, | ||||||
|         RGBA4        =  4, |         RGBA4        =  4, | ||||||
|         IA8          =  5, |         IA8          =  5, | ||||||
| 
 |         RG8          =  6,  ///< @note Also called HILO8 in 3DBrew.
 | ||||||
|         I8           =  7, |         I8           =  7, | ||||||
|         A8           =  8, |         A8           =  8, | ||||||
|         IA4          =  9, |         IA4          =  9, | ||||||
|  | @ -215,6 +215,7 @@ struct Regs { | ||||||
|         case TextureFormat::RGB565: |         case TextureFormat::RGB565: | ||||||
|         case TextureFormat::RGBA4: |         case TextureFormat::RGBA4: | ||||||
|         case TextureFormat::IA8: |         case TextureFormat::IA8: | ||||||
|  |         case TextureFormat::RG8: | ||||||
|             return 4; |             return 4; | ||||||
| 
 | 
 | ||||||
|         case TextureFormat::I4: |         case TextureFormat::I4: | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue