mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	Merge pull request #1034 from yuriks/rg8-textures
videocore: Added RG8 texture support
This commit is contained in:
		
						commit
						1f18c9f8dd
					
				@ -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…
	
		Reference in New Issue
	
	Block a user