[vlc-devel] [PATCH v4 17/20] opengl: add support for renderbuffers API

Romain Vimont rom1v at videolabs.io
Tue Jul 7 12:34:00 CEST 2020


Co-authored-by: Alexandre Janniaux <ajanni at videolabs.io>
---
 modules/video_output/opengl/gl_api.c    |  6 ++++++
 modules/video_output/opengl/gl_common.h | 17 +++++++++++++++++
 2 files changed, 23 insertions(+)

diff --git a/modules/video_output/opengl/gl_api.c b/modules/video_output/opengl/gl_api.c
index bdfd9c030b..68c42cc6d4 100644
--- a/modules/video_output/opengl/gl_api.c
+++ b/modules/video_output/opengl/gl_api.c
@@ -124,6 +124,12 @@ vlc_gl_api_Init(struct vlc_gl_api *api, vlc_gl_t *gl)
     GET_PROC_ADDR_OPTIONAL(BindFramebuffer);
     GET_PROC_ADDR_OPTIONAL(FramebufferTexture2D);
     GET_PROC_ADDR_OPTIONAL(CheckFramebufferStatus);
+    GET_PROC_ADDR_OPTIONAL(GenRenderbuffers);
+    GET_PROC_ADDR_OPTIONAL(DeleteRenderbuffers);
+    GET_PROC_ADDR_OPTIONAL(BindRenderbuffer);
+    GET_PROC_ADDR_OPTIONAL(RenderbufferStorageMultisample);
+    GET_PROC_ADDR_OPTIONAL(FramebufferRenderbuffer);
+    GET_PROC_ADDR_OPTIONAL(BlitFramebuffer);
 
     GET_PROC_ADDR_OPTIONAL(BufferSubData);
     GET_PROC_ADDR_OPTIONAL(BufferStorage);
diff --git a/modules/video_output/opengl/gl_common.h b/modules/video_output/opengl/gl_common.h
index a1dd060dff..81ec807400 100644
--- a/modules/video_output/opengl/gl_common.h
+++ b/modules/video_output/opengl/gl_common.h
@@ -72,6 +72,9 @@
 #ifndef GL_RG16
 # define GL_RG16 0x822C
 #endif
+#ifndef GL_RGBA8
+# define GL_RGBA8 0x8058
+#endif
 #ifndef GL_LUMINANCE16
 # define GL_LUMINANCE16 0x8042
 #endif
@@ -208,6 +211,14 @@ typedef void (APIENTRY *PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GL
 typedef void (APIENTRY *PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
 typedef void (APIENTRY *PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
 typedef void (APIENTRY *PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRY *PFNGLGENRENDERBUFFERSPROC) (GLsizei count, GLuint *renderbuffers);
+typedef void (APIENTRY *PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);
+typedef void (APIENTRY *PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
+typedef void (APIENTRY *PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRY *PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (APIENTRY *PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
+                                                   GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
+                                                   GLbitfield mask, GLenum filter);
 
 /* The following are defined in glext.h but not for GLES2 or on Apple systems */
 #if defined(USE_OPENGL_ES2) || defined(__APPLE__)
@@ -353,6 +364,12 @@ typedef struct {
     PFNGLBINDFRAMEBUFFERPROC        BindFramebuffer;
     PFNGLFRAMEBUFFERTEXTURE2DPROC   FramebufferTexture2D;
     PFNGLCHECKFRAMEBUFFERSTATUSPROC CheckFramebufferStatus;
+    PFNGLGENRENDERBUFFERSPROC       GenRenderbuffers;
+    PFNGLDELETERENDERBUFFERSPROC    DeleteRenderbuffers;
+    PFNGLBINDRENDERBUFFERPROC       BindRenderbuffer;
+    PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC RenderbufferStorageMultisample;
+    PFNGLFRAMEBUFFERRENDERBUFFERPROC FramebufferRenderbuffer;
+    PFNGLBLITFRAMEBUFFERPROC        BlitFramebuffer;
 
     /* Commands used for PBO and/or Persistent mapping */
     PFNGLBUFFERSUBDATAPROC          BufferSubData; /* can be NULL */
-- 
2.27.0



More information about the vlc-devel mailing list