vlc | branch: master | Thomas Guillem <[email protected]> | Thu Aug 31 11:25:39 2017 +0200| [b1f85289a6b0c07874cfe64daae6b75cbcc6b972] | committer: Thomas Guillem
gl: fix core functions loading on Windows Don't use vlc_gl_GetProcAddress() to fetch GL core functions. It was working on other OSses than Windows since dlsym() was used. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b1f85289a6b0c07874cfe64daae6b75cbcc6b972 --- modules/video_output/opengl/converter.h | 71 +++++++++++++++++-------------- modules/video_output/opengl/vout_helper.c | 36 ++++++++-------- 2 files changed, 58 insertions(+), 49 deletions(-) diff --git a/modules/video_output/opengl/converter.h b/modules/video_output/opengl/converter.h index 7ca1a2e262..5f4d0493d8 100644 --- a/modules/video_output/opengl/converter.h +++ b/modules/video_output/opengl/converter.h @@ -99,53 +99,60 @@ typedef GLenum (*PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint * Structure containing function pointers to shaders commands */ typedef struct { - /* Utils commands */ + /* + * GL / GLES core functions + */ PFNGLGETERRORPROC GetError; PFNGLGETSTRINGPROC GetString; PFNGLGETINTEGERVPROC GetIntegerv; + PFNGLBINDTEXTUREPROC BindTexture; + PFNGLTEXPARAMETERIPROC TexParameteri; + PFNGLTEXPARAMETERFPROC TexParameterf; + PFNGLPIXELSTOREIPROC PixelStorei; + PFNGLGENTEXTURESPROC GenTextures; + PFNGLDELETETEXTURESPROC DeleteTextures; + PFNGLTEXIMAGE2DPROC TexImage2D; + PFNGLTEXSUBIMAGE2DPROC TexSubImage2D; + + /* GL only core functions: NULL for GLES2 */ + PFNGLGETTEXLEVELPARAMETERIVPROC GetTexLevelParameteriv; /* Can be NULL */ + + /* + * GL / GLES extensions + */ + + /* Shader commands */ + PFNGLCREATESHADERPROC CreateShader; + PFNGLSHADERSOURCEPROC ShaderSource; + PFNGLCOMPILESHADERPROC CompileShader; + PFNGLATTACHSHADERPROC AttachShader; + PFNGLDELETESHADERPROC DeleteShader; - /* Shader variables commands*/ + /* Shader log commands */ + PFNGLGETPROGRAMIVPROC GetProgramiv; + PFNGLGETSHADERIVPROC GetShaderiv; + PFNGLGETPROGRAMINFOLOGPROC GetProgramInfoLog; + PFNGLGETSHADERINFOLOGPROC GetShaderInfoLog; + + /* Shader variables commands */ PFNGLGETUNIFORMLOCATIONPROC GetUniformLocation; PFNGLGETATTRIBLOCATIONPROC GetAttribLocation; PFNGLVERTEXATTRIBPOINTERPROC VertexAttribPointer; PFNGLENABLEVERTEXATTRIBARRAYPROC EnableVertexAttribArray; + PFNGLUNIFORMMATRIX4FVPROC UniformMatrix4fv; + PFNGLUNIFORM4FVPROC Uniform4fv; + PFNGLUNIFORM4FPROC Uniform4f; + PFNGLUNIFORM2FPROC Uniform2f; + PFNGLUNIFORM1IPROC Uniform1i; - PFNGLUNIFORMMATRIX4FVPROC UniformMatrix4fv; - PFNGLUNIFORM4FVPROC Uniform4fv; - PFNGLUNIFORM4FPROC Uniform4f; - PFNGLUNIFORM2FPROC Uniform2f; - PFNGLUNIFORM1IPROC Uniform1i; - - /* Shader command */ - PFNGLCREATESHADERPROC CreateShader; - PFNGLSHADERSOURCEPROC ShaderSource; - PFNGLCOMPILESHADERPROC CompileShader; - PFNGLDELETESHADERPROC DeleteShader; - + /* Program commands */ PFNGLCREATEPROGRAMPROC CreateProgram; PFNGLLINKPROGRAMPROC LinkProgram; PFNGLUSEPROGRAMPROC UseProgram; PFNGLDELETEPROGRAMPROC DeleteProgram; - PFNGLATTACHSHADERPROC AttachShader; - - /* Shader log commands */ - PFNGLGETPROGRAMIVPROC GetProgramiv; - PFNGLGETPROGRAMINFOLOGPROC GetProgramInfoLog; - PFNGLGETSHADERIVPROC GetShaderiv; - PFNGLGETSHADERINFOLOGPROC GetShaderInfoLog; - /* Texture commands */ - PFNGLACTIVETEXTUREPROC ActiveTexture; - PFNGLBINDTEXTUREPROC BindTexture; - PFNGLTEXPARAMETERIPROC TexParameteri; - PFNGLTEXPARAMETERFPROC TexParameterf; - PFNGLGETTEXLEVELPARAMETERIVPROC GetTexLevelParameteriv; /* OpenGL only */ - PFNGLPIXELSTOREIPROC PixelStorei; - PFNGLGENTEXTURESPROC GenTextures; - PFNGLDELETETEXTURESPROC DeleteTextures; - PFNGLTEXIMAGE2DPROC TexImage2D; - PFNGLTEXSUBIMAGE2DPROC TexSubImage2D; + PFNGLACTIVETEXTUREPROC ActiveTexture; /* Buffers commands */ PFNGLGENBUFFERSPROC GenBuffers; diff --git a/modules/video_output/opengl/vout_helper.c b/modules/video_output/opengl/vout_helper.c index 9ae57c3457..331f1879d4 100644 --- a/modules/video_output/opengl/vout_helper.c +++ b/modules/video_output/opengl/vout_helper.c @@ -679,6 +679,7 @@ vout_display_opengl_t *vout_display_opengl_New(video_format_t *fmt, } #endif +#define GET_PROC_ADDR_CORE(name) vgl->vt.name = gl##name #define GET_PROC_ADDR_EXT(name, critical) do { \ vgl->vt.name = vlc_gl_GetProcAddress(gl, "gl"#name); \ if (vgl->vt.name == NULL && critical) { \ @@ -688,29 +689,39 @@ vout_display_opengl_t *vout_display_opengl_New(video_format_t *fmt, } \ } while(0) #if defined(USE_OPENGL_ES2) -#define GET_PROC_ADDR(name) vgl->vt.name = gl##name -#define GET_PROC_ADDR_GL(name) vgl->vt.name = NULL /* GL only functions (not GLES) */ +#define GET_PROC_ADDR(name) GET_PROC_ADDR_CORE(name) +#define GET_PROC_ADDR_CORE_GL(name) vgl->vt.name = NULL /* GL only functions (not GLES) */ #else #define GET_PROC_ADDR(name) GET_PROC_ADDR_EXT(name, true) -#define GET_PROC_ADDR_GL(name) GET_PROC_ADDR(name) +#define GET_PROC_ADDR_CORE_GL(name) GET_PROC_ADDR_CORE(name) #endif #define GET_PROC_ADDR_OPTIONAL(name) GET_PROC_ADDR_EXT(name, false) /* GL 3 or more */ - GET_PROC_ADDR(GetError); - GET_PROC_ADDR(GetString); - GET_PROC_ADDR(GetIntegerv); + + GET_PROC_ADDR_CORE(GetError); + GET_PROC_ADDR_CORE(GetString); + GET_PROC_ADDR_CORE(GetIntegerv); + GET_PROC_ADDR_CORE(BindTexture); + GET_PROC_ADDR_CORE(TexParameteri); + GET_PROC_ADDR_CORE(TexParameterf); + GET_PROC_ADDR_CORE(PixelStorei); + GET_PROC_ADDR_CORE(GenTextures); + GET_PROC_ADDR_CORE(DeleteTextures); + GET_PROC_ADDR_CORE(TexImage2D); + GET_PROC_ADDR_CORE(TexSubImage2D); + + GET_PROC_ADDR_CORE_GL(GetTexLevelParameteriv); GET_PROC_ADDR(CreateShader); GET_PROC_ADDR(ShaderSource); GET_PROC_ADDR(CompileShader); GET_PROC_ADDR(AttachShader); + GET_PROC_ADDR(DeleteShader); GET_PROC_ADDR(GetProgramiv); GET_PROC_ADDR(GetShaderiv); GET_PROC_ADDR(GetProgramInfoLog); GET_PROC_ADDR(GetShaderInfoLog); - GET_PROC_ADDR(DeleteShader); - GET_PROC_ADDR(GetUniformLocation); GET_PROC_ADDR(GetAttribLocation); GET_PROC_ADDR(VertexAttribPointer); @@ -727,15 +738,6 @@ vout_display_opengl_t *vout_display_opengl_New(video_format_t *fmt, GET_PROC_ADDR(DeleteProgram); GET_PROC_ADDR(ActiveTexture); - GET_PROC_ADDR(BindTexture); - GET_PROC_ADDR(TexParameteri); - GET_PROC_ADDR(TexParameterf); - GET_PROC_ADDR_GL(GetTexLevelParameteriv); - GET_PROC_ADDR(PixelStorei); - GET_PROC_ADDR(GenTextures); - GET_PROC_ADDR(DeleteTextures); - GET_PROC_ADDR(TexImage2D); - GET_PROC_ADDR(TexSubImage2D); GET_PROC_ADDR(GenBuffers); GET_PROC_ADDR(BindBuffer); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
