diff options
author | Chris Forbes <[email protected]> | 2012-11-24 13:08:45 +1300 |
---|---|---|
committer | Chris Forbes <[email protected]> | 2013-03-02 11:33:20 +1300 |
commit | 0f83e415e49520021977e76ad3d0b0a9c1f6d8d4 (patch) | |
tree | da14ac475849e25e14c0f03cd9ed08e76446903b | |
parent | c0674fa5cdb27e367e29e954c03ce1e3f3b5c4a0 (diff) |
glapi: add ARB_texture_multisample
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 <[email protected]>
[1/3 V2] Reviewed-by: Matt Turner <[email protected]>
[V3] Reviewed-by: Eric Anholt <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
-rw-r--r-- | src/mapi/glapi/gen/ARB_texture_multisample.xml | 69 | ||||
-rw-r--r-- | src/mapi/glapi/gen/gl_API.xml | 3 | ||||
-rw-r--r-- | src/mesa/main/multisample.c | 15 | ||||
-rw-r--r-- | src/mesa/main/multisample.h | 6 | ||||
-rw-r--r-- | src/mesa/main/tests/dispatch_sanity.cpp | 8 | ||||
-rw-r--r-- | src/mesa/main/teximage.c | 21 | ||||
-rw-r--r-- | src/mesa/main/teximage.h | 11 |
7 files changed, 128 insertions, 5 deletions
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 00000000000..f0dd4f5f79b --- /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 4cbd72462b4..75957dc7dbd 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 f792ad01e74..0687cd042d7 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 30726c34cf1..9e6b8e0d3f8 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 bf6b297e139..3431dedc105 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 f0de0fb4935..d40d58eecc2 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 7124cac5214..744c47a8af6 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 |