DriverUtilities.cs
1 using Ryujinx.Common.Utilities; 2 using System; 3 4 namespace Ryujinx.Common.GraphicsDriver 5 { 6 public static class DriverUtilities 7 { 8 private static void AddMesaFlags(string envVar, string newFlags) 9 { 10 string existingFlags = Environment.GetEnvironmentVariable(envVar); 11 12 string flags = existingFlags == null ? newFlags : $"{existingFlags},{newFlags}"; 13 14 OsUtils.SetEnvironmentVariableNoCaching(envVar, flags); 15 } 16 17 public static void InitDriverConfig(bool oglThreading) 18 { 19 if (OperatingSystem.IsLinux()) 20 { 21 AddMesaFlags("RADV_DEBUG", "nodcc"); 22 } 23 24 ToggleOGLThreading(oglThreading); 25 } 26 27 public static void ToggleOGLThreading(bool enabled) 28 { 29 OsUtils.SetEnvironmentVariableNoCaching("mesa_glthread", enabled.ToString().ToLower()); 30 OsUtils.SetEnvironmentVariableNoCaching("__GL_THREADED_OPTIMIZATIONS", enabled ? "1" : "0"); 31 32 try 33 { 34 NVThreadedOptimization.SetThreadedOptimization(enabled); 35 } 36 catch 37 { 38 // NVAPI is not available, or couldn't change the application profile. 39 } 40 } 41 } 42 }