Use selected gpu from config for avalonia (#7)

* use configured device

* address review
This commit is contained in:
Emmanuel Hansen 2022-06-14 20:37:51 +00:00 committed by riperiperi
parent 0860e208b2
commit 002bfc65ae
4 changed files with 6 additions and 5 deletions

View file

@ -97,6 +97,7 @@ namespace Ryujinx.Ava
VulkanVersion = new Version(1, 2), VulkanVersion = new Version(1, 2),
MaxQueueCount = 2, MaxQueueCount = 2,
PreferDiscreteGpu = true, PreferDiscreteGpu = true,
PreferredDevice = !PreviewerDetached ? "" : ConfigurationState.Instance.Graphics.PreferredGpu.Value,
UseDebug = !PreviewerDetached ? false : ConfigurationState.Instance.Logger.GraphicsDebugLevel.Value != GraphicsDebugLevel.None, UseDebug = !PreviewerDetached ? false : ConfigurationState.Instance.Logger.GraphicsDebugLevel.Value != GraphicsDebugLevel.None,
}) })
.With(new SkiaOptions() .With(new SkiaOptions()

View file

@ -38,7 +38,7 @@ namespace Ryujinx.Ava.Ui.Vulkan
/// <summary> /// <summary>
/// Sets the device to use if available and suitable. /// Sets the device to use if available and suitable.
/// </summary> /// </summary>
public uint? PreferredDevice { get; set; } public string PreferredDevice { get; set; }
/// <summary> /// <summary>
/// Max number of device queues to request /// Max number of device queues to request

View file

@ -36,7 +36,7 @@ namespace Ryujinx.Ava.Ui.Vulkan
public Version ApiVersion { get; } public Version ApiVersion { get; }
internal static unsafe VulkanPhysicalDevice FindSuitablePhysicalDevice(VulkanInstance instance, internal static unsafe VulkanPhysicalDevice FindSuitablePhysicalDevice(VulkanInstance instance,
VulkanSurface surface, bool preferDiscreteGpu, uint? preferredDevice) VulkanSurface surface, bool preferDiscreteGpu, string preferredDevice)
{ {
uint physicalDeviceCount; uint physicalDeviceCount;
@ -58,9 +58,9 @@ namespace Ryujinx.Ava.Ui.Vulkan
physicalDeviceProperties.Add(physicalDevice, properties); physicalDeviceProperties.Add(physicalDevice, properties);
} }
if (preferredDevice.HasValue && preferredDevice != 0) if (!string.IsNullOrWhiteSpace(preferredDevice))
{ {
var physicalDevice = physicalDeviceProperties.FirstOrDefault(x => x.Value.DeviceID == preferredDevice); var physicalDevice = physicalDeviceProperties.FirstOrDefault(x => VulkanInitialization.StringFromIdPair(x.Value.VendorID, x.Value.DeviceID) == preferredDevice);
if (physicalDevice.Key.Handle != 0 && IsSuitableDevice(instance.Api, physicalDevice.Key, if (physicalDevice.Key.Handle != 0 && IsSuitableDevice(instance.Api, physicalDevice.Key,
physicalDevice.Value, surface.ApiHandle, out var queueCount, physicalDevice.Value, surface.ApiHandle, out var queueCount,
out var queueFamilyIndex)) out var queueFamilyIndex))

View file

@ -280,7 +280,7 @@ namespace Ryujinx.Graphics.Vulkan
return devices; return devices;
} }
private static string StringFromIdPair(uint vendorId, uint deviceId) public static string StringFromIdPair(uint vendorId, uint deviceId)
{ {
return $"0x{vendorId:X}_0x{deviceId:X}"; return $"0x{vendorId:X}_0x{deviceId:X}";
} }