|
|
@@ -87,10 +87,10 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
internal bool IsAmdGcn { get; private set; }
|
|
|
internal bool IsNvidiaPreTuring { get; private set; }
|
|
|
internal bool IsIntelArc { get; private set; }
|
|
|
+ internal bool IsQualcommProprietary { get; private set; }
|
|
|
internal bool IsMoltenVk { get; private set; }
|
|
|
internal bool IsTBDR { get; private set; }
|
|
|
internal bool IsSharedMemory { get; private set; }
|
|
|
- internal bool IsConcurrentFenceWaitUnsupported { get; private set; }
|
|
|
|
|
|
public string GpuVendor { get; private set; }
|
|
|
public string GpuDriver { get; private set; }
|
|
|
@@ -325,8 +325,6 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
Vendor == Vendor.Broadcom ||
|
|
|
Vendor == Vendor.ImgTec;
|
|
|
|
|
|
- IsConcurrentFenceWaitUnsupported = Vendor == Vendor.Qualcomm;
|
|
|
-
|
|
|
GpuVendor = VendorUtils.GetNameFromId(properties.VendorID);
|
|
|
GpuDriver = hasDriverProperties && !OperatingSystem.IsMacOS() ?
|
|
|
VendorUtils.GetFriendlyDriverName(driverProperties.DriverID) : GpuVendor; // Fallback to vendor name if driver is unavailable or on MacOS where vendor is preferred.
|
|
|
@@ -348,7 +346,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
{
|
|
|
IsNvidiaPreTuring = gpuNumber < 2000;
|
|
|
}
|
|
|
- else if (GpuDriver.Contains("TITAN") && !GpuDriver.Contains("RTX"))
|
|
|
+ else if (GpuRenderer.Contains("TITAN") && !GpuRenderer.Contains("RTX"))
|
|
|
{
|
|
|
IsNvidiaPreTuring = true;
|
|
|
}
|
|
|
@@ -358,6 +356,8 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
IsIntelArc = GpuRenderer.StartsWith("Intel(R) Arc(TM)");
|
|
|
}
|
|
|
|
|
|
+ IsQualcommProprietary = hasDriverProperties && driverProperties.DriverID == DriverId.QualcommProprietary;
|
|
|
+
|
|
|
ulong minResourceAlignment = Math.Max(
|
|
|
Math.Max(
|
|
|
properties.Limits.MinStorageBufferOffsetAlignment,
|
|
|
@@ -415,7 +415,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
Api.TryGetDeviceExtension(_instance.Instance, _device, out ExtExternalMemoryHost hostMemoryApi);
|
|
|
HostMemoryAllocator = new HostMemoryAllocator(MemoryAllocator, Api, hostMemoryApi, _device);
|
|
|
|
|
|
- CommandBufferPool = new CommandBufferPool(Api, _device, Queue, QueueLock, queueFamilyIndex, IsConcurrentFenceWaitUnsupported);
|
|
|
+ CommandBufferPool = new CommandBufferPool(Api, _device, Queue, QueueLock, queueFamilyIndex, IsQualcommProprietary);
|
|
|
|
|
|
PipelineLayoutCache = new PipelineLayoutCache();
|
|
|
|
|
|
@@ -692,7 +692,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
GpuVendor,
|
|
|
memoryType: memoryType,
|
|
|
hasFrontFacingBug: IsIntelWindows,
|
|
|
- hasVectorIndexingBug: Vendor == Vendor.Qualcomm,
|
|
|
+ hasVectorIndexingBug: IsQualcommProprietary,
|
|
|
needsFragmentOutputSpecialization: IsMoltenVk,
|
|
|
reduceShaderPrecision: IsMoltenVk,
|
|
|
supportsAstcCompression: features2.Features.TextureCompressionAstcLdr && supportsAstcFormats,
|