diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2022-12-04 15:36:03 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-04 15:36:03 -0300 |
| commit | 17a1cab5d29787f3b41f40a69b530dae4e3cb25f (patch) | |
| tree | 25f72e40e08c851b80dea2ee2e184ddb3ba1d479 /Ryujinx.Graphics.Gpu | |
| parent | 73aed239c356c4c573819eb6ee1e2d414d2d5579 (diff) | |
Allow SNorm buffer texture formats on Vulkan (#3957)
* Allow SNorm buffer texture formats on Vulkan
* Shader cache version bump
Diffstat (limited to 'Ryujinx.Graphics.Gpu')
| -rw-r--r-- | Ryujinx.Graphics.Gpu/Image/TextureCache.cs | 5 | ||||
| -rw-r--r-- | Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs | 2 | ||||
| -rw-r--r-- | Ryujinx.Graphics.Gpu/Shader/GpuAccessorBase.cs | 2 |
3 files changed, 5 insertions, 4 deletions
diff --git a/Ryujinx.Graphics.Gpu/Image/TextureCache.cs b/Ryujinx.Graphics.Gpu/Image/TextureCache.cs index d76879eb..a6bb5741 100644 --- a/Ryujinx.Graphics.Gpu/Image/TextureCache.cs +++ b/Ryujinx.Graphics.Gpu/Image/TextureCache.cs @@ -1088,10 +1088,9 @@ namespace Ryujinx.Graphics.Gpu.Image { FormatInfo formatInfo = TextureCompatibility.ToHostCompatibleFormat(info, caps); - if (info.Target == Target.TextureBuffer) + if (info.Target == Target.TextureBuffer && !caps.SupportsSnormBufferTextureFormat) { - // We assume that the host does not support signed normalized format - // (as is the case with OpenGL), so we just use a unsigned format. + // If the host does not support signed normalized formats, we use a signed integer format instead. // The shader will need the appropriate conversion code to compensate. switch (formatInfo.Format) { diff --git a/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs b/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs index 617e4765..5c1b638b 100644 --- a/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs +++ b/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs @@ -22,7 +22,7 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache private const ushort FileFormatVersionMajor = 1; private const ushort FileFormatVersionMinor = 2; private const uint FileFormatVersionPacked = ((uint)FileFormatVersionMajor << 16) | FileFormatVersionMinor; - private const uint CodeGenVersion = 3943; + private const uint CodeGenVersion = 3957; private const string SharedTocFileName = "shared.toc"; private const string SharedDataFileName = "shared.data"; diff --git a/Ryujinx.Graphics.Gpu/Shader/GpuAccessorBase.cs b/Ryujinx.Graphics.Gpu/Shader/GpuAccessorBase.cs index 9648298e..33f06b6e 100644 --- a/Ryujinx.Graphics.Gpu/Shader/GpuAccessorBase.cs +++ b/Ryujinx.Graphics.Gpu/Shader/GpuAccessorBase.cs @@ -134,6 +134,8 @@ namespace Ryujinx.Graphics.Gpu.Shader public bool QueryHostSupportsShaderBallot() => _context.Capabilities.SupportsShaderBallot; + public bool QueryHostSupportsSnormBufferTextureFormat() => _context.Capabilities.SupportsSnormBufferTextureFormat; + public bool QueryHostSupportsTextureShadowLod() => _context.Capabilities.SupportsTextureShadowLod; public bool QueryHostSupportsViewportIndex() => _context.Capabilities.SupportsViewportIndex; |
