[Mesa-dev] [PATCH V4 01/19] glapi: add ARB_texture_multisample

Chris Forbes chrisf at ijw.co.nz
Tue Feb 26 02:10:42 PST 2013


Adds new enums, dispatch machinery, and stubs for the 4 new entrypoints.

V2: - Drop placeholder
    - Align enum values
    - Remove explicit exec=mesa; it *is* the dispatch flavor we want,
      but it's also the default. I misunderstood how this worked before;
      after actually reading the generator it makes good sense.

V3: - Squash in stubs for new entrypoints, and dispatch_sanity tweaks,
      so we don't get build breakage between those patches.

V4: - Fix various remaining whitespace issues

Signed-off-by: Chris Forbes <chrisf at ijw.co.nz>
[1/3 V2] Reviewed-by: Matt Turner <mattst88 at gmail.com>
[V3] Reviewed-by: Eric Anholt <eric at anholt.net>
---
 src/mapi/glapi/gen/ARB_texture_multisample.xml | 69 ++++++++++++++++++++++++++
 src/mapi/glapi/gen/gl_API.xml                  |  3 +-
 src/mesa/main/multisample.c                    | 15 ++++++
 src/mesa/main/multisample.h                    |  6 +++
 src/mesa/main/tests/dispatch_sanity.cpp        |  8 +--
 src/mesa/main/teximage.c                       | 21 ++++++++
 src/mesa/main/teximage.h                       | 11 ++++
 7 files changed, 128 insertions(+), 5 deletions(-)
 create mode 100644 src/mapi/glapi/gen/ARB_texture_multisample.xml

diff --git a/src/mapi/glapi/gen/ARB_texture_multisample.xml b/src/mapi/glapi/gen/ARB_texture_multisample.xml
new file mode 100644
index 0000000..f0dd4f5
--- /dev/null
+++ b/src/mapi/glapi/gen/ARB_texture_multisample.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+<OpenGLAPI>
+
+<category name="GL_ARB_texture_multisample" number="67">
+
+   <enum name="SAMPLE_POSITION"                             value="0x8E50"/>
+   <enum name="SAMPLE_MASK"                                 value="0x8E51"/>
+   <enum name="SAMPLE_MASK_VALUE"                           value="0x8E52"/>
+
+   <enum name="TEXTURE_2D_MULTISAMPLE"                      value="0x9100"/>
+   <enum name="PROXY_TEXTURE_2D_MULTISAMPLE"                value="0x9101"/>
+   <enum name="TEXTURE_2D_MULTISAMPLE_ARRAY"                value="0x9102"/>
+   <enum name="PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY"          value="0x9103"/>
+
+   <enum name="MAX_SAMPLE_MASK_WORDS"                       value="0x8E59"/>
+   <enum name="MAX_COLOR_TEXTURE_SAMPLES"                   value="0x910E"/>
+   <enum name="MAX_DEPTH_TEXTURE_SAMPLES"                   value="0x910F"/>
+   <enum name="MAX_INTEGER_SAMPLES"                         value="0x9110"/>
+
+   <enum name="TEXTURE_BINDING_2D_MULTISAMPLE"              value="0x9104"/>
+   <enum name="TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY"        value="0x9105"/>
+
+   <enum name="TEXTURE_SAMPLES"                             value="0x9106"/>
+   <enum name="TEXTURE_FIXED_SAMPLE_LOCATIONS"              value="0x9107"/>
+
+   <enum name="SAMPLER_2D_MULTISAMPLE"                      value="0x9108"/>
+   <enum name="INT_SAMPLER_2D_MULTISAMPLE"                  value="0x9109"/>
+   <enum name="UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE"         value="0x910A"/>
+   <enum name="SAMPLER_2D_MULTISAMPLE_ARRAY"                value="0x910B"/>
+   <enum name="INT_SAMPLER_2D_MULTISAMPLE_ARRAY"            value="0x910C"/>
+   <enum name="UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY"   value="0x910D"/>
+
+   <function name="TexImage2DMultisample" offset="assign">
+      <param name="target" type="GLenum"/>
+      <param name="samples" type="GLsizei"/>
+      <param name="internalformat" type="GLint"/>
+      <param name="width" type="GLsizei"/>
+      <param name="height" type="GLsizei"/>
+      <param name="fixedsamplelocations" type="GLboolean"/>
+   </function>
+
+   <function name="TexImage3DMultisample" offset="assign">
+      <param name="target" type="GLenum"/>
+      <param name="samples" type="GLsizei"/>
+      <param name="internalformat" type="GLint"/>
+      <param name="width" type="GLsizei"/>
+      <param name="height" type="GLsizei"/>
+      <param name="depth" type="GLsizei"/>
+      <param name="fixedsamplelocations" type="GLboolean"/>
+   </function>
+
+   <function name="GetMultisamplefv" offset="assign">
+      <param name="pname" type="GLenum"/>
+      <param name="index" type="GLuint"/>
+      <param name="val" type="GLfloat *"/>
+   </function>
+
+   <function name="SampleMaski" offset="assign">
+      <param name="index" type="GLuint"/>
+      <param name="mask" type="GLbitfield"/>
+   </function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index 4cbd724..75957dc 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -8179,7 +8179,8 @@
 
 <xi:include href="ARB_sync.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
 
-<!-- 67. GL_ARB_texture_multisample -->
+<xi:include href="ARB_texture_multisample.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
 <!-- 68. GL_ARB_vertex_array_bgra -->
 
 <xi:include href="ARB_draw_buffers_blend.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
diff --git a/src/mesa/main/multisample.c b/src/mesa/main/multisample.c
index f792ad0..0687cd0 100644
--- a/src/mesa/main/multisample.c
+++ b/src/mesa/main/multisample.c
@@ -60,3 +60,18 @@ _mesa_init_multisample(struct gl_context *ctx)
    ctx->Multisample.SampleCoverageValue = 1.0;
    ctx->Multisample.SampleCoverageInvert = GL_FALSE;
 }
+
+
+void GLAPIENTRY
+_mesa_GetMultisamplefv(GLenum pname, GLuint index, GLfloat * val)
+{
+   assert(!"Not implemented");
+   // TODO: make this work
+}
+
+void GLAPIENTRY
+_mesa_SampleMaski(GLuint index, GLbitfield mask)
+{
+   assert(!"Not implemented");
+   // TODO: make this work
+}
diff --git a/src/mesa/main/multisample.h b/src/mesa/main/multisample.h
index 30726c3..9e6b8e0 100644
--- a/src/mesa/main/multisample.h
+++ b/src/mesa/main/multisample.h
@@ -38,4 +38,10 @@ extern void
 _mesa_init_multisample(struct gl_context *ctx);
 
 
+extern void GLAPIENTRY
+_mesa_GetMultisamplefv(GLenum pname, GLuint index, GLfloat* val);
+
+extern void GLAPIENTRY
+_mesa_SampleMaski(GLuint index, GLbitfield mask);
+
 #endif
diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp
index bf6b297..3431ded 100644
--- a/src/mesa/main/tests/dispatch_sanity.cpp
+++ b/src/mesa/main/tests/dispatch_sanity.cpp
@@ -602,10 +602,10 @@ const struct function gl_core_functions_possible[] = {
    { "glWaitSync", 43, -1 },
    { "glGetInteger64v", 43, -1 },
    { "glGetSynciv", 43, -1 },
-// { "glTexImage2DMultisample", 43, -1 },               // XXX: Add to xml
-// { "glTexImage3DMultisample", 43, -1 },               // XXX: Add to xml
-// { "glGetMultisamplefv", 43, -1 },                    // XXX: Add to xml
-// { "glSampleMaski", 43, -1 },                         // XXX: Add to xml
+   { "glTexImage2DMultisample", 43, -1 },
+   { "glTexImage3DMultisample", 43, -1 },
+   { "glGetMultisamplefv", 43, -1 },
+   { "glSampleMaski", 43, -1 },
    { "glBlendEquationiARB", 43, -1 },
    { "glBlendEquationSeparateiARB", 43, -1 },
    { "glBlendFunciARB", 43, -1 },
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index f0de0fb..d40d58e 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -4102,3 +4102,24 @@ _mesa_TexBufferRange(GLenum target, GLenum internalFormat, GLuint buffer,
 
    texbufferrange(ctx, target, internalFormat, bufObj, offset, size);
 }
+
+
+/** GL_ARB_texture_multisample */
+void GLAPIENTRY
+_mesa_TexImage2DMultisample(GLenum target, GLsizei samples,
+                            GLint internalformat, GLsizei width,
+                            GLsizei height, GLboolean fixedsamplelocations)
+{
+   assert(!"Not implemented");
+   /* allocate a single 2d multisample texture */
+}
+
+void GLAPIENTRY
+_mesa_TexImage3DMultisample(GLenum target, GLsizei samples,
+                            GLint internalformat, GLsizei width,
+                            GLsizei height, GLsizei depth,
+                            GLboolean fixedsamplelocations)
+{
+   assert(!"Not implemented");
+   /* allocate an array of 2d multisample textures */
+}
diff --git a/src/mesa/main/teximage.h b/src/mesa/main/teximage.h
index 7124cac..744c47a 100644
--- a/src/mesa/main/teximage.h
+++ b/src/mesa/main/teximage.h
@@ -294,6 +294,17 @@ _mesa_TexBufferRange(GLenum target, GLenum internalFormat, GLuint buffer,
                      GLintptr offset, GLsizeiptr size);
 
 
+extern void GLAPIENTRY
+_mesa_TexImage2DMultisample(GLenum target, GLsizei samples,
+                            GLint internalformat, GLsizei width,
+                            GLsizei height, GLboolean fixedsamplelocations);
+
+extern void GLAPIENTRY
+_mesa_TexImage3DMultisample(GLenum target, GLsizei samples,
+                            GLint internalformat, GLsizei width,
+                            GLsizei height, GLsizei depth,
+                            GLboolean fixedsamplelocations);
+
 /*@}*/
 
 #ifdef __cplusplus
-- 
1.8.1.4



More information about the mesa-dev mailing list