/ src / Ryujinx.Common / GraphicsDriver / DriverUtilities.cs
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  }