mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-02 11:00:27 +01:00
mesa: Define infrastructure for ARB_framebuffer_no_attachments
Define the infrastructure for the extension GL_ARB_framebuffer_no_attachments: - extension table - additions to gl_framebuffer Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Signed-off-by: Kevin Rogovin <kevin.rogovin@intel.com>
This commit is contained in:
parent
a0cd1a4060
commit
da81999bee
4 changed files with 46 additions and 5 deletions
|
|
@ -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 },
|
||||
|
|
|
|||
|
|
@ -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 = true;
|
||||
|
||||
/* Start at -2 to more easily loop over all attachment points.
|
||||
* -2: depth buffer
|
||||
|
|
|
|||
|
|
@ -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 = true;
|
||||
|
||||
compute_depth_max(fb);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3133,12 +3133,29 @@ struct gl_framebuffer
|
|||
*/
|
||||
struct gl_config Visual;
|
||||
|
||||
GLuint Width, Height; /**< size of frame buffer in pixels */
|
||||
/**
|
||||
* Size of frame buffer in pixels. If there are no attachments, then both
|
||||
* of these are 0.
|
||||
*/
|
||||
GLuint Width, Height;
|
||||
|
||||
/** \name Drawing bounds (Intersection of buffer size and scissor box) */
|
||||
/**
|
||||
* 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)
|
||||
* 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 */
|
||||
|
|
@ -3151,6 +3168,16 @@ struct gl_framebuffer
|
|||
/** One of the GL_FRAMEBUFFER_(IN)COMPLETE_* tokens */
|
||||
GLenum _Status;
|
||||
|
||||
/** Whether one of Attachment has Type != GL_NONE
|
||||
* NOTE: the values for Width and Height are set to 0 in case of having
|
||||
* no attachments, a backend driver supporting the extension
|
||||
* 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)
|
||||
*/
|
||||
bool _HasAttachments;
|
||||
|
||||
/** Integer color values */
|
||||
GLboolean _IntegerColor;
|
||||
|
||||
|
|
@ -3161,7 +3188,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;
|
||||
|
||||
|
|
@ -3340,6 +3369,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;
|
||||
|
||||
|
|
@ -3617,6 +3654,7 @@ struct gl_extensions
|
|||
GLboolean ARB_fragment_program;
|
||||
GLboolean ARB_fragment_program_shadow;
|
||||
GLboolean ARB_fragment_shader;
|
||||
GLboolean ARB_framebuffer_no_attachments;
|
||||
GLboolean ARB_framebuffer_object;
|
||||
GLboolean ARB_explicit_attrib_location;
|
||||
GLboolean ARB_explicit_uniform_location;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue