summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mapi/glapi/gen/EXT_direct_state_access.xml11
-rw-r--r--src/mapi/glapi/gen/static_data.py1
-rw-r--r--src/mesa/main/bufferobj.c45
-rw-r--r--src/mesa/main/bufferobj.h3
-rw-r--r--src/mesa/main/tests/dispatch_sanity.cpp2
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 */