mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-10-31 06:46:40 +08:00 
			
		
		
		
	videocore: Added RG8 texture support
This commit is contained in:
		
							parent
							
								
									882040fde7
								
							
						
					
					
						commit
						5b65d95310
					
				| @ -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 | ||||||
|  | |||||||
| @ -359,6 +359,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); | ||||||
|  | |||||||
| @ -163,7 +163,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, | ||||||
| @ -204,6 +204,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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user