[Mesa-dev] [PATCH 05/18] glapi: Add infrastructure for ARB_multi_bind

Fredrik Höglund fredrik at kde.org
Tue Jan 21 15:35:43 PST 2014


---
 src/mapi/glapi/gen/ARB_multi_bind.xml   |   53 +++++++++++++++++++++++++++++++
 src/mapi/glapi/gen/Makefile.am          |    1 +
 src/mapi/glapi/gen/gl_API.xml           |    4 +++
 src/mesa/main/bufferobj.c               |   13 ++++++++
 src/mesa/main/bufferobj.h               |    7 ++++
 src/mesa/main/samplerobj.c              |    6 ++++
 src/mesa/main/samplerobj.h              |    2 ++
 src/mesa/main/shaderimage.c             |    5 +++
 src/mesa/main/shaderimage.h             |    3 ++
 src/mesa/main/tests/dispatch_sanity.cpp |    8 +++++
 src/mesa/main/texobj.c                  |    6 ++++
 src/mesa/main/texobj.h                  |    4 +++
 src/mesa/main/varray.c                  |    7 ++++
 src/mesa/main/varray.h                  |    4 +++
 14 files changed, 123 insertions(+)
 create mode 100644 src/mapi/glapi/gen/ARB_multi_bind.xml

diff --git a/src/mapi/glapi/gen/ARB_multi_bind.xml b/src/mapi/glapi/gen/ARB_multi_bind.xml
new file mode 100644
index 0000000..4a59d8c
--- /dev/null
+++ b/src/mapi/glapi/gen/ARB_multi_bind.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+<OpenGLAPI>
+
+<category name="GL_ARB_multi_bind" number="147">
+
+    <function name="BindBuffersBase" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="first" type="GLuint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="buffers" type="const GLuint*"/>
+    </function>
+
+    <function name="BindBuffersRange" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="first" type="GLuint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="buffers" type="const GLuint *"/>
+        <param name="offsets" type="const GLintptr *"/>
+        <param name="sizes" type="const GLsizeiptr *"/>
+    </function>
+
+    <function name="BindTextures" offset="assign">
+        <param name="first" type="GLuint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="textures" type="const GLuint*"/>
+    </function>
+
+    <function name="BindSamplers" offset="assign">
+        <param name="first" type="GLuint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="samplers" type="const GLuint*"/>
+    </function>
+
+    <function name="BindImageTextures" offset="assign">
+        <param name="first" type="GLuint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="textures" type="const GLuint*"/>
+    </function>
+
+    <function name="BindVertexBuffers" offset="assign">
+        <param name="first" type="GLuint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="buffers" type="const GLuint*"/>
+        <param name="offsets" type="const GLintptr*"/>
+        <param name="strides" type="const GLsizei*"/>
+    </function>
+
+</category>
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am
index 7354725..9091326 100644
--- a/src/mapi/glapi/gen/Makefile.am
+++ b/src/mapi/glapi/gen/Makefile.am
@@ -108,6 +108,7 @@ API_XML = \
 	ARB_internalformat_query.xml \
 	ARB_invalidate_subdata.xml \
 	ARB_map_buffer_range.xml \
+	ARB_multi_bind.xml \
 	ARB_robustness.xml \
 	ARB_sample_shading.xml \
 	ARB_sampler_objects.xml \
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index 193ee37..36e8bef 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -8488,6 +8488,10 @@
 
 <xi:include href="ARB_texture_storage_multisample.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
 
+<!-- ARB extensions #141...#146 -->
+
+<xi:include href="ARB_multi_bind.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
 <!-- Non-ARB extensions sorted by extension number. -->
 
 <category name="GL_EXT_blend_color" number="2">
diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
index 9336759..e46516d 100644
--- a/src/mesa/main/bufferobj.c
+++ b/src/mesa/main/bufferobj.c
@@ -2630,6 +2630,19 @@ _mesa_BindBufferBase(GLenum target, GLuint index, GLuint buffer)
 }
 
 void GLAPIENTRY
+_mesa_BindBuffersRange(GLenum target, GLuint first, GLsizei count,
+                       const GLuint *buffers,
+                       const GLintptr *offsets, const GLsizeiptr *sizes)
+{
+}
+
+void GLAPIENTRY
+_mesa_BindBuffersBase(GLenum target, GLuint first, GLsizei count,
+                      const GLuint *buffers)
+{
+}
+
+void GLAPIENTRY
 _mesa_InvalidateBufferSubData(GLuint buffer, GLintptr offset,
                               GLsizeiptr length)
 {
diff --git a/src/mesa/main/bufferobj.h b/src/mesa/main/bufferobj.h
index 71988b0..2239b83 100644
--- a/src/mesa/main/bufferobj.h
+++ b/src/mesa/main/bufferobj.h
@@ -186,6 +186,13 @@ void GLAPIENTRY
 _mesa_BindBufferBase(GLenum target, GLuint index, GLuint buffer);
 
 void GLAPIENTRY
+_mesa_BindBuffersRange(GLenum target, GLuint first, GLsizei count,
+                       const GLuint *buffers,
+                       const GLintptr *offsets, const GLsizeiptr *sizes);
+void GLAPIENTRY
+_mesa_BindBuffersBase(GLenum target, GLuint first, GLsizei count,
+                      const GLuint *buffers);
+void GLAPIENTRY
 _mesa_InvalidateBufferSubData(GLuint buffer, GLintptr offset,
                               GLsizeiptr length);
 
diff --git a/src/mesa/main/samplerobj.c b/src/mesa/main/samplerobj.c
index 7285ef5..077ee9e 100644
--- a/src/mesa/main/samplerobj.c
+++ b/src/mesa/main/samplerobj.c
@@ -285,6 +285,12 @@ _mesa_BindSampler(GLuint unit, GLuint sampler)
 }
 
 
+void GLAPIENTRY
+_mesa_BindSamplers(GLuint first, GLsizei count, const GLuint *samplers)
+{
+}
+
+
 /**
  * Check if a coordinate wrap mode is legal.
  * \return GL_TRUE if legal, GL_FALSE otherwise
diff --git a/src/mesa/main/samplerobj.h b/src/mesa/main/samplerobj.h
index c72b1cd..7d80b38 100644
--- a/src/mesa/main/samplerobj.h
+++ b/src/mesa/main/samplerobj.h
@@ -81,6 +81,8 @@ _mesa_IsSampler(GLuint sampler);
 void GLAPIENTRY
 _mesa_BindSampler(GLuint unit, GLuint sampler);
 void GLAPIENTRY
+_mesa_BindSamplers(GLuint first, GLsizei count, const GLuint *samplers);
+void GLAPIENTRY
 _mesa_SamplerParameteri(GLuint sampler, GLenum pname, GLint param);
 void GLAPIENTRY
 _mesa_SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param);
diff --git a/src/mesa/main/shaderimage.c b/src/mesa/main/shaderimage.c
index 80c4693..ce63bee 100644
--- a/src/mesa/main/shaderimage.c
+++ b/src/mesa/main/shaderimage.c
@@ -479,6 +479,11 @@ _mesa_BindImageTexture(GLuint unit, GLuint texture, GLint level,
 }
 
 void GLAPIENTRY
+_mesa_BindImageTextures(GLuint first, GLsizei count, const GLuint *textures)
+{
+}
+
+void GLAPIENTRY
 _mesa_MemoryBarrier(GLbitfield barriers)
 {
    GET_CURRENT_CONTEXT(ctx);
diff --git a/src/mesa/main/shaderimage.h b/src/mesa/main/shaderimage.h
index aaecc5d..733ac77 100644
--- a/src/mesa/main/shaderimage.h
+++ b/src/mesa/main/shaderimage.h
@@ -46,6 +46,9 @@ _mesa_BindImageTexture(GLuint unit, GLuint texture, GLint level,
                        GLenum format);
 
 void GLAPIENTRY
+_mesa_BindImageTextures(GLuint first, GLsizei count, const GLuint *textures);
+
+void GLAPIENTRY
 _mesa_MemoryBarrier(GLbitfield barriers);
 
 #endif
diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp
index 78a218e..8c7e322 100644
--- a/src/mesa/main/tests/dispatch_sanity.cpp
+++ b/src/mesa/main/tests/dispatch_sanity.cpp
@@ -896,6 +896,14 @@ const struct function gl_core_functions_possible[] = {
    /* GL_ARB_internalformat_query */
    { "glGetInternalformativ", 30, -1 },
 
+   /* GL_ARB_multi_bind */
+   { "glBindBuffersBase", 44, -1 },
+   { "glBindBuffersRange", 44, -1 },
+   { "glBindTextures", 44, -1 },
+   { "glBindSamplers", 44, -1 },
+   { "glBindImageTextures", 44, -1 },
+   { "glBindVertexBuffers", 44, -1 },
+
    /* GL_KHR_debug */
    { "glPushDebugGroup", 11, -1 },
    { "glPopDebugGroup", 11, -1 },
diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c
index 5a3cfb2..8fdec5c 100644
--- a/src/mesa/main/texobj.c
+++ b/src/mesa/main/texobj.c
@@ -1360,6 +1360,12 @@ _mesa_BindTexture( GLenum target, GLuint texName )
 }
 
 
+void GLAPIENTRY
+_mesa_BindTextures(GLuint first, GLsizei count, const GLuint *textures)
+{
+}
+
+
 /**
  * Set texture priorities.
  * 
diff --git a/src/mesa/main/texobj.h b/src/mesa/main/texobj.h
index 55091a6..4c4f642 100644
--- a/src/mesa/main/texobj.h
+++ b/src/mesa/main/texobj.h
@@ -160,6 +160,10 @@ _mesa_BindTexture( GLenum target, GLuint texture );
 
 
 extern void GLAPIENTRY
+_mesa_BindTextures( GLuint first, GLsizei count, const GLuint *textures );
+
+
+extern void GLAPIENTRY
 _mesa_PrioritizeTextures( GLsizei n, const GLuint *textures,
                           const GLclampf *priorities );
 
diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c
index b73a396..386bfea 100644
--- a/src/mesa/main/varray.c
+++ b/src/mesa/main/varray.c
@@ -1445,6 +1445,13 @@ _mesa_BindVertexBuffer(GLuint bindingIndex, GLuint buffer, GLintptr offset,
 
 
 void GLAPIENTRY
+_mesa_BindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers,
+                        const GLintptr *offsets, const GLsizei *strides)
+{
+}
+
+
+void GLAPIENTRY
 _mesa_VertexAttribFormat(GLuint attribIndex, GLint size, GLenum type,
                          GLboolean normalized, GLuint relativeOffset)
 {
diff --git a/src/mesa/main/varray.h b/src/mesa/main/varray.h
index bc820ed..76e9574 100644
--- a/src/mesa/main/varray.h
+++ b/src/mesa/main/varray.h
@@ -291,6 +291,10 @@ _mesa_BindVertexBuffer(GLuint bindingIndex, GLuint buffer, GLintptr offset,
                        GLsizei stride);
 
 extern void GLAPIENTRY
+_mesa_BindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers,
+                        const GLintptr *offsets, const GLsizei *strides);
+
+extern void GLAPIENTRY
 _mesa_VertexAttribFormat(GLuint attribIndex, GLint size, GLenum type,
                          GLboolean normalized, GLuint relativeOffset);
 
-- 
1.7.10.4



More information about the mesa-dev mailing list