aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Gpu/Engine
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2024-09-17 15:52:30 -0300
committerGitHub <noreply@github.com>2024-09-17 15:52:30 -0300
commiteb8132b627d3c0285dd199f4e40c6f3800bdb22d (patch)
tree970a119909a0dd901bbd8cb5454b725a08e329b3 /src/Ryujinx.Graphics.Gpu/Engine
parentccf96bf5e673456ec80f72725e4c9afa4e4c5a85 (diff)
Change image format view handling to allow view incompatible formats (#7311)
* Allow creating texture aliases on texture pool * Delete old image format override code * New format incompatible alias * Missing bounds check * GetForBinding now takes FormatInfo * Make FormatInfo struct more compact
Diffstat (limited to 'src/Ryujinx.Graphics.Gpu/Engine')
-rw-r--r--src/Ryujinx.Graphics.Gpu/Engine/ShaderTexture.cs83
1 files changed, 42 insertions, 41 deletions
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/ShaderTexture.cs b/src/Ryujinx.Graphics.Gpu/Engine/ShaderTexture.cs
index 7bff1c4b..bdb34180 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/ShaderTexture.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/ShaderTexture.cs
@@ -1,5 +1,6 @@
using Ryujinx.Common.Logging;
using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.Gpu.Image;
using Ryujinx.Graphics.Shader;
namespace Ryujinx.Graphics.Gpu.Engine
@@ -61,51 +62,51 @@ namespace Ryujinx.Graphics.Gpu.Engine
/// </summary>
/// <param name="format">Shader image format</param>
/// <returns>Texture format</returns>
- public static Format GetFormat(TextureFormat format)
+ public static FormatInfo GetFormatInfo(TextureFormat format)
{
return format switch
{
#pragma warning disable IDE0055 // Disable formatting
- TextureFormat.R8Unorm => Format.R8Unorm,
- TextureFormat.R8Snorm => Format.R8Snorm,
- TextureFormat.R8Uint => Format.R8Uint,
- TextureFormat.R8Sint => Format.R8Sint,
- TextureFormat.R16Float => Format.R16Float,
- TextureFormat.R16Unorm => Format.R16Unorm,
- TextureFormat.R16Snorm => Format.R16Snorm,
- TextureFormat.R16Uint => Format.R16Uint,
- TextureFormat.R16Sint => Format.R16Sint,
- TextureFormat.R32Float => Format.R32Float,
- TextureFormat.R32Uint => Format.R32Uint,
- TextureFormat.R32Sint => Format.R32Sint,
- TextureFormat.R8G8Unorm => Format.R8G8Unorm,
- TextureFormat.R8G8Snorm => Format.R8G8Snorm,
- TextureFormat.R8G8Uint => Format.R8G8Uint,
- TextureFormat.R8G8Sint => Format.R8G8Sint,
- TextureFormat.R16G16Float => Format.R16G16Float,
- TextureFormat.R16G16Unorm => Format.R16G16Unorm,
- TextureFormat.R16G16Snorm => Format.R16G16Snorm,
- TextureFormat.R16G16Uint => Format.R16G16Uint,
- TextureFormat.R16G16Sint => Format.R16G16Sint,
- TextureFormat.R32G32Float => Format.R32G32Float,
- TextureFormat.R32G32Uint => Format.R32G32Uint,
- TextureFormat.R32G32Sint => Format.R32G32Sint,
- TextureFormat.R8G8B8A8Unorm => Format.R8G8B8A8Unorm,
- TextureFormat.R8G8B8A8Snorm => Format.R8G8B8A8Snorm,
- TextureFormat.R8G8B8A8Uint => Format.R8G8B8A8Uint,
- TextureFormat.R8G8B8A8Sint => Format.R8G8B8A8Sint,
- TextureFormat.R16G16B16A16Float => Format.R16G16B16A16Float,
- TextureFormat.R16G16B16A16Unorm => Format.R16G16B16A16Unorm,
- TextureFormat.R16G16B16A16Snorm => Format.R16G16B16A16Snorm,
- TextureFormat.R16G16B16A16Uint => Format.R16G16B16A16Uint,
- TextureFormat.R16G16B16A16Sint => Format.R16G16B16A16Sint,
- TextureFormat.R32G32B32A32Float => Format.R32G32B32A32Float,
- TextureFormat.R32G32B32A32Uint => Format.R32G32B32A32Uint,
- TextureFormat.R32G32B32A32Sint => Format.R32G32B32A32Sint,
- TextureFormat.R10G10B10A2Unorm => Format.R10G10B10A2Unorm,
- TextureFormat.R10G10B10A2Uint => Format.R10G10B10A2Uint,
- TextureFormat.R11G11B10Float => Format.R11G11B10Float,
- _ => 0,
+ TextureFormat.R8Unorm => new(Format.R8Unorm, 1, 1, 1, 1),
+ TextureFormat.R8Snorm => new(Format.R8Snorm, 1, 1, 1, 1),
+ TextureFormat.R8Uint => new(Format.R8Uint, 1, 1, 1, 1),
+ TextureFormat.R8Sint => new(Format.R8Sint, 1, 1, 1, 1),
+ TextureFormat.R16Float => new(Format.R16Float, 1, 1, 2, 1),
+ TextureFormat.R16Unorm => new(Format.R16Unorm, 1, 1, 2, 1),
+ TextureFormat.R16Snorm => new(Format.R16Snorm, 1, 1, 2, 1),
+ TextureFormat.R16Uint => new(Format.R16Uint, 1, 1, 2, 1),
+ TextureFormat.R16Sint => new(Format.R16Sint, 1, 1, 2, 1),
+ TextureFormat.R32Float => new(Format.R32Float, 1, 1, 4, 1),
+ TextureFormat.R32Uint => new(Format.R32Uint, 1, 1, 4, 1),
+ TextureFormat.R32Sint => new(Format.R32Sint, 1, 1, 4, 1),
+ TextureFormat.R8G8Unorm => new(Format.R8G8Unorm, 1, 1, 2, 2),
+ TextureFormat.R8G8Snorm => new(Format.R8G8Snorm, 1, 1, 2, 2),
+ TextureFormat.R8G8Uint => new(Format.R8G8Uint, 1, 1, 2, 2),
+ TextureFormat.R8G8Sint => new(Format.R8G8Sint, 1, 1, 2, 2),
+ TextureFormat.R16G16Float => new(Format.R16G16Float, 1, 1, 4, 2),
+ TextureFormat.R16G16Unorm => new(Format.R16G16Unorm, 1, 1, 4, 2),
+ TextureFormat.R16G16Snorm => new(Format.R16G16Snorm, 1, 1, 4, 2),
+ TextureFormat.R16G16Uint => new(Format.R16G16Uint, 1, 1, 4, 2),
+ TextureFormat.R16G16Sint => new(Format.R16G16Sint, 1, 1, 4, 2),
+ TextureFormat.R32G32Float => new(Format.R32G32Float, 1, 1, 8, 2),
+ TextureFormat.R32G32Uint => new(Format.R32G32Uint, 1, 1, 8, 2),
+ TextureFormat.R32G32Sint => new(Format.R32G32Sint, 1, 1, 8, 2),
+ TextureFormat.R8G8B8A8Unorm => new(Format.R8G8B8A8Unorm, 1, 1, 4, 4),
+ TextureFormat.R8G8B8A8Snorm => new(Format.R8G8B8A8Snorm, 1, 1, 4, 4),
+ TextureFormat.R8G8B8A8Uint => new(Format.R8G8B8A8Uint, 1, 1, 4, 4),
+ TextureFormat.R8G8B8A8Sint => new(Format.R8G8B8A8Sint, 1, 1, 4, 4),
+ TextureFormat.R16G16B16A16Float => new(Format.R16G16B16A16Float, 1, 1, 8, 4),
+ TextureFormat.R16G16B16A16Unorm => new(Format.R16G16B16A16Unorm, 1, 1, 8, 4),
+ TextureFormat.R16G16B16A16Snorm => new(Format.R16G16B16A16Snorm, 1, 1, 8, 4),
+ TextureFormat.R16G16B16A16Uint => new(Format.R16G16B16A16Uint, 1, 1, 8, 4),
+ TextureFormat.R16G16B16A16Sint => new(Format.R16G16B16A16Sint, 1, 1, 8, 4),
+ TextureFormat.R32G32B32A32Float => new(Format.R32G32B32A32Float, 1, 1, 16, 4),
+ TextureFormat.R32G32B32A32Uint => new(Format.R32G32B32A32Uint, 1, 1, 16, 4),
+ TextureFormat.R32G32B32A32Sint => new(Format.R32G32B32A32Sint, 1, 1, 16, 4),
+ TextureFormat.R10G10B10A2Unorm => new(Format.R10G10B10A2Unorm, 1, 1, 4, 4),
+ TextureFormat.R10G10B10A2Uint => new(Format.R10G10B10A2Uint, 1, 1, 4, 4),
+ TextureFormat.R11G11B10Float => new(Format.R11G11B10Float, 1, 1, 4, 3),
+ _ => FormatInfo.Invalid,
#pragma warning restore IDE0055
};
}