sdl: add check for GL extension support
This commit is contained in:
		
							parent
							
								
									0641950f9a
								
							
						
					
					
						commit
						fbef849c04
					
				@ -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();
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user