> Subject: mesa:Define extension ARB_framebuffer_no_attachments Space after "mesa:"
On Thu, May 21, 2015 at 2:30 PM, <kevin.rogo...@intel.com> wrote: > From: Kevin Rogovin <kevin.rogo...@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.rogo...@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! _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev