diff --git a/src/allocator/GBM.cpp b/src/allocator/GBM.cpp index e06703b..7fe059d 100644 --- a/src/allocator/GBM.cpp +++ b/src/allocator/GBM.cpp @@ -140,7 +140,7 @@ Aquamarine::CGBMBuffer::CGBMBuffer(const SAllocatorBufferParams& params, Hypruti return; } - static const auto forceLinearBlit = envEnabled("AQ_FORCE_LINEAR_BLIT"); + static const auto forceLinearBlit = !envExplicitlyDisabled("AQ_FORCE_LINEAR_BLIT"); auto const oldMods = explicitModifiers; // used in FORCE_LINEAR_BLIT case. if (MULTIGPU && !forceLinearBlit) { // Try to use the linear format if available for cross-GPU compatibility. diff --git a/src/include/Shared.hpp b/src/include/Shared.hpp index 61f9781..6affcad 100644 --- a/src/include/Shared.hpp +++ b/src/include/Shared.hpp @@ -6,6 +6,7 @@ namespace Aquamarine { bool envEnabled(const std::string& env); + bool envExplicitlyDisabled(const std::string& env); bool isTrace(); }; diff --git a/src/utils/Shared.cpp b/src/utils/Shared.cpp index 5dd7a78..af30c1b 100644 --- a/src/utils/Shared.cpp +++ b/src/utils/Shared.cpp @@ -6,6 +6,11 @@ bool Aquamarine::envEnabled(const std::string& env) { return e && e == std::string{"1"}; } +bool Aquamarine::envExplicitlyDisabled(const std::string& env) { + auto e = getenv(env.c_str()); + return e && e == std::string{"0"}; +} + static bool trace = []() -> bool { return Aquamarine::envEnabled("AQ_TRACE"); }(); bool Aquamarine::isTrace() {