From: Kevin Rogovin <kevin.rogo...@intel.com> Define the enumeration constants, function entry points and glGet for the GL_ARB_framebuffer_no_attachments
--- .../glapi/gen/ARB_framebuffer_no_attachments.xml | 33 +++++++++++++++++++ src/mapi/glapi/gen/Makefile.am | 1 + src/mapi/glapi/gen/gl_API.xml | 4 ++- src/mesa/main/fbobject.c | 12 +++++++ src/mesa/main/fbobject.h | 7 ++++ src/mesa/main/get.c | 3 ++ src/mesa/main/get_hash_params.py | 38 ++++++++++++++++++++++ 7 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 src/mapi/glapi/gen/ARB_framebuffer_no_attachments.xml diff --git a/src/mapi/glapi/gen/ARB_framebuffer_no_attachments.xml b/src/mapi/glapi/gen/ARB_framebuffer_no_attachments.xml new file mode 100644 index 0000000..5bde14d --- /dev/null +++ b/src/mapi/glapi/gen/ARB_framebuffer_no_attachments.xml @@ -0,0 +1,33 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd"> + +<OpenGLAPI> + +<category name="GL_ARB_framebuffer_no_attachments" number="130"> + +<enum name="FRAMEBUFFER_DEFAULT_WIDTH" value="0x9310" /> +<enum name="FRAMEBUFFER_DEFAULT_HEIGHT" value="0x9311" /> +<enum name="FRAMEBUFFER_DEFAULT_LAYERS" value="0x9312" /> +<enum name="FRAMEBUFFER_DEFAULT_SAMPLES" value="0x9313" /> +<enum name="FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS" value="0x9314" /> +<enum name="MAX_FRAMEBUFFER_WIDTH" value="0x9315" /> +<enum name="MAX_FRAMEBUFFER_HEIGHT" value="0x9316" /> +<enum name="MAX_FRAMEBUFFER_LAYERS" value="0x9317" /> +<enum name="MAX_FRAMEBUFFER_SAMPLES" value="0x9318" /> + + +<function name="FramebufferParameteri" offset="assign"> + <param name="target" type="GLenum" /> + <param name="pname" type="GLenum" /> + <param name="param" type="GLint" /> +</function> + +<function name="GetFramebufferParameteriv" offset="assign"> + <param name="target" type="GLenum" /> + <param name="pname" type="GLenum" /> + <param name="params" type="GLint *" output="true" /> +</function> + +</category> + +</OpenGLAPI> diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am index 1c4b86a..dc61739 100644 --- a/src/mapi/glapi/gen/Makefile.am +++ b/src/mapi/glapi/gen/Makefile.am @@ -129,6 +129,7 @@ API_XML = \ ARB_draw_instanced.xml \ ARB_ES2_compatibility.xml \ ARB_ES3_compatibility.xml \ + ARB_framebuffer_no_attachments.xml \ ARB_framebuffer_object.xml \ ARB_geometry_shader4.xml \ ARB_get_program_binary.xml \ diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml index a8a6db6..91882ef 100644 --- a/src/mapi/glapi/gen/gl_API.xml +++ b/src/mapi/glapi/gen/gl_API.xml @@ -8324,7 +8324,9 @@ <!-- No new functions, types, enums. --> </category> -<!-- ARB extensions #130..#131 --> +<xi:include href="ARB_framebuffer_no_attachments.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + +<!-- ARB extensions #131 --> <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..37d9545 100644 --- a/src/mesa/main/get_hash_params.py +++ b/src/mesa/main/get_hash_params.py @@ -1,3 +1,34 @@ +# 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" ], @@ -798,6 +829,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 -- 1.9.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev