aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.OpenGL
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Graphics.OpenGL')
-rw-r--r--src/Ryujinx.Graphics.OpenGL/FormatTable.cs13
-rw-r--r--src/Ryujinx.Graphics.OpenGL/Framebuffer.cs16
-rw-r--r--src/Ryujinx.Graphics.OpenGL/Image/TextureCopy.cs11
3 files changed, 18 insertions, 22 deletions
diff --git a/src/Ryujinx.Graphics.OpenGL/FormatTable.cs b/src/Ryujinx.Graphics.OpenGL/FormatTable.cs
index c7e3e4e2..4cf4dc76 100644
--- a/src/Ryujinx.Graphics.OpenGL/FormatTable.cs
+++ b/src/Ryujinx.Graphics.OpenGL/FormatTable.cs
@@ -68,6 +68,7 @@ namespace Ryujinx.Graphics.OpenGL
Add(Format.S8Uint, new FormatInfo(1, false, false, All.StencilIndex8, PixelFormat.StencilIndex, PixelType.UnsignedByte));
Add(Format.D16Unorm, new FormatInfo(1, false, false, All.DepthComponent16, PixelFormat.DepthComponent, PixelType.UnsignedShort));
Add(Format.S8UintD24Unorm, new FormatInfo(1, false, false, All.Depth24Stencil8, PixelFormat.DepthStencil, PixelType.UnsignedInt248));
+ Add(Format.X8UintD24Unorm, new FormatInfo(1, false, false, All.DepthComponent24, PixelFormat.DepthComponent, PixelType.UnsignedInt));
Add(Format.D32Float, new FormatInfo(1, false, false, All.DepthComponent32f, PixelFormat.DepthComponent, PixelType.Float));
Add(Format.D24UnormS8Uint, new FormatInfo(1, false, false, All.Depth24Stencil8, PixelFormat.DepthStencil, PixelType.UnsignedInt248));
Add(Format.D32FloatS8Uint, new FormatInfo(1, false, false, All.Depth32fStencil8, PixelFormat.DepthStencil, PixelType.Float32UnsignedInt248Rev));
@@ -224,5 +225,17 @@ namespace Ryujinx.Graphics.OpenGL
{
return _tableImage[(int)format];
}
+
+ public static bool IsPackedDepthStencil(Format format)
+ {
+ return format == Format.D24UnormS8Uint ||
+ format == Format.D32FloatS8Uint ||
+ format == Format.S8UintD24Unorm;
+ }
+
+ public static bool IsDepthOnly(Format format)
+ {
+ return format == Format.D16Unorm || format == Format.D32Float || format == Format.X8UintD24Unorm;
+ }
}
}
diff --git a/src/Ryujinx.Graphics.OpenGL/Framebuffer.cs b/src/Ryujinx.Graphics.OpenGL/Framebuffer.cs
index 3b79c5d6..394b8bc7 100644
--- a/src/Ryujinx.Graphics.OpenGL/Framebuffer.cs
+++ b/src/Ryujinx.Graphics.OpenGL/Framebuffer.cs
@@ -119,11 +119,11 @@ namespace Ryujinx.Graphics.OpenGL
private static FramebufferAttachment GetAttachment(Format format)
{
- if (IsPackedDepthStencilFormat(format))
+ if (FormatTable.IsPackedDepthStencil(format))
{
return FramebufferAttachment.DepthStencilAttachment;
}
- else if (IsDepthOnlyFormat(format))
+ else if (FormatTable.IsDepthOnly(format))
{
return FramebufferAttachment.DepthAttachment;
}
@@ -133,18 +133,6 @@ namespace Ryujinx.Graphics.OpenGL
}
}
- private static bool IsPackedDepthStencilFormat(Format format)
- {
- return format == Format.D24UnormS8Uint ||
- format == Format.D32FloatS8Uint ||
- format == Format.S8UintD24Unorm;
- }
-
- private static bool IsDepthOnlyFormat(Format format)
- {
- return format == Format.D16Unorm || format == Format.D32Float;
- }
-
public int GetColorLayerCount(int index)
{
return _colors[index]?.Info.GetDepthOrLayers() ?? 0;
diff --git a/src/Ryujinx.Graphics.OpenGL/Image/TextureCopy.cs b/src/Ryujinx.Graphics.OpenGL/Image/TextureCopy.cs
index 128f481f..89bd5e4f 100644
--- a/src/Ryujinx.Graphics.OpenGL/Image/TextureCopy.cs
+++ b/src/Ryujinx.Graphics.OpenGL/Image/TextureCopy.cs
@@ -294,7 +294,7 @@ namespace Ryujinx.Graphics.OpenGL.Image
{
return FramebufferAttachment.DepthStencilAttachment;
}
- else if (IsDepthOnly(format))
+ else if (FormatTable.IsDepthOnly(format))
{
return FramebufferAttachment.DepthAttachment;
}
@@ -324,11 +324,11 @@ namespace Ryujinx.Graphics.OpenGL.Image
private static ClearBufferMask GetMask(Format format)
{
- if (format == Format.D24UnormS8Uint || format == Format.D32FloatS8Uint || format == Format.S8UintD24Unorm)
+ if (FormatTable.IsPackedDepthStencil(format))
{
return ClearBufferMask.DepthBufferBit | ClearBufferMask.StencilBufferBit;
}
- else if (IsDepthOnly(format))
+ else if (FormatTable.IsDepthOnly(format))
{
return ClearBufferMask.DepthBufferBit;
}
@@ -342,11 +342,6 @@ namespace Ryujinx.Graphics.OpenGL.Image
}
}
- private static bool IsDepthOnly(Format format)
- {
- return format == Format.D16Unorm || format == Format.D32Float;
- }
-
public TextureView BgraSwap(TextureView from)
{
TextureView to = (TextureView)_renderer.CreateTexture(from.Info);