[PATCH 2/5] wined3d: Add support for ARB_sync.

Henri Verbeet hverbeet at codeweavers.com
Mon Jan 25 12:51:29 CST 2010


---
 dlls/wined3d/directx.c    |    1 +
 dlls/wined3d/wined3d_gl.h |   47 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+), 0 deletions(-)

diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 4cd47b3..688b499 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -70,6 +70,7 @@ static const struct {
     {"GL_ARB_provoking_vertex",             ARB_PROVOKING_VERTEX,           0                           },
     {"GL_ARB_shader_objects",               ARB_SHADER_OBJECTS,             0                           },
     {"GL_ARB_shader_texture_lod",           ARB_SHADER_TEXTURE_LOD,         0                           },
+    {"GL_ARB_sync",                         ARB_SYNC,                       0                           },
     {"GL_ARB_texture_border_clamp",         ARB_TEXTURE_BORDER_CLAMP,       0                           },
     {"GL_ARB_texture_compression",          ARB_TEXTURE_COMPRESSION,        0                           },
     {"GL_ARB_texture_cube_map",             ARB_TEXTURE_CUBE_MAP,           0                           },
diff --git a/dlls/wined3d/wined3d_gl.h b/dlls/wined3d/wined3d_gl.h
index a03e566..aeac47b 100644
--- a/dlls/wined3d/wined3d_gl.h
+++ b/dlls/wined3d/wined3d_gl.h
@@ -75,6 +75,9 @@ typedef double          GLclampd;
 typedef void            GLvoid;
 typedef ptrdiff_t       GLintptr;
 typedef ptrdiff_t       GLsizeiptr;
+typedef INT64           GLint64;
+typedef UINT64          GLuint64;
+typedef struct __GLsync *GLsync;
 
 /* Booleans */
 #define GL_FALSE                                0x0
@@ -1749,6 +1752,7 @@ typedef enum wined3d_gl_extension
     ARB_PROVOKING_VERTEX,
     ARB_SHADER_OBJECTS,
     ARB_SHADER_TEXTURE_LOD,
+    ARB_SYNC,
     ARB_TEXTURE_BORDER_CLAMP,
     ARB_TEXTURE_COMPRESSION,
     ARB_TEXTURE_CUBE_MAP,
@@ -2389,6 +2393,34 @@ typedef unsigned int GLhandleARB;
 #define GL_SHADING_LANGUAGE_VERSION_ARB                     0x8b8c
 #endif
 
+/* GL_ARB_sync */
+#ifndef GL_ARB_sync
+#define GL_ARB_sync 1
+#define GL_MAX_SERVER_WAIT_TIMEOUT              0x9111
+#define GL_OBJECT_TYPE                          0x9112
+#define GL_SYNC_CONDITION                       0x9113
+#define GL_SYNC_STATUS                          0x9114
+#define GL_SYNC_FLAGS                           0x9115
+#define GL_SYNC_FENCE                           0x9116
+#define GL_SYNC_GPU_COMMANDS_COMPLETE           0x9117
+#define GL_UNSIGNALED                           0x9118
+#define GL_SIGNALED                             0x9119
+#define GL_SYNC_FLUSH_COMMANDS_BIT              0x00000001
+#define GL_TIMEOUT_IGNORED                      0xffffffffffffffffULL
+#define GL_ALREADY_SIGNALED                     0x911a
+#define GL_TIMEOUT_EXPIRED                      0x911b
+#define GL_CONDITION_SATISFIED                  0x911c
+#define GL_WAIT_FAILED                          0x911d
+#endif
+typedef GLsync (WINE_GLAPI *PGLFNFENCESYNCPROC)(GLenum condition, GLbitfield flags);
+typedef GLboolean (WINE_GLAPI *PGLFNISSYNCPROC)(GLsync sync);
+typedef GLvoid (WINE_GLAPI *PGLFNDELETESYNCPROC)(GLsync sync);
+typedef GLenum (WINE_GLAPI *PGLFNCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout);
+typedef GLvoid (WINE_GLAPI *PGLFNWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout);
+typedef GLvoid (WINE_GLAPI *PGLFNGETINTEGER64VPROC)(GLenum pname, GLint64 *params);
+typedef GLvoid (WINE_GLAPI *PGLFNGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei bufsize,
+        GLsizei *length, GLint *values);
+
 /* GL_ARB_texture_border_clamp */
 #ifndef GL_ARB_texture_border_clamp
 #define GL_ARB_texture_border_clamp 1
@@ -4032,6 +4064,21 @@ typedef BOOL (WINAPI *WINED3D_PFNWGLSETPIXELFORMATWINE)(HDC hdc, int iPixelForma
             glBindAttribLocationARB,                    ARB_SHADER_OBJECTS,             NULL) \
     USE_GL_FUNC(WINED3D_PFNGLGETATTRIBLOCATIONARBPROC, \
             glGetAttribLocationARB,                     ARB_SHADER_OBJECTS,             NULL) \
+    /* GL_ARB_sync */ \
+    USE_GL_FUNC(PGLFNFENCESYNCPROC, \
+            glFenceSync,                                ARB_SYNC,                       NULL) \
+    USE_GL_FUNC(PGLFNISSYNCPROC, \
+            glIsSync,                                   ARB_SYNC,                       NULL) \
+    USE_GL_FUNC(PGLFNDELETESYNCPROC, \
+            glDeleteSync,                               ARB_SYNC,                       NULL) \
+    USE_GL_FUNC(PGLFNCLIENTWAITSYNCPROC, \
+            glClientWaitSync,                           ARB_SYNC,                       NULL) \
+    USE_GL_FUNC(PGLFNWAITSYNCPROC, \
+            glWaitSync,                                 ARB_SYNC,                       NULL) \
+    USE_GL_FUNC(PGLFNGETINTEGER64VPROC, \
+            glGetInteger64v,                            ARB_SYNC,                       NULL) \
+    USE_GL_FUNC(PGLFNGETSYNCIVPROC, \
+            glGetSynciv,                                ARB_SYNC,                       NULL) \
     /* GL_ARB_texture_compression */ \
     USE_GL_FUNC(PGLFNCOMPRESSEDTEXIMAGE2DPROC, \
             glCompressedTexImage2DARB,                  ARB_TEXTURE_COMPRESSION,        NULL) \
-- 
1.6.4.4




More information about the wine-patches mailing list