mirror of https://github.com/PCSX2/pcsx2.git
gsdx-ogl: bump base requirement to 3.3
A couple of fallbacks were introduced for the Mesa driver that only support 3.0 DSA will require a recent Mesa which already support GL3.3 Require at least SandyBridge for Intel GPU
This commit is contained in:
parent
594f6c33a2
commit
f46e8cc6ac
|
@ -160,8 +160,7 @@ namespace GLLoader {
|
||||||
|
|
||||||
// Optional
|
// Optional
|
||||||
bool found_GL_ARB_separate_shader_objects = false;
|
bool found_GL_ARB_separate_shader_objects = false;
|
||||||
bool found_geometry_shader = true;
|
bool found_geometry_shader = true; // we require GL3.3 so geometry must be supported by default
|
||||||
bool found_only_gl30 = false; // Drop it when mesa support GLSL330
|
|
||||||
bool found_GL_ARB_clear_texture = false; // Don't know if GL3 GPU can support it
|
bool found_GL_ARB_clear_texture = false; // Don't know if GL3 GPU can support it
|
||||||
bool found_GL_ARB_buffer_storage = false;
|
bool found_GL_ARB_buffer_storage = false;
|
||||||
bool found_GL_ARB_explicit_uniform_location = false; // need by subroutine
|
bool found_GL_ARB_explicit_uniform_location = false; // need by subroutine
|
||||||
|
@ -238,10 +237,6 @@ namespace GLLoader {
|
||||||
GLuint minor_gl = s[dot+1]-'0';
|
GLuint minor_gl = s[dot+1]-'0';
|
||||||
|
|
||||||
#ifndef ENABLE_GLES
|
#ifndef ENABLE_GLES
|
||||||
if ( (major_gl < 3) || ( major_gl == 3 && minor_gl < 2 ) ) {
|
|
||||||
fprintf(stderr, "Geometry shaders are not supported. Required openGL 3.2\n");
|
|
||||||
found_geometry_shader = false;
|
|
||||||
}
|
|
||||||
if (mesa_amd_buggy_driver || intel_buggy_driver) {
|
if (mesa_amd_buggy_driver || intel_buggy_driver) {
|
||||||
fprintf(stderr, "Buggy driver detected. Geometry shaders will be disabled\n");
|
fprintf(stderr, "Buggy driver detected. Geometry shaders will be disabled\n");
|
||||||
found_geometry_shader = false;
|
found_geometry_shader = false;
|
||||||
|
@ -250,10 +245,6 @@ namespace GLLoader {
|
||||||
found_geometry_shader = !!theApp.GetConfig("override_geometry_shader", -1);
|
found_geometry_shader = !!theApp.GetConfig("override_geometry_shader", -1);
|
||||||
fprintf(stderr, "Override geometry shaders detection\n");
|
fprintf(stderr, "Override geometry shaders detection\n");
|
||||||
}
|
}
|
||||||
if ( (major_gl == 3) && minor_gl < 3) {
|
|
||||||
// Opensource driver spotted
|
|
||||||
found_only_gl30 = true;
|
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
found_geometry_shader = false;
|
found_geometry_shader = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -425,7 +425,6 @@ namespace GLLoader {
|
||||||
extern bool found_GL_ARB_shading_language_420pack;
|
extern bool found_GL_ARB_shading_language_420pack;
|
||||||
extern bool found_GL_ARB_copy_image;
|
extern bool found_GL_ARB_copy_image;
|
||||||
extern bool found_geometry_shader;
|
extern bool found_geometry_shader;
|
||||||
extern bool found_only_gl30;
|
|
||||||
extern bool found_GL_ARB_gpu_shader5;
|
extern bool found_GL_ARB_gpu_shader5;
|
||||||
extern bool found_GL_ARB_shader_image_load_store;
|
extern bool found_GL_ARB_shader_image_load_store;
|
||||||
extern bool found_GL_ARB_clear_texture;
|
extern bool found_GL_ARB_clear_texture;
|
||||||
|
|
|
@ -161,7 +161,7 @@ GSTexture* GSDeviceOGL::FetchSurface(int type, int w, int h, bool msaa, int form
|
||||||
bool GSDeviceOGL::Create(GSWnd* wnd)
|
bool GSDeviceOGL::Create(GSWnd* wnd)
|
||||||
{
|
{
|
||||||
if (m_window == NULL) {
|
if (m_window == NULL) {
|
||||||
if (!GLLoader::check_gl_version(3, 0)) return false;
|
if (!GLLoader::check_gl_version(3, 3)) return false;
|
||||||
|
|
||||||
if (!GLLoader::check_gl_supported_extension()) return false;
|
if (!GLLoader::check_gl_supported_extension()) return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -355,11 +355,7 @@ std::string GSShaderOGL::GenGlslHeader(const std::string& entry, GLenum type, co
|
||||||
{
|
{
|
||||||
std::string header;
|
std::string header;
|
||||||
#ifndef ENABLE_GLES
|
#ifndef ENABLE_GLES
|
||||||
if (GLLoader::found_only_gl30) {
|
header = "#version 330 core\n";
|
||||||
header = "#version 130\n";
|
|
||||||
} else {
|
|
||||||
header = "#version 330 core\n";
|
|
||||||
}
|
|
||||||
if (GLLoader::found_GL_ARB_shading_language_420pack) {
|
if (GLLoader::found_GL_ARB_shading_language_420pack) {
|
||||||
// Need GL version 420
|
// Need GL version 420
|
||||||
header += "#extension GL_ARB_shading_language_420pack: require\n";
|
header += "#extension GL_ARB_shading_language_420pack: require\n";
|
||||||
|
@ -370,12 +366,6 @@ std::string GSShaderOGL::GenGlslHeader(const std::string& entry, GLenum type, co
|
||||||
// Need GL version 410
|
// Need GL version 410
|
||||||
header += "#extension GL_ARB_separate_shader_objects: require\n";
|
header += "#extension GL_ARB_separate_shader_objects: require\n";
|
||||||
}
|
}
|
||||||
if (GLLoader::found_only_gl30) {
|
|
||||||
// Need version 330
|
|
||||||
header += "#extension GL_ARB_explicit_attrib_location: require\n";
|
|
||||||
// Need version 140
|
|
||||||
header += "#extension GL_ARB_uniform_buffer_object: require\n";
|
|
||||||
}
|
|
||||||
if (GLLoader::found_GL_ARB_shader_subroutine && GLLoader::found_GL_ARB_explicit_uniform_location) {
|
if (GLLoader::found_GL_ARB_shader_subroutine && GLLoader::found_GL_ARB_explicit_uniform_location) {
|
||||||
// Need GL version 400
|
// Need GL version 400
|
||||||
header += "#define SUBROUTINE_GL40 1\n";
|
header += "#define SUBROUTINE_GL40 1\n";
|
||||||
|
@ -385,9 +375,6 @@ std::string GSShaderOGL::GenGlslHeader(const std::string& entry, GLenum type, co
|
||||||
// Need GL version 430
|
// Need GL version 430
|
||||||
header += "#extension GL_ARB_explicit_uniform_location: require\n";
|
header += "#extension GL_ARB_explicit_uniform_location: require\n";
|
||||||
}
|
}
|
||||||
#ifdef ENABLE_OGL_STENCIL_DEBUG
|
|
||||||
header += "#define ENABLE_OGL_STENCIL_DEBUG 1\n";
|
|
||||||
#endif
|
|
||||||
if (GLLoader::found_GL_ARB_shader_image_load_store) {
|
if (GLLoader::found_GL_ARB_shader_image_load_store) {
|
||||||
// Need GL version 420
|
// Need GL version 420
|
||||||
header += "#extension GL_ARB_shader_image_load_store: require\n";
|
header += "#extension GL_ARB_shader_image_load_store: require\n";
|
||||||
|
@ -395,13 +382,16 @@ std::string GSShaderOGL::GenGlslHeader(const std::string& entry, GLenum type, co
|
||||||
header += "#define DISABLE_GL42_image\n";
|
header += "#define DISABLE_GL42_image\n";
|
||||||
}
|
}
|
||||||
if (GLLoader::found_GL_ARB_bindless_texture && GLLoader::found_GL_ARB_explicit_uniform_location) {
|
if (GLLoader::found_GL_ARB_bindless_texture && GLLoader::found_GL_ARB_explicit_uniform_location) {
|
||||||
// Future opengl 5?
|
// ARB extension (4.4)
|
||||||
header += "#extension GL_ARB_bindless_texture: require\n";
|
header += "#extension GL_ARB_bindless_texture: require\n";
|
||||||
header += "#define ENABLE_BINDLESS_TEX\n";
|
header += "#define ENABLE_BINDLESS_TEX\n";
|
||||||
}
|
}
|
||||||
if (GLLoader::found_GL_ARB_clip_control) {
|
if (GLLoader::found_GL_ARB_clip_control) {
|
||||||
header += "#define ZERO_TO_ONE_DEPTH\n";
|
header += "#define ZERO_TO_ONE_DEPTH\n";
|
||||||
}
|
}
|
||||||
|
#ifdef ENABLE_OGL_STENCIL_DEBUG
|
||||||
|
header += "#define ENABLE_OGL_STENCIL_DEBUG 1\n";
|
||||||
|
#endif
|
||||||
#else // ENABLE_GLES
|
#else // ENABLE_GLES
|
||||||
header = "#version 310 es\n";
|
header = "#version 310 es\n";
|
||||||
header += "#extension GL_EXT_shader_io_blocks: require\n";
|
header += "#extension GL_EXT_shader_io_blocks: require\n";
|
||||||
|
|
|
@ -138,10 +138,7 @@ bool GSWndOGL::Attach(void* handle, bool managed)
|
||||||
|
|
||||||
m_NativeDisplay = XOpenDisplay(NULL);
|
m_NativeDisplay = XOpenDisplay(NULL);
|
||||||
|
|
||||||
if (theApp.GetConfig("reduce_gl_requirement_for_free_driver", 0) == 1)
|
CreateContext(3, 3);
|
||||||
CreateContext(3, 0);
|
|
||||||
else
|
|
||||||
CreateContext(3, 3);
|
|
||||||
|
|
||||||
AttachContext();
|
AttachContext();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue