mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-12-23 20:16:01 +00:00
Implement B5G6R5Unorm, BGR5A1Unorm, RGBA32Uint, R16Unorm and Z16 texture format. Fix BC6H_UF16 from Unorm to Sfloat (#417)
* Implement B5G6R5Unorm & BGR5A1Unorm * Implement RGBA32Uint * Implement R16Unorm & Z16 texture format * Fix BC6H_UF16 from Unorm to Sfloat
This commit is contained in:
parent
46a11460d4
commit
8a78a703f2
3 changed files with 38 additions and 32 deletions
|
@ -26,6 +26,7 @@ namespace Ryujinx.Graphics.Gal
|
||||||
Z24S8 = 0x29,
|
Z24S8 = 0x29,
|
||||||
ZF32 = 0x2f,
|
ZF32 = 0x2f,
|
||||||
ZF32_X24S8 = 0x30,
|
ZF32_X24S8 = 0x30,
|
||||||
|
Z16 = 0x3a,
|
||||||
Astc2D4x4 = 0x40,
|
Astc2D4x4 = 0x40,
|
||||||
Astc2D5x5 = 0x41,
|
Astc2D5x5 = 0x41,
|
||||||
Astc2D6x6 = 0x42,
|
Astc2D6x6 = 0x42,
|
||||||
|
|
|
@ -183,7 +183,7 @@ namespace Ryujinx.Graphics.Gal.OpenGL
|
||||||
{
|
{
|
||||||
switch (Format)
|
switch (Format)
|
||||||
{
|
{
|
||||||
case GalImageFormat.BC6H_UF16 | GalImageFormat.Unorm: return InternalFormat.CompressedRgbBptcUnsignedFloat;
|
case GalImageFormat.BC6H_UF16 | GalImageFormat.Sfloat: return InternalFormat.CompressedRgbBptcUnsignedFloat;
|
||||||
case GalImageFormat.BC6H_SF16 | GalImageFormat.Unorm: return InternalFormat.CompressedRgbBptcSignedFloat;
|
case GalImageFormat.BC6H_SF16 | GalImageFormat.Unorm: return InternalFormat.CompressedRgbBptcSignedFloat;
|
||||||
case GalImageFormat.BC7 | GalImageFormat.Unorm: return InternalFormat.CompressedRgbaBptcUnorm;
|
case GalImageFormat.BC7 | GalImageFormat.Unorm: return InternalFormat.CompressedRgbaBptcUnorm;
|
||||||
case GalImageFormat.BC1_RGBA | GalImageFormat.Unorm: return InternalFormat.CompressedRgbaS3tcDxt1Ext;
|
case GalImageFormat.BC1_RGBA | GalImageFormat.Unorm: return InternalFormat.CompressedRgbaS3tcDxt1Ext;
|
||||||
|
|
|
@ -56,10 +56,11 @@ namespace Ryujinx.Graphics.Texture
|
||||||
{ GalTextureFormat.Z24S8, GalImageFormat.D24_S8 | Unorm },
|
{ GalTextureFormat.Z24S8, GalImageFormat.D24_S8 | Unorm },
|
||||||
{ GalTextureFormat.ZF32, GalImageFormat.D32 | Sfloat },
|
{ GalTextureFormat.ZF32, GalImageFormat.D32 | Sfloat },
|
||||||
{ GalTextureFormat.ZF32_X24S8, GalImageFormat.D32_S8 | Unorm },
|
{ GalTextureFormat.ZF32_X24S8, GalImageFormat.D32_S8 | Unorm },
|
||||||
|
{ GalTextureFormat.Z16, GalImageFormat.D16 | Unorm },
|
||||||
|
|
||||||
//Compressed formats
|
//Compressed formats
|
||||||
{ GalTextureFormat.BC6H_SF16, GalImageFormat.BC6H_SF16 | Unorm },
|
{ GalTextureFormat.BC6H_SF16, GalImageFormat.BC6H_SF16 | Unorm },
|
||||||
{ GalTextureFormat.BC6H_UF16, GalImageFormat.BC6H_UF16 | Unorm },
|
{ GalTextureFormat.BC6H_UF16, GalImageFormat.BC6H_UF16 | Sfloat },
|
||||||
{ GalTextureFormat.BC7U, GalImageFormat.BC7 | Unorm },
|
{ GalTextureFormat.BC7U, GalImageFormat.BC7 | Unorm },
|
||||||
{ GalTextureFormat.BC1, GalImageFormat.BC1_RGBA | Unorm },
|
{ GalTextureFormat.BC1, GalImageFormat.BC1_RGBA | Unorm },
|
||||||
{ GalTextureFormat.BC2, GalImageFormat.BC2 | Unorm },
|
{ GalTextureFormat.BC2, GalImageFormat.BC2 | Unorm },
|
||||||
|
@ -167,6 +168,7 @@ namespace Ryujinx.Graphics.Texture
|
||||||
switch (Format)
|
switch (Format)
|
||||||
{
|
{
|
||||||
case GalSurfaceFormat.RGBA32Float: return GalImageFormat.R32G32B32A32 | Sfloat;
|
case GalSurfaceFormat.RGBA32Float: return GalImageFormat.R32G32B32A32 | Sfloat;
|
||||||
|
case GalSurfaceFormat.RGBA32Uint: return GalImageFormat.R32G32B32A32 | Uint;
|
||||||
case GalSurfaceFormat.RGBA16Float: return GalImageFormat.R16G16B16A16 | Sfloat;
|
case GalSurfaceFormat.RGBA16Float: return GalImageFormat.R16G16B16A16 | Sfloat;
|
||||||
case GalSurfaceFormat.RG32Float: return GalImageFormat.R32G32 | Sfloat;
|
case GalSurfaceFormat.RG32Float: return GalImageFormat.R32G32 | Sfloat;
|
||||||
case GalSurfaceFormat.RG32Sint: return GalImageFormat.R32G32 | Sint;
|
case GalSurfaceFormat.RG32Sint: return GalImageFormat.R32G32 | Sint;
|
||||||
|
@ -184,7 +186,10 @@ namespace Ryujinx.Graphics.Texture
|
||||||
case GalSurfaceFormat.RG8Unorm: return GalImageFormat.R8G8 | Unorm;
|
case GalSurfaceFormat.RG8Unorm: return GalImageFormat.R8G8 | Unorm;
|
||||||
case GalSurfaceFormat.RG8Snorm: return GalImageFormat.R8 | Snorm;
|
case GalSurfaceFormat.RG8Snorm: return GalImageFormat.R8 | Snorm;
|
||||||
case GalSurfaceFormat.R16Float: return GalImageFormat.R16 | Sfloat;
|
case GalSurfaceFormat.R16Float: return GalImageFormat.R16 | Sfloat;
|
||||||
|
case GalSurfaceFormat.R16Unorm: return GalImageFormat.R16 | Unorm;
|
||||||
case GalSurfaceFormat.R8Unorm: return GalImageFormat.R8 | Unorm;
|
case GalSurfaceFormat.R8Unorm: return GalImageFormat.R8 | Unorm;
|
||||||
|
case GalSurfaceFormat.B5G6R5Unorm: return GalImageFormat.B5G6R5 | Unorm;
|
||||||
|
case GalSurfaceFormat.BGR5A1Unorm: return GalImageFormat.A1R5G5B5 | Unorm;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new NotImplementedException(Format.ToString());
|
throw new NotImplementedException(Format.ToString());
|
||||||
|
|
Loading…
Reference in a new issue