From: Kevin Rogovin <kevin.rogo...@intel.com> Add convenience helper functions for fetching geometry of gl_framebuffer that return the geometry of the gl_framebuffer instead of the geometry of the buffers of the gl_framebuffer when then the gl_framebuffer has no attachments.
v1 -> v2 Split from patch "mesa:helper-conveniance functions for drivers to implement ARB_framebuffer_no_attachment". v2 -> v3 Add error check for functions of extension. Implement DSA functions dependent on extension. Signed-off-by: Kevin Rogovin <kevin.rogo...@intel.com> --- src/mesa/main/framebuffer.h | 29 +++++++++++++++++++++++++++++ src/mesa/main/mtypes.h | 8 +++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/mesa/main/framebuffer.h b/src/mesa/main/framebuffer.h index d02b86f..c402ce7 100644 --- a/src/mesa/main/framebuffer.h +++ b/src/mesa/main/framebuffer.h @@ -76,6 +76,35 @@ _mesa_scissor_bounding_box(const struct gl_context *ctx, const struct gl_framebuffer *buffer, unsigned idx, int *bbox); +static inline GLuint +_mesa_geometric_width(const struct gl_framebuffer *buffer) +{ + return buffer->_HasAttachments ? + buffer->Width : buffer->DefaultGeometry.Width; +} + + +static inline GLuint +_mesa_geometric_height(const struct gl_framebuffer *buffer) +{ + return buffer->_HasAttachments ? + buffer->Height : buffer->DefaultGeometry.Height; +} + +static inline GLuint +_mesa_geometric_samples(const struct gl_framebuffer *buffer) +{ + return buffer->_HasAttachments ? + buffer->Visual.samples : buffer->DefaultGeometry.NumSamples; +} + +static inline GLuint +_mesa_geometric_layers(const struct gl_framebuffer *buffer) +{ + return buffer->_HasAttachments ? + buffer->MaxNumLayers : buffer->DefaultGeometry.Layers; +} + extern void _mesa_update_draw_buffer_bounds(struct gl_context *ctx, struct gl_framebuffer *drawFb); diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 1a37aa6..7e1f0e0 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -3189,7 +3189,13 @@ struct gl_framebuffer * 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) + * _HasAttachments being false). To get the geometry + * of the framebuffer, the helper functions + * _mesa_geometric_width(), + * _mesa_geometric_height(), + * _mesa_geometric_samples(), + * _mesa_geometric_layers() + * are available that check _HasAttachments. */ GLboolean _HasAttachments; -- 1.9.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev