forked from Mirror/Ryujinx
Add G8R8Unorm, G8R8Snorm, B8G8R8A8, D24_S8 Uint, R8Uint, R32Uint (#426)
* Implement B5G6R5Unorm & BGR5A1Unorm * Fix R8G8 Unorm to G8R8 Unorm * Added back R8G8 Unorm * Fix G8R8Unorm, add R8G8B8A8 * Add D24_S8 Uint * Add R8Uint & R32Uint * Another fixed * Reverting back * R8G8B8A8 change to B8G8R8A8 * Add G8R8 Snorm
This commit is contained in:
parent
b0cfe2fb1f
commit
76330b10b4
2 changed files with 10 additions and 3 deletions
|
@ -141,6 +141,7 @@ namespace Ryujinx.Graphics.Gal.OpenGL
|
||||||
case GalImageFormat.A8B8G8R8 | GalImageFormat.Sint: return (PixelInternalFormat.Rgba8i, PixelFormat.RgbaInteger, PixelType.Byte);
|
case GalImageFormat.A8B8G8R8 | GalImageFormat.Sint: return (PixelInternalFormat.Rgba8i, PixelFormat.RgbaInteger, PixelType.Byte);
|
||||||
case GalImageFormat.A8B8G8R8 | GalImageFormat.Uint: return (PixelInternalFormat.Rgba8ui, PixelFormat.RgbaInteger, PixelType.UnsignedByte);
|
case GalImageFormat.A8B8G8R8 | GalImageFormat.Uint: return (PixelInternalFormat.Rgba8ui, PixelFormat.RgbaInteger, PixelType.UnsignedByte);
|
||||||
case GalImageFormat.A8B8G8R8_SRGB: return (PixelInternalFormat.Srgb8Alpha8, PixelFormat.Rgba, PixelType.UnsignedByte);
|
case GalImageFormat.A8B8G8R8_SRGB: return (PixelInternalFormat.Srgb8Alpha8, PixelFormat.Rgba, PixelType.UnsignedByte);
|
||||||
|
case GalImageFormat.B8G8R8A8 | GalImageFormat.Unorm: return (PixelInternalFormat.Rgba8, PixelFormat.Bgra, PixelType.UnsignedByte);
|
||||||
case GalImageFormat.A4B4G4R4 | GalImageFormat.Unorm: return (PixelInternalFormat.Rgba4, PixelFormat.Rgba, PixelType.UnsignedShort4444Reversed);
|
case GalImageFormat.A4B4G4R4 | GalImageFormat.Unorm: return (PixelInternalFormat.Rgba4, PixelFormat.Rgba, PixelType.UnsignedShort4444Reversed);
|
||||||
case GalImageFormat.A2B10G10R10 | GalImageFormat.Uint: return (PixelInternalFormat.Rgb10A2ui, PixelFormat.RgbaInteger, PixelType.UnsignedInt2101010Reversed);
|
case GalImageFormat.A2B10G10R10 | GalImageFormat.Uint: return (PixelInternalFormat.Rgb10A2ui, PixelFormat.RgbaInteger, PixelType.UnsignedInt2101010Reversed);
|
||||||
case GalImageFormat.A2B10G10R10 | GalImageFormat.Unorm: return (PixelInternalFormat.Rgb10A2, PixelFormat.Rgba, PixelType.UnsignedInt2101010Reversed);
|
case GalImageFormat.A2B10G10R10 | GalImageFormat.Unorm: return (PixelInternalFormat.Rgb10A2, PixelFormat.Rgba, PixelType.UnsignedInt2101010Reversed);
|
||||||
|
@ -157,6 +158,8 @@ namespace Ryujinx.Graphics.Gal.OpenGL
|
||||||
case GalImageFormat.R8G8 | GalImageFormat.Snorm: return (PixelInternalFormat.Rg8Snorm, PixelFormat.Rg, PixelType.Byte);
|
case GalImageFormat.R8G8 | GalImageFormat.Snorm: return (PixelInternalFormat.Rg8Snorm, PixelFormat.Rg, PixelType.Byte);
|
||||||
case GalImageFormat.R8G8 | GalImageFormat.Uint: return (PixelInternalFormat.Rg8ui, PixelFormat.RgInteger, PixelType.UnsignedByte);
|
case GalImageFormat.R8G8 | GalImageFormat.Uint: return (PixelInternalFormat.Rg8ui, PixelFormat.RgInteger, PixelType.UnsignedByte);
|
||||||
case GalImageFormat.R8G8 | GalImageFormat.Unorm: return (PixelInternalFormat.Rg8, PixelFormat.Rg, PixelType.UnsignedByte);
|
case GalImageFormat.R8G8 | GalImageFormat.Unorm: return (PixelInternalFormat.Rg8, PixelFormat.Rg, PixelType.UnsignedByte);
|
||||||
|
case GalImageFormat.G8R8 | GalImageFormat.Snorm: return (PixelInternalFormat.Rg8Snorm, PixelFormat.Rg, PixelType.Byte);
|
||||||
|
case GalImageFormat.G8R8 | GalImageFormat.Unorm: return (PixelInternalFormat.Rg8, PixelFormat.Rg, PixelType.UnsignedByte);
|
||||||
case GalImageFormat.R16 | GalImageFormat.Sfloat: return (PixelInternalFormat.R16f, PixelFormat.Red, PixelType.HalfFloat);
|
case GalImageFormat.R16 | GalImageFormat.Sfloat: return (PixelInternalFormat.R16f, PixelFormat.Red, PixelType.HalfFloat);
|
||||||
case GalImageFormat.R16 | GalImageFormat.Sint: return (PixelInternalFormat.R16i, PixelFormat.RedInteger, PixelType.Short);
|
case GalImageFormat.R16 | GalImageFormat.Sint: return (PixelInternalFormat.R16i, PixelFormat.RedInteger, PixelType.Short);
|
||||||
case GalImageFormat.R16 | GalImageFormat.Snorm: return (PixelInternalFormat.R16Snorm, PixelFormat.Red, PixelType.Byte);
|
case GalImageFormat.R16 | GalImageFormat.Snorm: return (PixelInternalFormat.R16Snorm, PixelFormat.Red, PixelType.Byte);
|
||||||
|
@ -168,6 +171,7 @@ namespace Ryujinx.Graphics.Gal.OpenGL
|
||||||
case GalImageFormat.R8 | GalImageFormat.Unorm: return (PixelInternalFormat.R8, PixelFormat.Red, PixelType.UnsignedByte);
|
case GalImageFormat.R8 | GalImageFormat.Unorm: return (PixelInternalFormat.R8, PixelFormat.Red, PixelType.UnsignedByte);
|
||||||
case GalImageFormat.B10G11R11 | GalImageFormat.Sfloat: return (PixelInternalFormat.R11fG11fB10f, PixelFormat.Rgb, PixelType.UnsignedInt10F11F11FRev);
|
case GalImageFormat.B10G11R11 | GalImageFormat.Sfloat: return (PixelInternalFormat.R11fG11fB10f, PixelFormat.Rgb, PixelType.UnsignedInt10F11F11FRev);
|
||||||
|
|
||||||
|
case GalImageFormat.D24_S8 | GalImageFormat.Uint: return (PixelInternalFormat.Depth24Stencil8, PixelFormat.DepthStencil, PixelType.UnsignedInt248);
|
||||||
case GalImageFormat.D24_S8 | GalImageFormat.Unorm: return (PixelInternalFormat.Depth24Stencil8, PixelFormat.DepthStencil, PixelType.UnsignedInt248);
|
case GalImageFormat.D24_S8 | GalImageFormat.Unorm: return (PixelInternalFormat.Depth24Stencil8, PixelFormat.DepthStencil, PixelType.UnsignedInt248);
|
||||||
case GalImageFormat.D32 | GalImageFormat.Sfloat: return (PixelInternalFormat.DepthComponent32f, PixelFormat.DepthComponent, PixelType.Float);
|
case GalImageFormat.D32 | GalImageFormat.Sfloat: return (PixelInternalFormat.DepthComponent32f, PixelFormat.DepthComponent, PixelType.Float);
|
||||||
case GalImageFormat.D16 | GalImageFormat.Unorm: return (PixelInternalFormat.DepthComponent16, PixelFormat.DepthComponent, PixelType.UnsignedShort);
|
case GalImageFormat.D16 | GalImageFormat.Unorm: return (PixelInternalFormat.DepthComponent16, PixelFormat.DepthComponent, PixelType.UnsignedShort);
|
||||||
|
|
|
@ -58,7 +58,7 @@ namespace Ryujinx.Graphics.Texture
|
||||||
{ GalTextureFormat.A1B5G5R5, GalImageFormat.A1R5G5B5 | Unorm },
|
{ GalTextureFormat.A1B5G5R5, GalImageFormat.A1R5G5B5 | Unorm },
|
||||||
{ GalTextureFormat.B5G6R5, GalImageFormat.B5G6R5 | Unorm },
|
{ GalTextureFormat.B5G6R5, GalImageFormat.B5G6R5 | Unorm },
|
||||||
{ GalTextureFormat.BF10GF11RF11, GalImageFormat.B10G11R11 | Sfloat },
|
{ GalTextureFormat.BF10GF11RF11, GalImageFormat.B10G11R11 | Sfloat },
|
||||||
{ GalTextureFormat.Z24S8, GalImageFormat.D24_S8 | Unorm },
|
{ GalTextureFormat.Z24S8, GalImageFormat.D24_S8 | Unorm | Uint },
|
||||||
{ 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 },
|
{ GalTextureFormat.Z16, GalImageFormat.D16 | Unorm },
|
||||||
|
@ -94,6 +94,7 @@ namespace Ryujinx.Graphics.Texture
|
||||||
{ GalImageFormat.R32G32B32A32, new ImageDescriptor(16, 1, 1, TargetBuffer.Color) },
|
{ GalImageFormat.R32G32B32A32, new ImageDescriptor(16, 1, 1, TargetBuffer.Color) },
|
||||||
{ GalImageFormat.R16G16B16A16, new ImageDescriptor(8, 1, 1, TargetBuffer.Color) },
|
{ GalImageFormat.R16G16B16A16, new ImageDescriptor(8, 1, 1, TargetBuffer.Color) },
|
||||||
{ GalImageFormat.R32G32, new ImageDescriptor(8, 1, 1, TargetBuffer.Color) },
|
{ GalImageFormat.R32G32, new ImageDescriptor(8, 1, 1, TargetBuffer.Color) },
|
||||||
|
{ GalImageFormat.B8G8R8A8, new ImageDescriptor(4, 1, 1, TargetBuffer.Color) },
|
||||||
{ GalImageFormat.A8B8G8R8, new ImageDescriptor(4, 1, 1, TargetBuffer.Color) },
|
{ GalImageFormat.A8B8G8R8, new ImageDescriptor(4, 1, 1, TargetBuffer.Color) },
|
||||||
{ GalImageFormat.A2B10G10R10, new ImageDescriptor(4, 1, 1, TargetBuffer.Color) },
|
{ GalImageFormat.A2B10G10R10, new ImageDescriptor(4, 1, 1, TargetBuffer.Color) },
|
||||||
{ GalImageFormat.R32, new ImageDescriptor(4, 1, 1, TargetBuffer.Color) },
|
{ GalImageFormat.R32, new ImageDescriptor(4, 1, 1, TargetBuffer.Color) },
|
||||||
|
@ -178,7 +179,7 @@ namespace Ryujinx.Graphics.Texture
|
||||||
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;
|
||||||
case GalSurfaceFormat.RG32Uint: return GalImageFormat.R32G32 | Uint;
|
case GalSurfaceFormat.RG32Uint: return GalImageFormat.R32G32 | Uint;
|
||||||
case GalSurfaceFormat.BGRA8Unorm: return GalImageFormat.R8G8B8A8 | Unorm; //Is this right?
|
case GalSurfaceFormat.BGRA8Unorm: return GalImageFormat.B8G8R8A8 | Unorm;
|
||||||
case GalSurfaceFormat.BGRA8Srgb: return GalImageFormat.A8B8G8R8_SRGB; //This one might be wrong
|
case GalSurfaceFormat.BGRA8Srgb: return GalImageFormat.A8B8G8R8_SRGB; //This one might be wrong
|
||||||
case GalSurfaceFormat.RGB10A2Unorm: return GalImageFormat.A2B10G10R10 | Unorm;
|
case GalSurfaceFormat.RGB10A2Unorm: return GalImageFormat.A2B10G10R10 | Unorm;
|
||||||
case GalSurfaceFormat.RGBA8Unorm: return GalImageFormat.A8B8G8R8 | Unorm;
|
case GalSurfaceFormat.RGBA8Unorm: return GalImageFormat.A8B8G8R8 | Unorm;
|
||||||
|
@ -189,12 +190,14 @@ namespace Ryujinx.Graphics.Texture
|
||||||
case GalSurfaceFormat.RG16Float: return GalImageFormat.R16G16 | Sfloat;
|
case GalSurfaceFormat.RG16Float: return GalImageFormat.R16G16 | Sfloat;
|
||||||
case GalSurfaceFormat.R11G11B10Float: return GalImageFormat.B10G11R11 | Sfloat;
|
case GalSurfaceFormat.R11G11B10Float: return GalImageFormat.B10G11R11 | Sfloat;
|
||||||
case GalSurfaceFormat.R32Float: return GalImageFormat.R32 | Sfloat;
|
case GalSurfaceFormat.R32Float: return GalImageFormat.R32 | Sfloat;
|
||||||
|
case GalSurfaceFormat.R32Uint: return GalImageFormat.R32 | Uint;
|
||||||
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.R8G8 | Snorm;
|
||||||
case GalSurfaceFormat.R16Float: return GalImageFormat.R16 | Sfloat;
|
case GalSurfaceFormat.R16Float: return GalImageFormat.R16 | Sfloat;
|
||||||
case GalSurfaceFormat.R16Unorm: return GalImageFormat.R16 | Unorm;
|
case GalSurfaceFormat.R16Unorm: return GalImageFormat.R16 | Unorm;
|
||||||
case GalSurfaceFormat.R16Uint: return GalImageFormat.R16 | Uint;
|
case GalSurfaceFormat.R16Uint: return GalImageFormat.R16 | Uint;
|
||||||
case GalSurfaceFormat.R8Unorm: return GalImageFormat.R8 | Unorm;
|
case GalSurfaceFormat.R8Unorm: return GalImageFormat.R8 | Unorm;
|
||||||
|
case GalSurfaceFormat.R8Uint: return GalImageFormat.R8 | Uint;
|
||||||
case GalSurfaceFormat.B5G6R5Unorm: return GalImageFormat.B5G6R5 | Unorm;
|
case GalSurfaceFormat.B5G6R5Unorm: return GalImageFormat.B5G6R5 | Unorm;
|
||||||
case GalSurfaceFormat.BGR5A1Unorm: return GalImageFormat.A1R5G5B5 | Unorm;
|
case GalSurfaceFormat.BGR5A1Unorm: return GalImageFormat.A1R5G5B5 | Unorm;
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue