gsdx-ogl: load GL_ARB_viewport_array function pointer for the future

This commit is contained in:
Gregory Hainaut 2016-03-10 22:14:41 +01:00
parent 56c2e94daf
commit 95ef4e20f8
3 changed files with 15 additions and 1 deletions

View File

@ -107,6 +107,10 @@ PFNGLGETPROGRAMPIPELINEIVPROC glGetProgramPipelineiv = NUL
PFNGLVALIDATEPROGRAMPIPELINEPROC glValidateProgramPipeline = NULL;
PFNGLGETPROGRAMPIPELINEINFOLOGPROC glGetProgramPipelineInfoLog = NULL;
PFNGLGETPROGRAMBINARYPROC glGetProgramBinary = NULL;
PFNGLVIEWPORTINDEXEDFPROC glViewportIndexedf = NULL;
PFNGLVIEWPORTINDEXEDFVPROC glViewportIndexedfv = NULL;
PFNGLSCISSORINDEXEDPROC glScissorIndexed = NULL;
PFNGLSCISSORINDEXEDVPROC glScissorIndexedv = NULL;
// NO GL4.1
PFNGLUSEPROGRAMPROC glUseProgram = NULL;
PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog = NULL;
@ -352,7 +356,7 @@ namespace GLLoader {
bool found_GL_ARB_draw_buffers_blend = false; // Not supported on AMD R600 (80 nm class chip, HD2900). Nvidia requires FERMI. Intel SB
bool found_GL_ARB_gpu_shader5 = false; // Require IvyBridge
bool found_GL_ARB_shader_image_load_store = false; // Intel IB. Nvidia/AMD miss Mesa implementation.
// FIXME add GL_ARB_viewport_array
bool found_GL_ARB_viewport_array = false; // Intel IB. AMD/NVIDIA DX10
// Mandatory
bool found_GL_ARB_texture_storage = false;
@ -443,6 +447,7 @@ namespace GLLoader {
if (ext.compare("GL_ARB_gpu_shader5") == 0) found_GL_ARB_gpu_shader5 = true;
if (ext.compare("GL_ARB_draw_buffers_blend") == 0) found_GL_ARB_draw_buffers_blend = true;
// GL4.1
if (ext.compare("GL_ARB_viewport_array") == 0) found_GL_ARB_viewport_array = true;
if (ext.compare("GL_ARB_separate_shader_objects") == 0) {
if (!fglrx_buggy_driver && !mesa_amd_buggy_driver && !intel_buggy_driver) found_GL_ARB_separate_shader_objects = true;
else fprintf(stderr, "Buggy driver detected, GL_ARB_separate_shader_objects will be disabled\n"
@ -478,6 +483,7 @@ namespace GLLoader {
status &= status_and_override(found_GL_ARB_gpu_shader5, "GL_ARB_gpu_shader5");
status &= status_and_override(found_GL_ARB_draw_buffers_blend, "GL_ARB_draw_buffers_blend");
// GL4.1
status &= status_and_override(found_GL_ARB_viewport_array, "GL_ARB_viewport_array");
status &= status_and_override(found_GL_ARB_separate_shader_objects, "GL_ARB_separate_shader_objects");
// GL4.2
status &= status_and_override(found_GL_ARB_shader_image_load_store, "GL_ARB_shader_image_load_store");

View File

@ -282,6 +282,10 @@ extern PFNGLGETPROGRAMPIPELINEIVPROC glGetProgramPipelineiv;
extern PFNGLVALIDATEPROGRAMPIPELINEPROC glValidateProgramPipeline;
extern PFNGLGETPROGRAMPIPELINEINFOLOGPROC glGetProgramPipelineInfoLog;
extern PFNGLGETPROGRAMBINARYPROC glGetProgramBinary;
extern PFNGLVIEWPORTINDEXEDFPROC glViewportIndexedf;
extern PFNGLVIEWPORTINDEXEDFVPROC glViewportIndexedfv;
extern PFNGLSCISSORINDEXEDPROC glScissorIndexed;
extern PFNGLSCISSORINDEXEDVPROC glScissorIndexedv;
// NO GL4.1
extern PFNGLUSEPROGRAMPROC glUseProgram;
extern PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog;

View File

@ -105,6 +105,10 @@ void GSWndGL::PopulateGlFunction()
*(void**)&(glUseProgramStages) = GetProcAddress("glUseProgramStages", true);
*(void**)&(glProgramUniform1i) = GetProcAddress("glProgramUniform1i", true); // but no GL4.2
*(void**)&(glGetProgramBinary) = GetProcAddress("glGetProgramBinary", true);
*(void**)&(glViewportIndexedf) = GetProcAddress("glViewportIndexedf", true);
*(void**)&(glViewportIndexedfv) = GetProcAddress("glViewportIndexedfv", true);
*(void**)&(glScissorIndexed) = GetProcAddress("glScissorIndexed", true);
*(void**)&(glScissorIndexedv) = GetProcAddress("glScissorIndexedv", true);
// NO GL4.1
*(void**)&(glDeleteProgram) = GetProcAddress("glDeleteProgram");
*(void**)&(glDeleteShader) = GetProcAddress("glDeleteShader");