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

as suggested by gdkchan
This commit is contained in:
A-w-x 2021-04-18 02:27:19 +02:00 committed by GitHub
parent d23511c25c
commit 7719909397
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 6 deletions

View File

@ -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++)
{ {

View File

@ -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.")
{ {

View File

@ -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,