diff options
Diffstat (limited to 'src/yuzu_cmd')
| -rw-r--r-- | src/yuzu_cmd/emu_window/emu_window_sdl2.cpp | 23 | ||||
| -rw-r--r-- | src/yuzu_cmd/emu_window/emu_window_sdl2.h | 3 | 
2 files changed, 26 insertions, 0 deletions
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp index e21de6f21..cfd8eb7e6 100644 --- a/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp +++ b/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp @@ -78,6 +78,24 @@ void EmuWindow_SDL2::Fullscreen() {      SDL_MaximizeWindow(render_window);  } +bool EmuWindow_SDL2::SupportsRequiredGLExtensions() { +    std::vector<std::string> unsupported_ext; + +    if (!GLAD_GL_ARB_program_interface_query) +        unsupported_ext.push_back("ARB_program_interface_query"); +    if (!GLAD_GL_ARB_separate_shader_objects) +        unsupported_ext.push_back("ARB_separate_shader_objects"); +    if (!GLAD_GL_ARB_shader_storage_buffer_object) +        unsupported_ext.push_back("ARB_shader_storage_buffer_object"); +    if (!GLAD_GL_ARB_vertex_attrib_binding) +        unsupported_ext.push_back("ARB_vertex_attrib_binding"); + +    for (const std::string& ext : unsupported_ext) +        NGLOG_CRITICAL(Frontend, "Unsupported GL extension: {}", ext); + +    return unsupported_ext.empty(); +} +  EmuWindow_SDL2::EmuWindow_SDL2(bool fullscreen) {      InputCommon::Init(); @@ -128,6 +146,11 @@ EmuWindow_SDL2::EmuWindow_SDL2(bool fullscreen) {          exit(1);      } +    if (!SupportsRequiredGLExtensions()) { +        NGLOG_CRITICAL(Frontend, "GPU does not support all required OpenGL extensions! Exiting..."); +        exit(1); +    } +      OnResize();      OnMinimalClientAreaChangeRequest(GetActiveConfig().min_client_area_size);      SDL_PumpEvents(); diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2.h b/src/yuzu_cmd/emu_window/emu_window_sdl2.h index 7d5cfffb6..1d835c3c6 100644 --- a/src/yuzu_cmd/emu_window/emu_window_sdl2.h +++ b/src/yuzu_cmd/emu_window/emu_window_sdl2.h @@ -46,6 +46,9 @@ private:      /// Called when user passes the fullscreen parameter flag      void Fullscreen(); +    /// Whether the GPU and driver supports the OpenGL extension required +    bool SupportsRequiredGLExtensions(); +      /// Called when a configuration change affects the minimal size of the window      void OnMinimalClientAreaChangeRequest(          const std::pair<unsigned, unsigned>& minimal_size) override;  | 
