diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 272ae4f5677..574c4061a66 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 5088782e55a..d9a88db2406 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