Stefan Dösinger : wined3d: Add GL_ARB_map_buffer_range .

Alexandre Julliard julliard at winehq.org
Tue Feb 2 10:45:30 CST 2010


Module: wine
Branch: master
Commit: f6bb86e196a8c72a70245cbe7d6ab3ddf697a07c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f6bb86e196a8c72a70245cbe7d6ab3ddf697a07c

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Thu Jan 28 20:50:55 2010 +0100

wined3d: Add GL_ARB_map_buffer_range.

---

 dlls/wined3d/directx.c    |    7 +++++++
 dlls/wined3d/wined3d_gl.h |   19 +++++++++++++++++++
 2 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index b708b33..7e98292 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -63,6 +63,7 @@ static const struct {
     {"GL_ARB_half_float_pixel",             ARB_HALF_FLOAT_PIXEL,           0                           },
     {"GL_ARB_half_float_vertex",            ARB_HALF_FLOAT_VERTEX,          0                           },
     {"GL_ARB_imaging",                      ARB_IMAGING,                    0                           },
+    {"GL_ARB_map_buffer_range",             ARB_MAP_BUFFER_RANGE,           0                           },
     {"GL_ARB_multisample",                  ARB_MULTISAMPLE,                0                           }, /* needs GLX_ARB_MULTISAMPLE as well */
     {"GL_ARB_multitexture",                 ARB_MULTITEXTURE,               0                           },
     {"GL_ARB_occlusion_query",              ARB_OCCLUSION_QUERY,            0                           },
@@ -1837,6 +1838,12 @@ static BOOL IWineD3DImpl_FillGLCaps(struct wined3d_driver_info *driver_info, str
             gl_info->supported[ARB_HALF_FLOAT_PIXEL] = TRUE;
         }
     }
+    if (gl_info->supported[ARB_MAP_BUFFER_RANGE])
+    {
+        /* GL_ARB_map_buffer_range and GL_APPLE_flush_buffer_range provide the same
+         * functionality. Prefer the ARB extension */
+        gl_info->supported[APPLE_FLUSH_BUFFER_RANGE] = FALSE;
+    }
     if (gl_info->supported[ARB_TEXTURE_CUBE_MAP])
     {
         TRACE_(d3d_caps)(" IMPLIED: NVIDIA (NV) Texture Gen Reflection support.\n");
diff --git a/dlls/wined3d/wined3d_gl.h b/dlls/wined3d/wined3d_gl.h
index f0367ce..07ce7af 100644
--- a/dlls/wined3d/wined3d_gl.h
+++ b/dlls/wined3d/wined3d_gl.h
@@ -1743,6 +1743,7 @@ typedef enum wined3d_gl_extension
     ARB_HALF_FLOAT_PIXEL,
     ARB_HALF_FLOAT_VERTEX,
     ARB_IMAGING,
+    ARB_MAP_BUFFER_RANGE,
     ARB_MULTISAMPLE,
     ARB_MULTITEXTURE,
     ARB_OCCLUSION_QUERY,
@@ -2225,6 +2226,19 @@ typedef void (WINE_GLAPI *PGLFNFRAMEBUFFERTEXTUREFACEARBPROC)(GLenum target, GLe
 typedef void (WINE_GLAPI *PGLFNBLENDCOLORPROC)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
 typedef void (WINE_GLAPI *PGLFNBLENDEQUATIONPROC)(GLenum mode);
 
+/* GL_ARB_map_buffer_range */
+#ifndef GL_ARB_map_buffer_range
+#define GL_ARB_map_buffer_range 1
+#define GL_MAP_READ_BIT                                     0x0001
+#define GL_MAP_WRITE_BIT                                    0x0002
+#define GL_MAP_INVALIDATE_RANGE_BIT                         0x0004
+#define GL_MAP_INVALIDATE_BUFFER_BIT                        0x0008
+#define GL_MAP_FLUSH_EXPLICIT_BIT                           0x0010
+#define GL_MAP_UNSYNCHRONIZED_BIT                           0x0020
+#endif
+typedef GLvoid *(WINE_GLAPI *PGLFNMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+typedef void (WINE_GLAPI *PGLFNFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length);
+
 /* GL_ARB_multisample */
 #ifndef GL_ARB_multisample
 #define GL_ARB_multisample 1
@@ -3934,6 +3948,11 @@ typedef BOOL (WINAPI *WINED3D_PFNWGLSETPIXELFORMATWINE)(HDC hdc, int iPixelForma
             glBlendColorEXT,                            EXT_BLEND_COLOR,                NULL) \
     USE_GL_FUNC(PGLFNBLENDEQUATIONPROC, \
             glBlendEquationEXT,                         EXT_BLEND_MINMAX,               NULL) \
+    /* GL_ARB_map_buffer_range */ \
+    USE_GL_FUNC(PGLFNMAPBUFFERRANGEPROC, \
+            glMapBufferRange,                           ARB_MAP_BUFFER_RANGE,           NULL) \
+    USE_GL_FUNC(PGLFNFLUSHMAPPEDBUFFERRANGEPROC, \
+            glFlushMappedBufferRange,                   ARB_MAP_BUFFER_RANGE,           NULL) \
     /* GL_ARB_multisample */ \
     USE_GL_FUNC(WINED3D_PFNGLSAMPLECOVERAGEARBPROC, \
             glSampleCoverageARB,                        ARB_MULTISAMPLE,                NULL) \




More information about the wine-cvs mailing list