forked from suyu/suyu
videocore: Added RG8 texture support
This commit is contained in:
parent
882040fde7
commit
5b65d95310
3 changed files with 26 additions and 1 deletions
|
@ -68,6 +68,15 @@ inline const Math::Vec4<u8> DecodeRGB8(const u8* bytes) {
|
|||
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
|
||||
* @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();
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* @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:
|
||||
{
|
||||
const u8* source_ptr = source + VideoCore::GetMortonOffset(x, y, 1);
|
||||
|
|
|
@ -163,7 +163,7 @@ struct Regs {
|
|||
RGB565 = 3,
|
||||
RGBA4 = 4,
|
||||
IA8 = 5,
|
||||
|
||||
RG8 = 6, ///< @note Also called HILO8 in 3DBrew.
|
||||
I8 = 7,
|
||||
A8 = 8,
|
||||
IA4 = 9,
|
||||
|
@ -204,6 +204,7 @@ struct Regs {
|
|||
case TextureFormat::RGB565:
|
||||
case TextureFormat::RGBA4:
|
||||
case TextureFormat::IA8:
|
||||
case TextureFormat::RG8:
|
||||
return 4;
|
||||
|
||||
case TextureFormat::I4:
|
||||
|
|
Loading…
Reference in a new issue