start: add --force-nixgl and check /run/opengl-driver (#13385)
This commit is contained in:
parent
70cdd819e4
commit
f624449c12
3 changed files with 23 additions and 2 deletions
|
|
@ -8,7 +8,8 @@
|
||||||
struct SState {
|
struct SState {
|
||||||
std::span<const char*> rawArgvNoBinPath;
|
std::span<const char*> rawArgvNoBinPath;
|
||||||
std::optional<std::string> customPath;
|
std::optional<std::string> customPath;
|
||||||
bool noNixGl = false;
|
bool noNixGl = false;
|
||||||
|
bool forceNixGl = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline UP<SState> g_state = makeUnique<SState>();
|
inline UP<SState> g_state = makeUnique<SState>();
|
||||||
|
|
@ -82,6 +82,9 @@ std::expected<void, std::string> Nix::nixEnvironmentOk() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Nix::shouldUseNixGL() {
|
bool Nix::shouldUseNixGL() {
|
||||||
|
if (g_state->forceNixGl)
|
||||||
|
return true;
|
||||||
|
|
||||||
if (g_state->noNixGl)
|
if (g_state->noNixGl)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
@ -103,7 +106,19 @@ bool Nix::shouldUseNixGL() {
|
||||||
|
|
||||||
if (IS_NIX) {
|
if (IS_NIX) {
|
||||||
const auto NAME = getFromEtcOsRelease("NAME");
|
const auto NAME = getFromEtcOsRelease("NAME");
|
||||||
return !NAME || *NAME != "NixOS";
|
|
||||||
|
// Hyprland is nix: recommend nixGL iff !NIX && !NIX-OPENGL
|
||||||
|
|
||||||
|
if (*NAME == "NixOS")
|
||||||
|
return false;
|
||||||
|
|
||||||
|
std::error_code ec;
|
||||||
|
|
||||||
|
if (std::filesystem::exists("/run/opengl-driver", ec) && !ec) // NOLINTNEXTLINE
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// we are not on nix / no nix opengl driver
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ Any arguments after -- are passed to Hyprland. For Hyprland help, run start-hypr
|
||||||
Additional arguments for start-hyprland:
|
Additional arguments for start-hyprland:
|
||||||
--path [path] -> Override Hyprland path
|
--path [path] -> Override Hyprland path
|
||||||
--no-nixgl -> Force disable nixGL
|
--no-nixgl -> Force disable nixGL
|
||||||
|
--force-nixgl -> Force enable nixGL
|
||||||
)#";
|
)#";
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
@ -79,6 +80,10 @@ int main(int argc, const char** argv, const char** envp) {
|
||||||
g_state->noNixGl = true;
|
g_state->noNixGl = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (arg == "--force-nixgl") {
|
||||||
|
g_state->forceNixGl = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (startArgv != -1)
|
if (startArgv != -1)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue