diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mapi/glapi/gen/EXT_direct_state_access.xml | 11 | ||||
-rw-r--r-- | src/mapi/glapi/gen/static_data.py | 1 | ||||
-rw-r--r-- | src/mesa/main/bufferobj.c | 45 | ||||
-rw-r--r-- | src/mesa/main/bufferobj.h | 3 | ||||
-rw-r--r-- | src/mesa/main/tests/dispatch_sanity.cpp | 2 |
5 files changed, 48 insertions, 14 deletions
diff --git a/src/mapi/glapi/gen/EXT_direct_state_access.xml b/src/mapi/glapi/gen/EXT_direct_state_access.xml index a19677cde10..6a6a118a2bd 100644 --- a/src/mapi/glapi/gen/EXT_direct_state_access.xml +++ b/src/mapi/glapi/gen/EXT_direct_state_access.xml @@ -145,5 +145,16 @@ <param name="size" type="GLsizeiptr" /> <param name="data" type="const GLvoid *" /> </function> + + <!-- OpenGL 3.0 --> + + <function name="MapNamedBufferRangeEXT"> + <return type="GLvoid *" /> + <param name="buffer" type="GLuint" /> + <param name="offset" type="GLintptr" /> + <param name="length" type="GLsizeiptr" /> + <param name="access" type="GLbitfield" /> + </function> + </category> </OpenGLAPI> diff --git a/src/mapi/glapi/gen/static_data.py b/src/mapi/glapi/gen/static_data.py index 582530c046a..3970452b0cb 100644 --- a/src/mapi/glapi/gen/static_data.py +++ b/src/mapi/glapi/gen/static_data.py @@ -1477,6 +1477,7 @@ offsets = { "NamedBufferDataEXT": 1441, "NamedBufferSubDataEXT": 1442, "NamedBufferStorageEXT": 1443, + "MapNamedBufferRangeEXT": 1444, } functions = [ diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c index 0d350dbabd5..a751e41d6e8 100644 --- a/src/mesa/main/bufferobj.c +++ b/src/mesa/main/bufferobj.c @@ -3277,30 +3277,49 @@ _mesa_MapNamedBufferRange_no_error(GLuint buffer, GLintptr offset, "glMapNamedBufferRange"); } -void * GLAPIENTRY -_mesa_MapNamedBufferRange(GLuint buffer, GLintptr offset, GLsizeiptr length, - GLbitfield access) +static void * +map_named_buffer_range(GLuint buffer, GLintptr offset, GLsizeiptr length, + GLbitfield access, bool dst_ext, const char *func) { GET_CURRENT_CONTEXT(ctx); - struct gl_buffer_object *bufObj; + struct gl_buffer_object *bufObj = NULL; if (!ctx->Extensions.ARB_map_buffer_range) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glMapNamedBufferRange(" - "ARB_map_buffer_range not supported)"); + "%s(ARB_map_buffer_range not supported)", func); return NULL; } - bufObj = _mesa_lookup_bufferobj_err(ctx, buffer, "glMapNamedBufferRange"); - if (!bufObj) - return NULL; + if (dst_ext) { + bufObj = _mesa_lookup_bufferobj(ctx, buffer); + if (!_mesa_handle_bind_buffer_gen(ctx, buffer, &bufObj, func)) + return NULL; + } else { + bufObj = _mesa_lookup_bufferobj_err(ctx, buffer, func); + if (!bufObj) + return NULL; + } - if (!validate_map_buffer_range(ctx, bufObj, offset, length, access, - "glMapNamedBufferRange")) + if (!validate_map_buffer_range(ctx, bufObj, offset, length, access, func)) return NULL; - return map_buffer_range(ctx, bufObj, offset, length, access, - "glMapNamedBufferRange"); + return map_buffer_range(ctx, bufObj, offset, length, access, func); +} + +void * GLAPIENTRY +_mesa_MapNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length, + GLbitfield access) +{ + return map_named_buffer_range(buffer, offset, length, access, true, + "glMapNamedBufferRangeEXT"); +} + +void * GLAPIENTRY +_mesa_MapNamedBufferRange(GLuint buffer, GLintptr offset, GLsizeiptr length, + GLbitfield access) +{ + return map_named_buffer_range(buffer, offset, length, access, false, + "glMapNamedBufferRange"); } /** diff --git a/src/mesa/main/bufferobj.h b/src/mesa/main/bufferobj.h index 6b35d70606f..c3b57ef7fe6 100644 --- a/src/mesa/main/bufferobj.h +++ b/src/mesa/main/bufferobj.h @@ -357,6 +357,9 @@ _mesa_MapNamedBufferRange_no_error(GLuint buffer, GLintptr offset, void * GLAPIENTRY _mesa_MapNamedBufferRange(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +void * GLAPIENTRY +_mesa_MapNamedBufferRangeEXT(GLuint buffer, GLintptr offset, + GLsizeiptr length, GLbitfield access); void * GLAPIENTRY _mesa_MapBuffer_no_error(GLenum target, GLenum access); diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp index c789a2d513b..8813e945bfc 100644 --- a/src/mesa/main/tests/dispatch_sanity.cpp +++ b/src/mesa/main/tests/dispatch_sanity.cpp @@ -1222,7 +1222,7 @@ const struct function common_desktop_functions_possible[] = { //{ "glGetVertexArrayPointervEXT", 30, -1 }, //{ "glGetVertexArrayIntegeri_vEXT", 30, -1 }, //{ "glGetVertexArrayPointeri_vEXT", 30, -1 }, - //{ "glMapNamedBufferRangeEXT", 30, -1 }, + { "glMapNamedBufferRangeEXT", 30, -1 }, //{ "glFlushMappedNamedBufferRangeEXT", 30, -1 }, /* GL_ARB_internalformat_query */ |