From fb133a74874df9c0fdb06ad836172b9f9e6a9869 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 16 Sep 2016 01:14:25 +0200 Subject: [PATCH] Update GLSM --- libretro-common/glsm/glsm.c | 51 ++++++++++++++++++++++++++ libretro-common/include/glsm/glsmsym.h | 9 +++++ 2 files changed, 60 insertions(+) diff --git a/libretro-common/glsm/glsm.c b/libretro-common/glsm/glsm.c index e60ad6a56b..3e63aa26c8 100644 --- a/libretro-common/glsm/glsm.c +++ b/libretro-common/glsm/glsm.c @@ -1848,6 +1848,55 @@ void rglWaitSync(void *sync, GLbitfield flags, uint64_t timeout) #endif } +/* + * + * Core in: + * OpenGL : 4.4 + * OpenGLES : Not available + */ +void rglBufferStorage(GLenum target, GLsizeiptr size, const GLvoid *data, GLbitfield flags) { +#if defined(HAVE_OPENGL) + glBufferStorage(target, size, data, flags); +#endif +} + +/* + * + * Core in: + * OpenGL : 3.0 + * OpenGLES : 3.0 + */ +void rglFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) { +#if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES) && defined(HAVE_OPENGLES3) + glFlushMappedBufferRange(target, offset, length); +#endif +} + +/* + * + * Core in: + * OpenGL : 3.2 + * OpenGLES : 3.0 + */ +GLenum rglClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) { +#if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES) && defined(HAVE_OPENGLES3) + return glClientWaitSync(sync, flags, timeout); +#endif +} + +/* + * + * Core in: + * OpenGL : 3.2 + * OpenGLES : Not available + */ +void rglDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, + GLvoid *indices, GLint basevertex) { +#if defined(HAVE_OPENGL) + glDrawElementsBaseVertex(mode, count, type, indices, basevertex); +#endif +} + /* GLSM-side */ static void glsm_state_setup(void) @@ -2076,6 +2125,8 @@ static bool glsm_state_ctx_destroy(void *data) if (gl_state.bind_textures.ids) free(gl_state.bind_textures.ids); gl_state.bind_textures.ids = NULL; + + return true; } static bool glsm_state_ctx_init(void *data) diff --git a/libretro-common/include/glsm/glsmsym.h b/libretro-common/include/glsm/glsmsym.h index 5596117434..9a1f16810a 100644 --- a/libretro-common/include/glsm/glsmsym.h +++ b/libretro-common/include/glsm/glsmsym.h @@ -161,6 +161,10 @@ RETRO_BEGIN_DECLS #define glClearBufferfi rglClearBufferfi #define glWaitSync rglWaitSync #define glFenceSync rglFenceSync +#define glBufferStorage rglBufferStorage +#define glFlushMappedBufferRange rglFlushMappedBufferRange +#define glClientWaitSync rglClientWaitSync +#define glDrawElementsBaseVertex rglDrawElementsBaseVertex const GLubyte* rglGetStringi(GLenum name, GLuint index); void rglTexBuffer(GLenum target, GLenum internalFormat, GLuint buffer); @@ -397,6 +401,11 @@ void rglTexSubImage2D( GLenum target, void rglDeleteVertexArrays(GLsizei n, const GLuint *arrays); void *rglFenceSync(GLenum condition, GLbitfield flags); void rglWaitSync(void *sync, GLbitfield flags, uint64_t timeout); +void rglBufferStorage(GLenum target, GLsizeiptr size, const GLvoid *data, GLbitfield flags); +void rglFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); +GLenum rglClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); +void rglDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, + GLvoid *indices, GLint basevertex); RETRO_END_DECLS