Просмотр исходного кода

HwCapabilities: Divide Intel into IntelWindows and IntelUnix (#2219)

as suggested by gdkchan
A-w-x 5 лет назад
Родитель
Сommit
7719909397

+ 2 - 2
Ryujinx.Graphics.OpenGL/Framebuffer.cs

@@ -41,7 +41,7 @@ namespace Ryujinx.Graphics.OpenGL
             FramebufferAttachment attachment = FramebufferAttachment.ColorAttachment0 + index;
             FramebufferAttachment attachment = FramebufferAttachment.ColorAttachment0 + index;
 
 
             if (HwCapabilities.Vendor == HwCapabilities.GpuVendor.Amd ||
             if (HwCapabilities.Vendor == HwCapabilities.GpuVendor.Amd ||
-                HwCapabilities.Vendor == HwCapabilities.GpuVendor.Intel)
+                HwCapabilities.Vendor == HwCapabilities.GpuVendor.IntelWindows)
             {
             {
                 GL.FramebufferTexture(FramebufferTarget.Framebuffer, attachment, color?.GetIncompatibleFormatViewHandle() ?? 0, 0);
                 GL.FramebufferTexture(FramebufferTarget.Framebuffer, attachment, color?.GetIncompatibleFormatViewHandle() ?? 0, 0);
             }
             }
@@ -95,7 +95,7 @@ namespace Ryujinx.Graphics.OpenGL
         public void SignalModified()
         public void SignalModified()
         {
         {
             if (HwCapabilities.Vendor == HwCapabilities.GpuVendor.Amd ||
             if (HwCapabilities.Vendor == HwCapabilities.GpuVendor.Amd ||
-                HwCapabilities.Vendor == HwCapabilities.GpuVendor.Intel)
+                HwCapabilities.Vendor == HwCapabilities.GpuVendor.IntelWindows)
             {
             {
                 for (int i = 0; i < 8; i++)
                 for (int i = 0; i < 8; i++)
                 {
                 {

+ 6 - 3
Ryujinx.Graphics.OpenGL/HwCapabilities.cs

@@ -18,7 +18,8 @@ namespace Ryujinx.Graphics.OpenGL
         {
         {
             Unknown,
             Unknown,
             Amd,
             Amd,
-            Intel,
+            IntelWindows,
+            IntelUnix,
             Nvidia
             Nvidia
         }
         }
 
 
@@ -34,7 +35,7 @@ namespace Ryujinx.Graphics.OpenGL
         public static bool SupportsViewportSwizzle           => _supportsViewportSwizzle.Value;
         public static bool SupportsViewportSwizzle           => _supportsViewportSwizzle.Value;
         public static bool SupportsSeamlessCubemapPerTexture => _supportsSeamlessCubemapPerTexture.Value;
         public static bool SupportsSeamlessCubemapPerTexture => _supportsSeamlessCubemapPerTexture.Value;
         public static bool SupportsNonConstantTextureOffset  => _gpuVendor.Value == GpuVendor.Nvidia;
         public static bool SupportsNonConstantTextureOffset  => _gpuVendor.Value == GpuVendor.Nvidia;
-        public static bool RequiresSyncFlush                 => _gpuVendor.Value == GpuVendor.Amd || _gpuVendor.Value == GpuVendor.Intel;
+        public static bool RequiresSyncFlush                 => _gpuVendor.Value == GpuVendor.Amd || _gpuVendor.Value == GpuVendor.IntelWindows || _gpuVendor.Value == GpuVendor.IntelUnix;
 
 
         public static int MaximumComputeSharedMemorySize => _maximumComputeSharedMemorySize.Value;
         public static int MaximumComputeSharedMemorySize => _maximumComputeSharedMemorySize.Value;
         public static int StorageBufferOffsetAlignment   => _storageBufferOffsetAlignment.Value;
         public static int StorageBufferOffsetAlignment   => _storageBufferOffsetAlignment.Value;
@@ -71,7 +72,9 @@ namespace Ryujinx.Graphics.OpenGL
             }
             }
             else if (vendor == "intel")
             else if (vendor == "intel")
             {
             {
-                return GpuVendor.Intel;
+                string renderer = GL.GetString(StringName.Renderer).ToLower();
+                
+                return renderer.Contains("mesa") ? GpuVendor.IntelUnix : GpuVendor.IntelWindows;
             }
             }
             else if (vendor == "ati technologies inc." || vendor == "advanced micro devices, inc.")
             else if (vendor == "ati technologies inc." || vendor == "advanced micro devices, inc.")
             {
             {

+ 1 - 1
Ryujinx.Graphics.OpenGL/Image/TextureCopy.cs

@@ -205,7 +205,7 @@ namespace Ryujinx.Graphics.OpenGL.Image
                     int copyWidth = sizeInBlocks ? BitUtils.DivRoundUp(width, blockWidth) : width;
                     int copyWidth = sizeInBlocks ? BitUtils.DivRoundUp(width, blockWidth) : width;
                     int copyHeight = sizeInBlocks ? BitUtils.DivRoundUp(height, blockHeight) : height;
                     int copyHeight = sizeInBlocks ? BitUtils.DivRoundUp(height, blockHeight) : height;
 
 
-                    if (HwCapabilities.Vendor == HwCapabilities.GpuVendor.Intel)
+                    if (HwCapabilities.Vendor == HwCapabilities.GpuVendor.IntelWindows)
                     {
                     {
                         GL.CopyImageSubData(
                         GL.CopyImageSubData(
                             src.Storage.Handle,
                             src.Storage.Handle,