Merge pull request #5756 from vitor-k/gl_extensions
Check for OpenGL extensions
This commit is contained in:
		@@ -61,6 +61,11 @@ RasterizerOpenGL::RasterizerOpenGL()
 | 
			
		||||
                    "Shadow might not be able to render because of unsupported OpenGL extensions.");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!GLAD_GL_ARB_copy_image) {
 | 
			
		||||
        LOG_WARNING(Render_OpenGL,
 | 
			
		||||
                    "ARB_copy_image not supported. Some games might produce artifacts.");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Clipping plane 0 is always enabled for PICA fixed clip plane z <= 0
 | 
			
		||||
    state.clip_distance[0] = true;
 | 
			
		||||
 | 
			
		||||
@@ -772,7 +777,7 @@ bool RasterizerOpenGL::Draw(bool accelerate, bool is_indexed) {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    OGLTexture temp_tex;
 | 
			
		||||
    if (need_duplicate_texture) {
 | 
			
		||||
    if (need_duplicate_texture && GLAD_GL_ARB_copy_image) {
 | 
			
		||||
        // The game is trying to use a surface as a texture and framebuffer at the same time
 | 
			
		||||
        // which causes unpredictable behavior on the host.
 | 
			
		||||
        // Making a copy to sample from eliminates this issue and seems to be fairly cheap.
 | 
			
		||||
 
 | 
			
		||||
@@ -365,6 +365,10 @@ void ShaderDiskCache::SaveDecompiled(u64 unique_identifier,
 | 
			
		||||
void ShaderDiskCache::SaveDump(u64 unique_identifier, GLuint program) {
 | 
			
		||||
    if (!IsUsable())
 | 
			
		||||
        return;
 | 
			
		||||
    if (!GLAD_GL_ARB_get_program_binary) {
 | 
			
		||||
        LOG_WARNING(Render_OpenGL, "ARB_get_program_binary is not supported. Problems may occur if "
 | 
			
		||||
                                   "use_disk_shader_cache is ON.");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    GLint binary_length{};
 | 
			
		||||
    glGetProgramiv(program, GL_PROGRAM_BINARY_LENGTH, &binary_length);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user