From f2c85c5d58a0aeda5d5fe2d7a980cc7284330288 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Wed, 11 Dec 2019 03:54:18 -0300 Subject: Support non-constant texture offsets on non-NVIDIA gpus --- Ryujinx.Graphics.OpenGL/HwCapabilities.cs | 16 ++++++++++++---- Ryujinx.Graphics.OpenGL/Renderer.cs | 1 + 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'Ryujinx.Graphics.OpenGL') diff --git a/Ryujinx.Graphics.OpenGL/HwCapabilities.cs b/Ryujinx.Graphics.OpenGL/HwCapabilities.cs index 7524dc1d..dc147484 100644 --- a/Ryujinx.Graphics.OpenGL/HwCapabilities.cs +++ b/Ryujinx.Graphics.OpenGL/HwCapabilities.cs @@ -11,11 +11,14 @@ namespace Ryujinx.Graphics.OpenGL private static Lazy _maximumComputeSharedMemorySize = new Lazy(() => GetLimit(All.MaxComputeSharedMemorySize)); private static Lazy _storageBufferOffsetAlignment = new Lazy(() => GetLimit(All.ShaderStorageBufferOffsetAlignment)); - public static bool SupportsAstcCompression => _supportsAstcCompression.Value; + private static Lazy _isNvidiaDriver = new Lazy(() => IsNvidiaDriver()); - public static int MaximumViewportDimensions => _maximumViewportDimensions.Value; - public static int MaximumComputeSharedMemorySize => _maximumComputeSharedMemorySize.Value; - public static int StorageBufferOffsetAlignment => _storageBufferOffsetAlignment.Value; + public static bool SupportsAstcCompression => _supportsAstcCompression.Value; + public static bool SupportsNonConstantTextureOffset => _isNvidiaDriver.Value; + + public static int MaximumViewportDimensions => _maximumViewportDimensions.Value; + public static int MaximumComputeSharedMemorySize => _maximumComputeSharedMemorySize.Value; + public static int StorageBufferOffsetAlignment => _storageBufferOffsetAlignment.Value; private static bool HasExtension(string name) { @@ -36,5 +39,10 @@ namespace Ryujinx.Graphics.OpenGL { return GL.GetInteger((GetPName)name); } + + private static bool IsNvidiaDriver() + { + return GL.GetString(StringName.Vendor).Equals("NVIDIA Corporation"); + } } } \ No newline at end of file diff --git a/Ryujinx.Graphics.OpenGL/Renderer.cs b/Ryujinx.Graphics.OpenGL/Renderer.cs index eec3e320..ac16a37f 100644 --- a/Ryujinx.Graphics.OpenGL/Renderer.cs +++ b/Ryujinx.Graphics.OpenGL/Renderer.cs @@ -63,6 +63,7 @@ namespace Ryujinx.Graphics.OpenGL { return new Capabilities( HwCapabilities.SupportsAstcCompression, + HwCapabilities.SupportsNonConstantTextureOffset, HwCapabilities.MaximumViewportDimensions, HwCapabilities.MaximumComputeSharedMemorySize, HwCapabilities.StorageBufferOffsetAlignment); -- cgit v1.2.3