mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 739421 - Implement/expose ARB_sync in GLContext - r=bjacob
This commit is contained in:
parent
58f7ff90d4
commit
7d33dde9d8
@ -107,6 +107,7 @@ static const char *sExtensionNames[] = {
|
||||
"GL_OES_rgb8_rgba8",
|
||||
"GL_ARB_robustness",
|
||||
"GL_EXT_robustness",
|
||||
"GL_ARB_sync",
|
||||
NULL
|
||||
};
|
||||
|
||||
@ -450,6 +451,32 @@ GLContext::InitWithPrefix(const char *prefix, bool trygl)
|
||||
mSymbols.fRenderbufferStorageMultisample = nsnull;
|
||||
}
|
||||
}
|
||||
|
||||
if (IsExtensionSupported(ARB_sync)) {
|
||||
SymLoadStruct syncSymbols[] = {
|
||||
{ (PRFuncPtr*) &mSymbols.fFenceSync, { "FenceSync", nsnull } },
|
||||
{ (PRFuncPtr*) &mSymbols.fIsSync, { "IsSync", nsnull } },
|
||||
{ (PRFuncPtr*) &mSymbols.fDeleteSync, { "DeleteSync", nsnull } },
|
||||
{ (PRFuncPtr*) &mSymbols.fClientWaitSync, { "ClientWaitSync", nsnull } },
|
||||
{ (PRFuncPtr*) &mSymbols.fWaitSync, { "WaitSync", nsnull } },
|
||||
{ (PRFuncPtr*) &mSymbols.fGetInteger64v, { "GetInteger64v", nsnull } },
|
||||
{ (PRFuncPtr*) &mSymbols.fGetSynciv, { "GetSynciv", nsnull } },
|
||||
{ nsnull, { nsnull } },
|
||||
};
|
||||
|
||||
if (!LoadSymbols(&syncSymbols[0], trygl, prefix)) {
|
||||
NS_ERROR("GL supports ARB_sync without supplying its functions.");
|
||||
|
||||
MarkExtensionUnsupported(ARB_sync);
|
||||
mSymbols.fFenceSync = nsnull;
|
||||
mSymbols.fIsSync = nsnull;
|
||||
mSymbols.fDeleteSync = nsnull;
|
||||
mSymbols.fClientWaitSync = nsnull;
|
||||
mSymbols.fWaitSync = nsnull;
|
||||
mSymbols.fGetInteger64v = nsnull;
|
||||
mSymbols.fGetSynciv = nsnull;
|
||||
}
|
||||
}
|
||||
|
||||
// Load developer symbols, don't fail if we can't find them.
|
||||
SymLoadStruct auxSymbols[] = {
|
||||
|
@ -1500,6 +1500,7 @@ public:
|
||||
OES_rgb8_rgba8,
|
||||
ARB_robustness,
|
||||
EXT_robustness,
|
||||
ARB_sync,
|
||||
Extensions_Max
|
||||
};
|
||||
|
||||
@ -2898,6 +2899,51 @@ public:
|
||||
return ret;
|
||||
}
|
||||
|
||||
GLsync GLAPIENTRY fFenceSync(GLenum condition, GLbitfield flags) {
|
||||
BEFORE_GL_CALL;
|
||||
GLsync ret = mSymbols.fFenceSync(condition, flags);
|
||||
AFTER_GL_CALL;
|
||||
return ret;
|
||||
}
|
||||
|
||||
realGLboolean GLAPIENTRY fIsSync(GLsync sync) {
|
||||
BEFORE_GL_CALL;
|
||||
realGLboolean ret = mSymbols.fIsSync(sync);
|
||||
AFTER_GL_CALL;
|
||||
return ret;
|
||||
}
|
||||
|
||||
void GLAPIENTRY fDeleteSync(GLsync sync) {
|
||||
BEFORE_GL_CALL;
|
||||
mSymbols.fDeleteSync(sync);
|
||||
AFTER_GL_CALL;
|
||||
}
|
||||
|
||||
GLenum GLAPIENTRY fClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) {
|
||||
BEFORE_GL_CALL;
|
||||
GLenum ret = mSymbols.fClientWaitSync(sync, flags, timeout);
|
||||
AFTER_GL_CALL;
|
||||
return ret;
|
||||
}
|
||||
|
||||
void GLAPIENTRY fWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) {
|
||||
BEFORE_GL_CALL;
|
||||
mSymbols.fWaitSync(sync, flags, timeout);
|
||||
AFTER_GL_CALL;
|
||||
}
|
||||
|
||||
void GLAPIENTRY fGetInteger64v(GLenum pname, GLint64 *params) {
|
||||
BEFORE_GL_CALL;
|
||||
mSymbols.fGetInteger64v(pname, params);
|
||||
AFTER_GL_CALL;
|
||||
}
|
||||
|
||||
void GLAPIENTRY fGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) {
|
||||
BEFORE_GL_CALL;
|
||||
mSymbols.fGetSynciv(sync, pname, bufSize, length, values);
|
||||
AFTER_GL_CALL;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
void THEBES_API CreatedProgram(GLContext *aOrigin, GLuint aName);
|
||||
void THEBES_API CreatedShader(GLContext *aOrigin, GLuint aName);
|
||||
|
@ -40,6 +40,8 @@
|
||||
#ifndef GLCONTEXTSYMBOLS_H_
|
||||
#define GLCONTEXTSYMBOLS_H_
|
||||
|
||||
#include "GLDefs.h"
|
||||
|
||||
/*
|
||||
* This file should only be included by GLContext.h, and should be
|
||||
* autogenerated in the future.
|
||||
@ -381,6 +383,24 @@ struct GLContextSymbols
|
||||
|
||||
typedef GLenum (GLAPIENTRY * PFNGLGETGRAPHICSRESETSTATUS) (void);
|
||||
PFNGLGETGRAPHICSRESETSTATUS fGetGraphicsResetStatus;
|
||||
|
||||
/*
|
||||
* ARB_sync extension
|
||||
*/
|
||||
typedef GLsync (GLAPIENTRY * PFNGLFENCESYNC) (GLenum condition, GLbitfield flags);
|
||||
PFNGLFENCESYNC fFenceSync;
|
||||
typedef realGLboolean (GLAPIENTRY * PFNGLISSYNC) (GLsync sync);
|
||||
PFNGLISSYNC fIsSync;
|
||||
typedef void (GLAPIENTRY * PFNGLDELETESYNC) (GLsync sync);
|
||||
PFNGLDELETESYNC fDeleteSync;
|
||||
typedef GLenum (GLAPIENTRY * PFNGLCLIENTWAITSYNC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
|
||||
PFNGLCLIENTWAITSYNC fClientWaitSync;
|
||||
typedef void (GLAPIENTRY * PFNGLWAITSYNC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
|
||||
PFNGLWAITSYNC fWaitSync;
|
||||
typedef void (GLAPIENTRY * PFNGLGETINTEGER64V) (GLenum pname, GLint64 *params);
|
||||
PFNGLGETINTEGER64V fGetInteger64v;
|
||||
typedef void (GLAPIENTRY * PFNGLGETSYNCIV) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
|
||||
PFNGLGETSYNCIV fGetSynciv;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -37,7 +37,6 @@
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#if !defined(LOCALGL_H_)
|
||||
|
||||
#define LOCALGL_H_
|
||||
|
||||
#if !defined(__gltypes_h_) && !defined(__gl_h_)
|
||||
@ -72,6 +71,14 @@ typedef ptrdiff_t GLintptr;
|
||||
|
||||
#endif /* #if !defined(__gltypes_h_) && !defined(__gl_h_) */
|
||||
|
||||
#include "mozilla/StandardInteger.h"
|
||||
|
||||
// ARB_sync
|
||||
typedef struct __GLsync *GLsync;
|
||||
typedef int64_t GLint64;
|
||||
typedef uint64_t GLuint64;
|
||||
|
||||
|
||||
#ifndef GLAPIENTRY
|
||||
# ifdef WIN32
|
||||
# define GLAPIENTRY APIENTRY
|
||||
@ -3032,6 +3039,23 @@ typedef ptrdiff_t GLintptr;
|
||||
#define LOCAL_GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC
|
||||
#define LOCAL_GL_WIN_swap_hint 1
|
||||
|
||||
// ARB_sync
|
||||
#define LOCAL_GL_MAX_SERVER_WAIT_TIMEOUT 0x9111
|
||||
#define LOCAL_GL_OBJECT_TYPE 0x9112
|
||||
#define LOCAL_GL_SYNC_CONDITION 0x9113
|
||||
#define LOCAL_GL_SYNC_STATUS 0x9114
|
||||
#define LOCAL_GL_SYNC_FLAGS 0x9115
|
||||
#define LOCAL_GL_SYNC_FENCE 0x9116
|
||||
#define LOCAL_GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117
|
||||
#define LOCAL_GL_UNSIGNALED 0x9118
|
||||
#define LOCAL_GL_SIGNALED 0x9119
|
||||
#define LOCAL_GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001
|
||||
#define LOCAL_GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull
|
||||
#define LOCAL_GL_ALREADY_SIGNALED 0x911A
|
||||
#define LOCAL_GL_TIMEOUT_EXPIRED 0x911B
|
||||
#define LOCAL_GL_CONDITION_SATISFIED 0x911C
|
||||
#define LOCAL_GL_WAIT_FAILED 0x911D
|
||||
|
||||
#define LOCAL_GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
|
||||
#define LOCAL_GL_MAX_VARYING_VECTORS 0x8DFC
|
||||
#define LOCAL_GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
|
||||
|
Loading…
Reference in New Issue
Block a user