Refactor GL code

This commit is contained in:
twinaphex 2017-12-04 05:55:18 +01:00
parent 5a341acb5f
commit c869cc5102
4 changed files with 39 additions and 25 deletions

View File

@ -21,6 +21,8 @@
#include "../../config.h" #include "../../config.h"
#endif #endif
#include <glsym/glsym.h>
#include "../drivers/gl_symlinks.h" #include "../drivers/gl_symlinks.h"
#include "../video_coord_array.h" #include "../video_coord_array.h"

View File

@ -40,6 +40,7 @@
#include <gfx/gl_capabilities.h> #include <gfx/gl_capabilities.h>
#include <gfx/video_frame.h> #include <gfx/video_frame.h>
#include <glsym/glsym.h>
#include "../../configuration.h" #include "../../configuration.h"
#include "../../dynamic.h" #include "../../dynamic.h"

View File

@ -21,25 +21,10 @@
#include <boolean.h> #include <boolean.h>
#include <retro_common_api.h> #include <retro_common_api.h>
#include <glsym/glsym.h>
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
#include "config.h" #include "config.h"
#endif #endif
#if defined(HAVE_PSGL)
#define glGenFramebuffers glGenFramebuffersOES
#define glBindFramebuffer glBindFramebufferOES
#define glFramebufferTexture2D glFramebufferTexture2DOES
#define glCheckFramebufferStatus glCheckFramebufferStatusOES
#define glDeleteFramebuffers glDeleteFramebuffersOES
#define glGenRenderbuffers glGenRenderbuffersOES
#define glBindRenderbuffer glBindRenderbufferOES
#define glFramebufferRenderbuffer glFramebufferRenderbufferOES
#define glRenderbufferStorage glRenderbufferStorageOES
#define glDeleteRenderbuffers glDeleteRenderbuffersOES
#endif
#if defined(HAVE_PSGL) #if defined(HAVE_PSGL)
#define RARCH_GL_FRAMEBUFFER GL_FRAMEBUFFER_OES #define RARCH_GL_FRAMEBUFFER GL_FRAMEBUFFER_OES
#define RARCH_GL_FRAMEBUFFER_COMPLETE GL_FRAMEBUFFER_COMPLETE_OES #define RARCH_GL_FRAMEBUFFER_COMPLETE GL_FRAMEBUFFER_COMPLETE_OES

View File

@ -41,6 +41,7 @@
#include <gfx/gl_capabilities.h> #include <gfx/gl_capabilities.h>
#include <gfx/video_frame.h> #include <gfx/video_frame.h>
#include <glsym/glsym.h>
#include "../video_driver.h" #include "../video_driver.h"
#include "../video_shader_parse.h" #include "../video_shader_parse.h"
@ -67,18 +68,43 @@ typedef struct gl2_renderchain
coords[5] = yamt; \ coords[5] = yamt; \
coords[7] = yamt coords[7] = yamt
#if (defined(__MACH__) && (defined(__ppc__) || defined(__ppc64__))) #if defined(HAVE_PSGL)
#define gl2_fb_texture_2d(a, b, c, d, e) glFramebufferTexture2DOES(a, b, c, d, e)
#define gl2_check_fb_status(target) glCheckFramebufferStatusOES(target)
#define gl2_gen_fb(n, ids) glGenFramebuffersOES(n, ids)
#define gl2_delete_fb(n, fb) glDeleteFramebuffersOES(n, fb)
#define gl2_bind_fb(id) glBindFramebufferOES(RARCH_GL_FRAMEBUFFER, id)
#define gl2_gen_rb glGenRenderbuffersOES
#define gl2_bind_rb glBindRenderbufferOES
#define gl2_fb_rb glFramebufferRenderbufferOES
#define gl2_rb_storage glRenderbufferStorageOES
#define gl2_delete_rb glDeleteRenderbuffersOES
#elif (defined(__MACH__) && (defined(__ppc__) || defined(__ppc64__)))
#define gl2_fb_texture_2d(a, b, c, d, e) glFramebufferTexture2DEXT(a, b, c, d, e) #define gl2_fb_texture_2d(a, b, c, d, e) glFramebufferTexture2DEXT(a, b, c, d, e)
#define gl2_check_fb_status(target) glCheckFramebufferStatusEXT(target) #define gl2_check_fb_status(target) glCheckFramebufferStatusEXT(target)
#define gl2_gen_fb(n, ids) glGenFramebuffersEXT(n, ids) #define gl2_gen_fb(n, ids) glGenFramebuffersEXT(n, ids)
#define gl2_delete_fb(n, fb) glDeleteFramebuffersEXT(n, fb) #define gl2_delete_fb(n, fb) glDeleteFramebuffersEXT(n, fb)
#define gl2_bind_fb(id) glBindFramebufferEXT(RARCH_GL_FRAMEBUFFER, id) #define gl2_bind_fb(id) glBindFramebufferEXT(RARCH_GL_FRAMEBUFFER, id)
#define gl2_gen_rb glGenRenderbuffersEXT
#define gl2_bind_rb glBindRenderbufferEXT
#define gl2_fb_rb glFramebufferRenderbufferEXT
#define gl2_rb_storage glRenderbufferStorageEXT
#define gl2_delete_rb glDeleteRenderbuffersEXT
#else #else
#define gl2_fb_texture_2d(a, b, c, d, e) glFramebufferTexture2D(a, b, c, d, e) #define gl2_fb_texture_2d(a, b, c, d, e) glFramebufferTexture2D(a, b, c, d, e)
#define gl2_check_fb_status(target) glCheckFramebufferStatus(target) #define gl2_check_fb_status(target) glCheckFramebufferStatus(target)
#define gl2_gen_fb(n, ids) glGenFramebuffers(n, ids) #define gl2_gen_fb(n, ids) glGenFramebuffers(n, ids)
#define gl2_delete_fb(n, fb) glDeleteFramebuffers(n, fb) #define gl2_delete_fb(n, fb) glDeleteFramebuffers(n, fb)
#define gl2_bind_fb(id) glBindFramebuffer(RARCH_GL_FRAMEBUFFER, id) #define gl2_bind_fb(id) glBindFramebuffer(RARCH_GL_FRAMEBUFFER, id)
#define gl2_gen_rb glGenRenderbuffers
#define gl2_bind_rb glBindRenderbuffer
#define gl2_fb_rb glFramebufferRenderbuffer
#define gl2_rb_storage glRenderbufferStorage
#define gl2_delete_rb glDeleteRenderbuffers
#endif #endif
@ -466,7 +492,7 @@ static void gl2_renderchain_deinit_hw_render(void *data)
if (gl->hw_render_fbo_init) if (gl->hw_render_fbo_init)
gl2_delete_fb(gl->textures, gl->hw_render_fbo); gl2_delete_fb(gl->textures, gl->hw_render_fbo);
if (gl->hw_render_depth_init) if (gl->hw_render_depth_init)
glDeleteRenderbuffers(gl->textures, gl->hw_render_depth); gl2_delete_rb(gl->textures, gl->hw_render_depth);
gl->hw_render_fbo_init = false; gl->hw_render_fbo_init = false;
context_bind_hw_render(false); context_bind_hw_render(false);
@ -896,7 +922,7 @@ static bool gl2_renderchain_init_hw_render(
if (depth) if (depth)
{ {
glGenRenderbuffers(gl->textures, gl->hw_render_depth); gl2_gen_rb(gl->textures, gl->hw_render_depth);
gl->hw_render_depth_init = true; gl->hw_render_depth_init = true;
} }
@ -908,33 +934,33 @@ static bool gl2_renderchain_init_hw_render(
if (depth) if (depth)
{ {
glBindRenderbuffer(RARCH_GL_RENDERBUFFER, gl->hw_render_depth[i]); gl2_bind_rb(RARCH_GL_RENDERBUFFER, gl->hw_render_depth[i]);
glRenderbufferStorage(RARCH_GL_RENDERBUFFER, gl2_rb_storage(RARCH_GL_RENDERBUFFER,
stencil ? RARCH_GL_DEPTH24_STENCIL8 : GL_DEPTH_COMPONENT16, stencil ? RARCH_GL_DEPTH24_STENCIL8 : GL_DEPTH_COMPONENT16,
width, height); width, height);
glBindRenderbuffer(RARCH_GL_RENDERBUFFER, 0); gl2_bind_rb(RARCH_GL_RENDERBUFFER, 0);
if (stencil) if (stencil)
{ {
#if defined(HAVE_OPENGLES2) || defined(HAVE_OPENGLES1) || ((defined(__MACH__) && (defined(__ppc__) || defined(__ppc64__)))) #if defined(HAVE_OPENGLES2) || defined(HAVE_OPENGLES1) || ((defined(__MACH__) && (defined(__ppc__) || defined(__ppc64__))))
/* GLES2 is a bit weird, as always. /* GLES2 is a bit weird, as always.
* There's no GL_DEPTH_STENCIL_ATTACHMENT like in desktop GL. */ * There's no GL_DEPTH_STENCIL_ATTACHMENT like in desktop GL. */
glFramebufferRenderbuffer(RARCH_GL_FRAMEBUFFER, gl2_fb_rb(RARCH_GL_FRAMEBUFFER,
RARCH_GL_DEPTH_ATTACHMENT, RARCH_GL_DEPTH_ATTACHMENT,
RARCH_GL_RENDERBUFFER, gl->hw_render_depth[i]); RARCH_GL_RENDERBUFFER, gl->hw_render_depth[i]);
glFramebufferRenderbuffer(RARCH_GL_FRAMEBUFFER, gl2_fb_rb(RARCH_GL_FRAMEBUFFER,
RARCH_GL_STENCIL_ATTACHMENT, RARCH_GL_STENCIL_ATTACHMENT,
RARCH_GL_RENDERBUFFER, gl->hw_render_depth[i]); RARCH_GL_RENDERBUFFER, gl->hw_render_depth[i]);
#else #else
/* We use ARB FBO extensions, no need to check. */ /* We use ARB FBO extensions, no need to check. */
glFramebufferRenderbuffer(RARCH_GL_FRAMEBUFFER, gl2_fb_rb(RARCH_GL_FRAMEBUFFER,
GL_DEPTH_STENCIL_ATTACHMENT, GL_DEPTH_STENCIL_ATTACHMENT,
RARCH_GL_RENDERBUFFER, gl->hw_render_depth[i]); RARCH_GL_RENDERBUFFER, gl->hw_render_depth[i]);
#endif #endif
} }
else else
{ {
glFramebufferRenderbuffer(RARCH_GL_FRAMEBUFFER, gl2_fb_rb(RARCH_GL_FRAMEBUFFER,
RARCH_GL_DEPTH_ATTACHMENT, RARCH_GL_DEPTH_ATTACHMENT,
RARCH_GL_RENDERBUFFER, gl->hw_render_depth[i]); RARCH_GL_RENDERBUFFER, gl->hw_render_depth[i]);
} }