mirror of
https://github.com/libretro/RetroArch.git
synced 2024-11-24 16:39:43 +00:00
Add GL sync support to GLES2.
This commit is contained in:
parent
99af0e737f
commit
c1bbb6bf89
2
Makefile
2
Makefile
@ -221,12 +221,12 @@ ifeq ($(HAVE_OPENGL), 1)
|
||||
endif
|
||||
endif
|
||||
|
||||
DEFINES += -DHAVE_GL_SYNC
|
||||
ifeq ($(HAVE_GLES), 1)
|
||||
LIBS += -lGLESv2
|
||||
DEFINES += -DHAVE_OPENGLES -DHAVE_OPENGLES2
|
||||
OBJ += gfx/glsym/glsym_es2.o
|
||||
else
|
||||
DEFINES += -DHAVE_GL_SYNC
|
||||
OBJ += gfx/glsym/glsym_gl.o
|
||||
ifeq ($(OSX), 1)
|
||||
LIBS += -framework OpenGL
|
||||
|
11
gfx/gl.c
11
gfx/gl.c
@ -142,9 +142,20 @@ static bool check_eglimage_proc(void)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_GL_SYNC
|
||||
#ifdef HAVE_OPENGLES2
|
||||
#define glFenceSync glFenceSyncAPPLE
|
||||
#define glDeleteSync glDeleteSyncAPPLE
|
||||
#define glClientWaitSync glClientWaitSyncAPPLE
|
||||
#define GL_SYNC_GPU_COMMANDS_COMPLETE GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE
|
||||
#define GL_SYNC_FLUSH_COMMANDS_BIT GL_SYNC_FLUSH_COMMANDS_BIT_APPLE
|
||||
#endif
|
||||
static bool check_sync_proc(gl_t *gl)
|
||||
{
|
||||
#ifdef HAVE_OPENGLES
|
||||
if (!gl_query_extension(gl, "APPLE_sync"))
|
||||
#else
|
||||
if (!gl_query_extension(gl, "ARB_sync"))
|
||||
#endif
|
||||
return false;
|
||||
|
||||
return glFenceSync && glDeleteSync && glClientWaitSync;
|
||||
|
@ -25,7 +25,7 @@ import sys
|
||||
import os
|
||||
import re
|
||||
|
||||
banned_ext = [ 'AMD', 'APPLE', 'EXT', 'NV', 'NVX', 'ATI', '3DLABS', 'SUN', 'SGI', 'SGIX', 'SGIS', 'INTEL', '3DFX', 'IBM', 'MESA', 'GREMEDY', 'OML', 'PGI', 'I3D', 'INGL', 'MTX', 'QCOM', 'IMG', 'ANGLE', 'SUNX', 'INGR' ]
|
||||
banned_ext = [ 'AMD', 'EXT', 'NV', 'NVX', 'ATI', '3DLABS', 'SUN', 'SGI', 'SGIX', 'SGIS', 'INTEL', '3DFX', 'IBM', 'MESA', 'GREMEDY', 'OML', 'PGI', 'I3D', 'INGL', 'MTX', 'QCOM', 'IMG', 'ANGLE', 'SUNX', 'INGR' ]
|
||||
|
||||
def noext(sym):
|
||||
for ext in banned_ext:
|
||||
|
@ -30,6 +30,16 @@ const struct rglgen_sym_map rglgen_symbol_map[] = {
|
||||
SYM(ObjectPtrLabel),
|
||||
SYM(GetObjectPtrLabel),
|
||||
SYM(GetPointerv),
|
||||
SYM(CopyTextureLevelsAPPLE),
|
||||
SYM(RenderbufferStorageMultisampleAPPLE),
|
||||
SYM(ResolveMultisampleFramebufferAPPLE),
|
||||
SYM(FenceSyncAPPLE),
|
||||
SYM(IsSyncAPPLE),
|
||||
SYM(DeleteSyncAPPLE),
|
||||
SYM(ClientWaitSyncAPPLE),
|
||||
SYM(WaitSyncAPPLE),
|
||||
SYM(GetInteger64vAPPLE),
|
||||
SYM(GetSyncivAPPLE),
|
||||
|
||||
{ NULL, NULL },
|
||||
};
|
||||
@ -61,4 +71,14 @@ RGLSYMGLGETOBJECTLABELPROC __rglgen_glGetObjectLabel;
|
||||
RGLSYMGLOBJECTPTRLABELPROC __rglgen_glObjectPtrLabel;
|
||||
RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel;
|
||||
RGLSYMGLGETPOINTERVPROC __rglgen_glGetPointerv;
|
||||
RGLSYMGLCOPYTEXTURELEVELSAPPLEPROC __rglgen_glCopyTextureLevelsAPPLE;
|
||||
RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC __rglgen_glRenderbufferStorageMultisampleAPPLE;
|
||||
RGLSYMGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC __rglgen_glResolveMultisampleFramebufferAPPLE;
|
||||
RGLSYMGLFENCESYNCAPPLEPROC __rglgen_glFenceSyncAPPLE;
|
||||
RGLSYMGLISSYNCAPPLEPROC __rglgen_glIsSyncAPPLE;
|
||||
RGLSYMGLDELETESYNCAPPLEPROC __rglgen_glDeleteSyncAPPLE;
|
||||
RGLSYMGLCLIENTWAITSYNCAPPLEPROC __rglgen_glClientWaitSyncAPPLE;
|
||||
RGLSYMGLWAITSYNCAPPLEPROC __rglgen_glWaitSyncAPPLE;
|
||||
RGLSYMGLGETINTEGER64VAPPLEPROC __rglgen_glGetInteger64vAPPLE;
|
||||
RGLSYMGLGETSYNCIVAPPLEPROC __rglgen_glGetSyncivAPPLE;
|
||||
|
||||
|
@ -49,6 +49,16 @@ typedef void (GL_APIENTRYP RGLSYMGLGETOBJECTLABELPROC) (GLenum identifier, GLuin
|
||||
typedef void (GL_APIENTRYP RGLSYMGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label);
|
||||
typedef void (GL_APIENTRYP RGLSYMGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
|
||||
typedef void (GL_APIENTRYP RGLSYMGLGETPOINTERVPROC) (GLenum pname, void **params);
|
||||
typedef void (GL_APIENTRYP RGLSYMGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount);
|
||||
typedef void (GL_APIENTRYP RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
typedef void (GL_APIENTRYP RGLSYMGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void);
|
||||
typedef GLsync (GL_APIENTRYP RGLSYMGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags);
|
||||
typedef GLboolean (GL_APIENTRYP RGLSYMGLISSYNCAPPLEPROC) (GLsync sync);
|
||||
typedef void (GL_APIENTRYP RGLSYMGLDELETESYNCAPPLEPROC) (GLsync sync);
|
||||
typedef GLenum (GL_APIENTRYP RGLSYMGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
|
||||
typedef void (GL_APIENTRYP RGLSYMGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
|
||||
typedef void (GL_APIENTRYP RGLSYMGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params);
|
||||
typedef void (GL_APIENTRYP RGLSYMGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
|
||||
|
||||
#define glEGLImageTargetTexture2DOES __rglgen_glEGLImageTargetTexture2DOES
|
||||
#define glEGLImageTargetRenderbufferStorageOES __rglgen_glEGLImageTargetRenderbufferStorageOES
|
||||
@ -78,6 +88,16 @@ typedef void (GL_APIENTRYP RGLSYMGLGETPOINTERVPROC) (GLenum pname, void **params
|
||||
#define glObjectPtrLabel __rglgen_glObjectPtrLabel
|
||||
#define glGetObjectPtrLabel __rglgen_glGetObjectPtrLabel
|
||||
#define glGetPointerv __rglgen_glGetPointerv
|
||||
#define glCopyTextureLevelsAPPLE __rglgen_glCopyTextureLevelsAPPLE
|
||||
#define glRenderbufferStorageMultisampleAPPLE __rglgen_glRenderbufferStorageMultisampleAPPLE
|
||||
#define glResolveMultisampleFramebufferAPPLE __rglgen_glResolveMultisampleFramebufferAPPLE
|
||||
#define glFenceSyncAPPLE __rglgen_glFenceSyncAPPLE
|
||||
#define glIsSyncAPPLE __rglgen_glIsSyncAPPLE
|
||||
#define glDeleteSyncAPPLE __rglgen_glDeleteSyncAPPLE
|
||||
#define glClientWaitSyncAPPLE __rglgen_glClientWaitSyncAPPLE
|
||||
#define glWaitSyncAPPLE __rglgen_glWaitSyncAPPLE
|
||||
#define glGetInteger64vAPPLE __rglgen_glGetInteger64vAPPLE
|
||||
#define glGetSyncivAPPLE __rglgen_glGetSyncivAPPLE
|
||||
|
||||
extern RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC __rglgen_glEGLImageTargetTexture2DOES;
|
||||
extern RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC __rglgen_glEGLImageTargetRenderbufferStorageOES;
|
||||
@ -107,6 +127,16 @@ extern RGLSYMGLGETOBJECTLABELPROC __rglgen_glGetObjectLabel;
|
||||
extern RGLSYMGLOBJECTPTRLABELPROC __rglgen_glObjectPtrLabel;
|
||||
extern RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel;
|
||||
extern RGLSYMGLGETPOINTERVPROC __rglgen_glGetPointerv;
|
||||
extern RGLSYMGLCOPYTEXTURELEVELSAPPLEPROC __rglgen_glCopyTextureLevelsAPPLE;
|
||||
extern RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC __rglgen_glRenderbufferStorageMultisampleAPPLE;
|
||||
extern RGLSYMGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC __rglgen_glResolveMultisampleFramebufferAPPLE;
|
||||
extern RGLSYMGLFENCESYNCAPPLEPROC __rglgen_glFenceSyncAPPLE;
|
||||
extern RGLSYMGLISSYNCAPPLEPROC __rglgen_glIsSyncAPPLE;
|
||||
extern RGLSYMGLDELETESYNCAPPLEPROC __rglgen_glDeleteSyncAPPLE;
|
||||
extern RGLSYMGLCLIENTWAITSYNCAPPLEPROC __rglgen_glClientWaitSyncAPPLE;
|
||||
extern RGLSYMGLWAITSYNCAPPLEPROC __rglgen_glWaitSyncAPPLE;
|
||||
extern RGLSYMGLGETINTEGER64VAPPLEPROC __rglgen_glGetInteger64vAPPLE;
|
||||
extern RGLSYMGLGETSYNCIVAPPLEPROC __rglgen_glGetSyncivAPPLE;
|
||||
|
||||
struct rglgen_sym_map { const char *sym; void *ptr; };
|
||||
extern const struct rglgen_sym_map rglgen_symbol_map[];
|
||||
|
Loading…
Reference in New Issue
Block a user