diff options
| author | Erik Kundiman <erik@megapahit.org> | 2024-12-15 12:34:37 +0800 | 
|---|---|---|
| committer | Erik Kundiman <erik@megapahit.org> | 2024-12-15 12:34:37 +0800 | 
| commit | 3316ffb3b571b8730d26d6e8b2ee00fc9cbdf7c0 (patch) | |
| tree | 200cd8497a4fdd782ac4dbfd2ad5fb1632e03275 /indra/llwindow | |
| parent | d4e433b37af94ee11880deeede74a87a728f4775 (diff) | |
| parent | 5b77436cf0ad749d36e8f0c60077eeb24698d644 (diff) | |
Merge remote-tracking branch 'secondlife/release/2024.09-ExtraFPS' into 2024.09-ExtraFPS
Diffstat (limited to 'indra/llwindow')
| -rw-r--r-- | indra/llwindow/llwindowmacosx.cpp | 52 | ||||
| -rw-r--r-- | indra/llwindow/llwindowmacosx.h | 3 | 
2 files changed, 39 insertions, 16 deletions
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index 3cfc9d7c84..a6ca26236c 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -69,6 +69,41 @@ namespace  bool LLWindowMacOSX::sUseMultGL = false; +//static +void LLWindowMacOSX::setUseMultGL(bool use_mult_gl) +{ +    bool was_enabled = sUseMultGL; + +    sUseMultGL = use_mult_gl; + +    if (gGLManager.mInited) +    { +        CGLContextObj ctx = CGLGetCurrentContext(); +        //enable multi-threaded OpenGL (whether or not sUseMultGL actually changed) +        if (sUseMultGL) +        { +            CGLError cgl_err; + +            cgl_err =  CGLEnable( ctx, kCGLCEMPEngine); + +            if (cgl_err != kCGLNoError ) +            { +                LL_INFOS("GLInit") << "Multi-threaded OpenGL not available." << LL_ENDL; +                sUseMultGL = false; +            } +            else +            { +                LL_INFOS("GLInit") << "Multi-threaded OpenGL enabled." << LL_ENDL; +            } +        } +        else if (was_enabled) +        { +            CGLDisable( ctx, kCGLCEMPEngine); +            LL_INFOS("GLInit") << "Multi-threaded OpenGL disabled." << LL_ENDL; +        } +    } +} +  // Cross-platform bits:  bool check_for_card(const char* RENDERER, const char* bad_card) @@ -705,23 +740,8 @@ bool LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits      // Disable vertical sync for swap      toggleVSync(enable_vsync); -    //enable multi-threaded OpenGL -    if (sUseMultGL) -    { -        CGLError cgl_err; -        CGLContextObj ctx = CGLGetCurrentContext(); - -        cgl_err =  CGLEnable( ctx, kCGLCEMPEngine); +    setUseMultGL(sUseMultGL); -        if (cgl_err != kCGLNoError ) -        { -            LL_INFOS("GLInit") << "Multi-threaded OpenGL not available." << LL_ENDL; -        } -        else -        { -            LL_INFOS("GLInit") << "Multi-threaded OpenGL enabled." << LL_ENDL; -        } -    }      makeFirstResponder(mWindow, mGLView);      return true; diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h index f5b6441746..7de1a40d93 100644 --- a/indra/llwindow/llwindowmacosx.h +++ b/indra/llwindow/llwindowmacosx.h @@ -147,6 +147,9 @@ public:      void toggleVSync(bool enable_vsync) override; +    // enable or disable multithreaded GL +    static void setUseMultGL(bool use_mult_gl); +  protected:      LLWindowMacOSX(LLWindowCallbacks* callbacks,          const std::string& title, const std::string& name, int x, int y, int width, int height, U32 flags,  | 
