Henri Verbeet : wined3d: Trace the minimum buffer map alignment in wined3d_adapter_init_gl_caps().

Alexandre Julliard julliard at winehq.org
Thu Nov 24 15:04:37 CST 2011


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

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Wed Nov 23 21:14:55 2011 +0100

wined3d: Trace the minimum buffer map alignment in wined3d_adapter_init_gl_caps().

There's not much else we need to do for ARB_map_buffer_alignment. There's
still a pretty decent chance that we'll get lucky with alignment even on
drivers that don't support the extension, since mmap is going to return page
aligned memory. Tiny buffers might get packed together in a page though.

---

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

diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 272ae4f..574c406 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -101,6 +101,7 @@ EXTENSION_MAP[] =
     {"GL_ARB_geometry_shader4",             ARB_GEOMETRY_SHADER4,           0                           },
     {"GL_ARB_half_float_pixel",             ARB_HALF_FLOAT_PIXEL,           0                           },
     {"GL_ARB_half_float_vertex",            ARB_HALF_FLOAT_VERTEX,          0                           },
+    {"GL_ARB_map_buffer_alignment",         ARB_MAP_BUFFER_ALIGNMENT,       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                           },
@@ -2474,6 +2475,15 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter)
         }
     }
 
+    if (gl_info->supported[ARB_MAP_BUFFER_ALIGNMENT])
+    {
+        glGetIntegerv(GL_MIN_MAP_BUFFER_ALIGNMENT, &gl_max);
+        TRACE_(d3d_caps)("Minimum buffer map alignment: %d.\n", gl_max);
+    }
+    else
+    {
+        WARN_(d3d_caps)("Driver doesn't guarantee a minimum buffer map alignment.\n");
+    }
     if (gl_info->supported[NV_REGISTER_COMBINERS])
     {
         glGetIntegerv(GL_MAX_GENERAL_COMBINERS_NV, &gl_max);
diff --git a/dlls/wined3d/wined3d_gl.h b/dlls/wined3d/wined3d_gl.h
index 5088782..d9a88db 100644
--- a/dlls/wined3d/wined3d_gl.h
+++ b/dlls/wined3d/wined3d_gl.h
@@ -1745,6 +1745,7 @@ enum wined3d_gl_extension
     ARB_GEOMETRY_SHADER4,
     ARB_HALF_FLOAT_PIXEL,
     ARB_HALF_FLOAT_VERTEX,
+    ARB_MAP_BUFFER_ALIGNMENT,
     ARB_MAP_BUFFER_RANGE,
     ARB_MULTISAMPLE,
     ARB_MULTITEXTURE,
@@ -2161,6 +2162,12 @@ typedef void (WINE_GLAPI *PGLFNFRAMEBUFFERTEXTUREFACEARBPROC)(GLenum target, GLe
 #define GL_HALF_FLOAT                                       0x140b
 #endif
 
+/* GL_ARB_map_buffer_alignment */
+#ifndef GL_ARB_map_buffer_alignment
+#define GL_ARB_map_buffer_alignment 1
+#define GL_MIN_MAP_BUFFER_ALIGNMENT                         0x90bc
+#endif
+
 /* GL_ARB_map_buffer_range */
 #ifndef GL_ARB_map_buffer_range
 #define GL_ARB_map_buffer_range 1




More information about the wine-cvs mailing list