[Mesa-dev] [PATCH 2/9] mesa:Define constants and functions for GL_ARB_framebuffer_no_attachment extension
Rogovin, Kevin
kevin.rogovin at intel.com
Wed May 6 00:37:47 PDT 2015
> You haven't been running 'make check'. :) You also need to update src/mesa/tests/dispatch_sanity.cpp.
There is something wrong with my box or something... I did run make check and there were no failures. Out of paranoia, I also ran src/mesa/main/tests/main-test explicitly and there were no failures there either. When I look at src/mesa/tests/dispatch_sanity.cpp, the functions for ARB_framebuffer_no_attachments in the table are commented out. When I remove the comments from them, then the test fails (DispatchSanity_test.GL31_CORE).
What am I missing? I am utterly confused now about src/mesa/tests/dispatch_sanity.cpp.
-Kevin
On 04/29/2015 01:56 AM, kevin.rogovin at intel.com wrote:
> From: Kevin Rogovin <kevin.rogovin at intel.com>
>
> Define the enumeration constants, function entry points and glGet for
> the GL_ARB_framebuffer_no_attachments
>
> ---
> .../glapi/gen/ARB_framebuffer_no_attachments.xml | 33 +++++++++++++++++++
> src/mapi/glapi/gen/Makefile.am | 1 +
> src/mapi/glapi/gen/gl_API.xml | 4 ++-
> src/mesa/main/fbobject.c | 12 +++++++
> src/mesa/main/fbobject.h | 7 ++++
> src/mesa/main/get.c | 3 ++
> src/mesa/main/get_hash_params.py | 38 ++++++++++++++++++++++
> 7 files changed, 97 insertions(+), 1 deletion(-) create mode 100644
> src/mapi/glapi/gen/ARB_framebuffer_no_attachments.xml
>
> diff --git a/src/mapi/glapi/gen/ARB_framebuffer_no_attachments.xml
> b/src/mapi/glapi/gen/ARB_framebuffer_no_attachments.xml
> new file mode 100644
> index 0000000..5bde14d
> --- /dev/null
> +++ b/src/mapi/glapi/gen/ARB_framebuffer_no_attachments.xml
> @@ -0,0 +1,33 @@
> +<?xml version="1.0"?>
> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
> +
> +<OpenGLAPI>
> +
> +<category name="GL_ARB_framebuffer_no_attachments" number="130">
> +
> +<enum name="FRAMEBUFFER_DEFAULT_WIDTH" value="0x9310" /> <enum
> +name="FRAMEBUFFER_DEFAULT_HEIGHT" value="0x9311" /> <enum
> +name="FRAMEBUFFER_DEFAULT_LAYERS" value="0x9312" /> <enum
> +name="FRAMEBUFFER_DEFAULT_SAMPLES" value="0x9313" /> <enum
> +name="FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS" value="0x9314" />
> +<enum name="MAX_FRAMEBUFFER_WIDTH" value="0x9315" /> <enum
> +name="MAX_FRAMEBUFFER_HEIGHT" value="0x9316" /> <enum
> +name="MAX_FRAMEBUFFER_LAYERS" value="0x9317" /> <enum
> +name="MAX_FRAMEBUFFER_SAMPLES" value="0x9318" />
> +
> +
> +<function name="FramebufferParameteri" offset="assign">
Since it looks like your patches will land before my ES3.1 patches, I'll have to update these with es2="3.1". This is mostly to help me remember.
> + <param name="target" type="GLenum" />
> + <param name="pname" type="GLenum" />
> + <param name="param" type="GLint" /> </function>
> +
> +<function name="GetFramebufferParameteriv" offset="assign">
> + <param name="target" type="GLenum" />
> + <param name="pname" type="GLenum" />
> + <param name="params" type="GLint *" output="true" /> </function>
> +
> +</category>
> +
> +</OpenGLAPI>
> diff --git a/src/mapi/glapi/gen/Makefile.am
> b/src/mapi/glapi/gen/Makefile.am index 1c4b86a..dc61739 100644
> --- a/src/mapi/glapi/gen/Makefile.am
> +++ b/src/mapi/glapi/gen/Makefile.am
> @@ -129,6 +129,7 @@ API_XML = \
> ARB_draw_instanced.xml \
> ARB_ES2_compatibility.xml \
> ARB_ES3_compatibility.xml \
> + ARB_framebuffer_no_attachments.xml \
> ARB_framebuffer_object.xml \
> ARB_geometry_shader4.xml \
> ARB_get_program_binary.xml \
> diff --git a/src/mapi/glapi/gen/gl_API.xml
> b/src/mapi/glapi/gen/gl_API.xml index a8a6db6..91882ef 100644
> --- a/src/mapi/glapi/gen/gl_API.xml
> +++ b/src/mapi/glapi/gen/gl_API.xml
> @@ -8324,7 +8324,9 @@
> <!-- No new functions, types, enums. --> </category>
>
> -<!-- ARB extensions #130..#131 -->
> +<xi:include href="ARB_framebuffer_no_attachments.xml"
> +xmlns:xi="http://www.w3.org/2001/XInclude"/>
> +
> +<!-- ARB extensions #131 -->
>
> <category name="GL_ARB_explicit_uniform_location" number="128">
> <enum name="MAX_UNIFORM_LOCATIONS" count="1" value="0x826E" >
> diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index
> eabbb96..5c78c40 100644
> --- a/src/mesa/main/fbobject.c
> +++ b/src/mesa/main/fbobject.c
> @@ -1292,6 +1292,18 @@ _mesa_BindRenderbufferEXT(GLenum target, GLuint renderbuffer)
> bind_renderbuffer(target, renderbuffer, true); }
>
> +extern void GLAPIENTRY
> +_mesa_FramebufferParameteri(GLenum target, GLenum pname, GLint param)
> +{
> + /* to be implemented */
> +}
> +
> +extern void GLAPIENTRY
> +_mesa_GetFramebufferParameteriv(GLenum target, GLenum pname, GLint
> +*params) {
> + /* to be implemented */
> +}
> +
>
> /**
> * Remove the specified renderbuffer or texture from any attachment
> point in diff --git a/src/mesa/main/fbobject.h
> b/src/mesa/main/fbobject.h index 61aa1f5..76adb92 100644
> --- a/src/mesa/main/fbobject.h
> +++ b/src/mesa/main/fbobject.h
> @@ -211,4 +211,11 @@ extern void GLAPIENTRY
> _mesa_DiscardFramebufferEXT(GLenum target, GLsizei numAttachments,
> const GLenum *attachments);
>
> +
> +extern void GLAPIENTRY
> +_mesa_FramebufferParameteri(GLenum target, GLenum pname, GLint
> +param);
> +
> +extern void GLAPIENTRY
> +_mesa_GetFramebufferParameteriv(GLenum target, GLenum pname, GLint
> +*params);
> +
> #endif /* FBOBJECT_H */
> diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index
> a881bc5..ca9d13c 100644
> --- a/src/mesa/main/get.c
> +++ b/src/mesa/main/get.c
> @@ -393,6 +393,7 @@ EXTRA_EXT(INTEL_performance_query);
> EXTRA_EXT(ARB_explicit_uniform_location);
> EXTRA_EXT(ARB_clip_control);
> EXTRA_EXT(EXT_polygon_offset_clamp);
> +EXTRA_EXT(ARB_framebuffer_no_attachments);
>
> static const int
> extra_ARB_color_buffer_float_or_glcore[] = { @@ -466,6 +467,8 @@
> static const int extra_core_ARB_color_buffer_float_and_new_buffers[] = {
> * remaining combinations. To look up the enums valid in a given API
> * we will use a hash table specific to that API. These tables are in
> * turn generated at build time and included through get_hash.h.
> + * To add an entry (i.e. a new enumeration for glGet that is taken
> + * from the table) add an entry to get_hash_params.py.
> */
>
> #include "get_hash.h"
> diff --git a/src/mesa/main/get_hash_params.py
> b/src/mesa/main/get_hash_params.py
> index 41cb2c1..37d9545 100644
> --- a/src/mesa/main/get_hash_params.py
> +++ b/src/mesa/main/get_hash_params.py
> @@ -1,3 +1,34 @@
> +# glGet pnames possible, organized first by GL version # and then
> +organized by GL extension.
> +# There is a list for different combinations of GL_ version # that
> +combination is specified by the field "apis".
> +# The field "params" is a list of entries describing # how glGet*
> +operates when passed a pname.
> +# To add a pname for glGet* to handle, the entry is of the form # a)
> +[ "PnameX", "LOC_CUSTOM, TypeX, ExtraRequirementX" ] # OR # b) [
> +"PnameX", "OffsetX, ExtraRequirement" ] #
> +# - PnameX is the name of the pname passed to glGet without the GL_ prefix
> +# - ExtraRequirement is extra requirment declared in get.c listing
> +# GL requirements (such as extension requirements). If no extra
> +# requirement is needed, then it is NO_EXTRA
> +#
> +# Form a) is for those pnames whose glGet implementation is # not a
> +direct take of the value from a value stored in a field # but
> +requires some "work". The code to perform the get needs # to be
> +implemented in function find_custom_value() in get.c
> +# - TypeX describes the type is of the form TYPE_[FLOAT|INT] or TYPE_[FLOAT|INT]N_[2|3|4] or TYPE_ENUM
> +#
> +# Form b) is for those values that can be taken directly # from the
> +context.
> +# - OffsetX is the offset into the gl_context (or possible other structs)
> +# There are macros defined in get.c, the most common cases are:
> +# CONTEXT_FOO(field) for taking the value stored in gl_context::field, FOO naming the Type
> +# BUFFER_FOO(field) for taking the value stored in gl_framebuffer::field, FOO naming the Type
> +# ARRAY_FOO(field) for taking the value stored in gl_vertex_array_object, FOO naming the Type
> +# see get.c for further details and macros.
> +
> descriptor=[
> { "apis": ["GL", "GLES", "GLES2", "GL_CORE"], "params": [
> [ "ALPHA_BITS", "BUFFER_INT(Visual.alphaBits), extra_new_buffers"
> ], @@ -798,6 +829,13 @@ descriptor=[
> [ "MIN_FRAGMENT_INTERPOLATION_OFFSET", "CONTEXT_FLOAT(Const.MinFragmentInterpolationOffset), extra_ARB_gpu_shader5" ],
> [ "MAX_FRAGMENT_INTERPOLATION_OFFSET", "CONTEXT_FLOAT(Const.MaxFragmentInterpolationOffset), extra_ARB_gpu_shader5" ],
> [ "FRAGMENT_INTERPOLATION_OFFSET_BITS",
> "CONST(FRAGMENT_INTERPOLATION_OFFSET_BITS), extra_ARB_gpu_shader5" ],
> +
> +# GL_ARB_framebuffer_no_attachments
> + ["MAX_FRAMEBUFFER_WIDTH", "CONTEXT_INT(Const.MaxFramebufferWidth),
> +extra_ARB_framebuffer_no_attachments"],
> + ["MAX_FRAMEBUFFER_HEIGHT",
> +"CONTEXT_INT(Const.MaxFramebufferHeight),
> +extra_ARB_framebuffer_no_attachments"],
> + ["MAX_FRAMEBUFFER_LAYERS",
> +"CONTEXT_INT(Const.MaxFramebufferLayers),
> +extra_ARB_framebuffer_no_attachments"],
> + ["MAX_FRAMEBUFFER_SAMPLES",
> +"CONTEXT_INT(Const.MaxFramebufferSamples),
> +extra_ARB_framebuffer_no_attachments"],
> +
> ]},
>
> # Enums restricted to OpenGL Core profile
>
More information about the mesa-dev
mailing list