[Mesa-dev] [v3 PATCH 01/10] mesa:Define extension ARB_framebuffer_no_attachments
Matt Turner
mattst88 at gmail.com
Thu May 21 15:49:38 PDT 2015
> Subject: mesa:Define extension ARB_framebuffer_no_attachments
Space after "mesa:"
On Thu, May 21, 2015 at 2:30 PM, <kevin.rogovin at intel.com> wrote:
> From: Kevin Rogovin <kevin.rogovin at intel.com>
>
> Define the infrastructure for the extension GL_ARB_framebuffer_no_attachments:
> - extension table
> - additions to gl_framebuffer
>
> v1 -> v2
> Spacing and trailing spaces fixes.
>
> v2 -> v3
> mtypes.h: Correct comment on _HasAttachments.
>
> Signed-off-by: Kevin Rogovin <kevin.rogovin at intel.com>
> ---
> src/mesa/main/extensions.c | 1 +
> src/mesa/main/fbobject.c | 1 +
> src/mesa/main/framebuffer.c | 1 +
> src/mesa/main/mtypes.h | 50 ++++++++++++++++++++++++++++++++++++++++-----
> 4 files changed, 48 insertions(+), 5 deletions(-)
>
> diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
> index c82416a..3256b2c 100644
> --- a/src/mesa/main/extensions.c
> +++ b/src/mesa/main/extensions.c
> @@ -117,6 +117,7 @@ static const struct extension extension_table[] = {
> { "GL_ARB_fragment_program", o(ARB_fragment_program), GLL, 2002 },
> { "GL_ARB_fragment_program_shadow", o(ARB_fragment_program_shadow), GLL, 2003 },
> { "GL_ARB_fragment_shader", o(ARB_fragment_shader), GL, 2002 },
> + { "GL_ARB_framebuffer_no_attachments", o(ARB_framebuffer_no_attachments), GL, 2012 },
> { "GL_ARB_framebuffer_object", o(ARB_framebuffer_object), GL, 2005 },
> { "GL_ARB_framebuffer_sRGB", o(EXT_framebuffer_sRGB), GL, 1998 },
> { "GL_ARB_get_program_binary", o(dummy_true), GL, 2010 },
> diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
> index 1859c27..8fea7f8 100644
> --- a/src/mesa/main/fbobject.c
> +++ b/src/mesa/main/fbobject.c
> @@ -957,6 +957,7 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx,
> fb->Height = 0;
> fb->_AllColorBuffersFixedPoint = GL_TRUE;
> fb->_HasSNormOrFloatColorBuffer = GL_FALSE;
> + fb->_HasAttachments = GL_TRUE;
>
> /* Start at -2 to more easily loop over all attachment points.
> * -2: depth buffer
> diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c
> index 665a5ba..c2cfb92 100644
> --- a/src/mesa/main/framebuffer.c
> +++ b/src/mesa/main/framebuffer.c
> @@ -157,6 +157,7 @@ _mesa_initialize_window_framebuffer(struct gl_framebuffer *fb,
> fb->_Status = GL_FRAMEBUFFER_COMPLETE_EXT;
> fb->_AllColorBuffersFixedPoint = !visual->floatMode;
> fb->_HasSNormOrFloatColorBuffer = visual->floatMode;
> + fb->_HasAttachments = GL_TRUE;
>
> compute_depth_max(fb);
> }
> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
> index 8342517..1a37aa6 100644
> --- a/src/mesa/main/mtypes.h
> +++ b/src/mesa/main/mtypes.h
> @@ -3146,12 +3146,29 @@ struct gl_framebuffer
> */
> struct gl_config Visual;
>
> - GLuint Width, Height; /**< size of frame buffer in pixels */
> + /**
> + * size of frame buffer in pixels,
> + * no attachments has these values as 0
What does this mean? That if there are no attachments, these are 0?
Maybe capitalize something. All lower-case in a multiline comment
looks sloppy.
> + */
> + GLuint Width, Height;
> +
> + /**
> + * In the case that the framebuffer has no attachment (i.e.
> + * GL_ARB_framebuffer_no_attachments) then the geometry of
> + * the framebuffer is specified by the default values.
> + */
> + struct {
> + GLuint Width, Height, Layers, NumSamples;
> + GLboolean FixedSampleLocations;
> + } DefaultGeometry;
>
> - /** \name Drawing bounds (Intersection of buffer size and scissor box) */
> + /** \name Drawing bounds (Intersection of buffer size and scissor box)
> + * The drawing region is given by [_Xmin, _Xmax) x [_Ymin, _Ymax),
> + * (inclusive for _Xmin and _Ymin while exclusive for _Xmax and _Ymax)
> + */
> /*@{*/
> - GLint _Xmin, _Xmax; /**< inclusive */
> - GLint _Ymin, _Ymax; /**< exclusive */
> + GLint _Xmin, _Xmax;
> + GLint _Ymin, _Ymax;
> /*@}*/
>
> /** \name Derived Z buffer stuff */
> @@ -3164,6 +3181,18 @@ struct gl_framebuffer
> /** One of the GL_FRAMEBUFFER_(IN)COMPLETE_* tokens */
> GLenum _Status;
>
> + /** True if one of Attachment has Type != GL_NONE
"Whether" instead of "True if" -- I know lots of other places say
"True if" but it sounds silly.
> + * NOTE: the values for Width and Height are set to 0 in
> + * case of no attachments, a backend driver supporting
> + * GL_ARB_framebuffer_no_attachments must check for the
> + * flag _HasAttachments and if GL_FALSE, must then use
> + * the values in DefaultGeometry to initialize its
> + * viewport, scissor and so on (in particular _Xmin,
> + * _Xmax, _Ymin and _Ymax do NOT take into account
> + * _HasAttachments being false)
This is terribly line-wrapped. We try to stay under 80 columns, not 60.
> + */
> + GLboolean _HasAttachments;
> +
> /** Integer color values */
> GLboolean _IntegerColor;
>
> @@ -3174,7 +3203,9 @@ struct gl_framebuffer
> /**
> * The maximum number of layers in the framebuffer, or 0 if the framebuffer
> * is not layered. For cube maps and cube map arrays, each cube face
> - * counts as a layer.
> + * counts as a layer. As the case for Width, Height a backend driver
> + * supporting GL_ARB_framebuffer_no_attachments must use DefaultGeometry
> + * in the case that _HasAttachments is false
> */
> GLuint MaxNumLayers;
>
> @@ -3353,6 +3384,14 @@ struct gl_constants
> GLuint MaxRenderbufferSize; /**< GL_EXT_framebuffer_object */
> GLuint MaxSamples; /**< GL_ARB_framebuffer_object */
>
> + /**
> + * GL_ARB_framebuffer_no_attachments
> + */
> + GLuint MaxFramebufferWidth;
> + GLuint MaxFramebufferHeight;
> + GLuint MaxFramebufferLayers;
> + GLuint MaxFramebufferSamples;
> +
> /** Number of varying vectors between any two shader stages. */
> GLuint MaxVarying;
>
> @@ -3632,6 +3671,7 @@ struct gl_extensions
> GLboolean ARB_fragment_program_shadow;
> GLboolean ARB_fragment_shader;
> GLboolean ARB_framebuffer_object;
> + GLboolean ARB_framebuffer_no_attachments;
Alphabetize!
More information about the mesa-dev
mailing list