+</function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am
index 1c4b86a..9a0e944 100644
--- a/src/mapi/glapi/gen/Makefile.am
+++ b/src/mapi/glapi/gen/Makefile.am
@@ -130,6 +130,7 @@ API_XML = \
ARB_ES2_compatibility.xml \
ARB_ES3_compatibility.xml \
ARB_framebuffer_object.xml \
+ ARB_framebuffer_no_attachments.xml \
ARB_geometry_shader4.xml \
ARB_get_program_binary.xml \
ARB_gpu_shader_fp64.xml \
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index a8a6db6..4eea396 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -8325,6 +8325,7 @@
</category>
<!-- ARB extensions #130..#131 -->
+<xi:include href="ARB_framebuffer_no_attachments.xml"
xmlns:xi="http://www.w3.org/2001/XInclude"/>
<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..8712c46 100644
--- a/src/mesa/main/get_hash_params.py
+++ b/src/mesa/main/get_hash_params.py
@@ -1,3 +1,35 @@
+# 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" ],
@@ -46,6 +78,7 @@ descriptor=[
[ "UNPACK_ALIGNMENT", "CONTEXT_INT(Unpack.Alignment), NO_EXTRA" ],
[ "VIEWPORT", "LOC_CUSTOM, TYPE_FLOAT_4, 0, NO_EXTRA" ],
+
# GL_ARB_multitexture
[ "ACTIVE_TEXTURE", "LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA" ],
@@ -798,6 +831,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