15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    EXT_framebuffer_blit
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_EXT_framebuffer_blit
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContributors
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Michael Gold
125bd8deadSopenharmony_ci    Evan Hart
135bd8deadSopenharmony_ci    Jeff Juliano
145bd8deadSopenharmony_ci    Jon Leech
155bd8deadSopenharmony_ci    Bill Licea-Kane
165bd8deadSopenharmony_ci    Barthold Lichtenbelt
175bd8deadSopenharmony_ci    Brian Paul
185bd8deadSopenharmony_ci    Ian Romanick
195bd8deadSopenharmony_ci    John Rosasco
205bd8deadSopenharmony_ci    Jeremy Sandmel
215bd8deadSopenharmony_ci    Eskil Steenberg
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ciContact
245bd8deadSopenharmony_ci
255bd8deadSopenharmony_ci    Michael Gold, NVIDIA Corporation (gold 'at' nvidia.com)
265bd8deadSopenharmony_ci
275bd8deadSopenharmony_ciStatus
285bd8deadSopenharmony_ci
295bd8deadSopenharmony_ci    Complete.  Approved by the ARB "superbuffers" working group on
305bd8deadSopenharmony_ci    November 8, 2005.
315bd8deadSopenharmony_ci
325bd8deadSopenharmony_ciVersion
335bd8deadSopenharmony_ci
345bd8deadSopenharmony_ci    Last Modified Date: April 5, 2007
355bd8deadSopenharmony_ci    Author Revision: 15
365bd8deadSopenharmony_ci
375bd8deadSopenharmony_ciNumber
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ci    316
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ciDependencies
425bd8deadSopenharmony_ci
435bd8deadSopenharmony_ci    OpenGL 1.1 is required.
445bd8deadSopenharmony_ci
455bd8deadSopenharmony_ci    EXT_framebuffer_object is required.
465bd8deadSopenharmony_ci
475bd8deadSopenharmony_ci    The extension is written against the OpenGL 1.5 specification.
485bd8deadSopenharmony_ci
495bd8deadSopenharmony_ci    ARB_color_buffer_float affects the definition of this extension.
505bd8deadSopenharmony_ci
515bd8deadSopenharmony_ciOverview
525bd8deadSopenharmony_ci
535bd8deadSopenharmony_ci    This extension modifies EXT_framebuffer_object by splitting the
545bd8deadSopenharmony_ci    framebuffer object binding point into separate DRAW and READ
555bd8deadSopenharmony_ci    bindings.  This allows copying directly from one framebuffer to
565bd8deadSopenharmony_ci    another.  In addition, a new high performance blit function is
575bd8deadSopenharmony_ci    added to facilitate these blits and perform some data conversion
585bd8deadSopenharmony_ci    where allowed.
595bd8deadSopenharmony_ci
605bd8deadSopenharmony_ciIP Status
615bd8deadSopenharmony_ci
625bd8deadSopenharmony_ci    No known IP claims.
635bd8deadSopenharmony_ci
645bd8deadSopenharmony_ciNew Procedures and Functions
655bd8deadSopenharmony_ci
665bd8deadSopenharmony_ci    void BlitFramebufferEXT(int srcX0, int srcY0, int srcX1, int srcY1,
675bd8deadSopenharmony_ci                            int dstX0, int dstY0, int dstX1, int dstY1,
685bd8deadSopenharmony_ci                            bitfield mask, enum filter);
695bd8deadSopenharmony_ci
705bd8deadSopenharmony_ciNew Tokens
715bd8deadSopenharmony_ci
725bd8deadSopenharmony_ci    Accepted by the <target> parameter of BindFramebufferEXT,
735bd8deadSopenharmony_ci    CheckFramebufferStatusEXT, FramebufferTexture{1D|2D|3D}EXT,
745bd8deadSopenharmony_ci    FramebufferRenderbufferEXT, and
755bd8deadSopenharmony_ci    GetFramebufferAttachmentParameterivEXT:
765bd8deadSopenharmony_ci
775bd8deadSopenharmony_ci    READ_FRAMEBUFFER_EXT                0x8CA8
785bd8deadSopenharmony_ci    DRAW_FRAMEBUFFER_EXT                0x8CA9
795bd8deadSopenharmony_ci
805bd8deadSopenharmony_ci    Accepted by the <pname> parameters of GetIntegerv, GetFloatv, and GetDoublev:
815bd8deadSopenharmony_ci
825bd8deadSopenharmony_ci    DRAW_FRAMEBUFFER_BINDING_EXT        0x8CA6 // alias FRAMEBUFFER_BINDING_EXT
835bd8deadSopenharmony_ci    READ_FRAMEBUFFER_BINDING_EXT        0x8CAA
845bd8deadSopenharmony_ci
855bd8deadSopenharmony_ci
865bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 1.5 Specification (OpenGL Operation)
875bd8deadSopenharmony_ci
885bd8deadSopenharmony_ci    Append the following to section 2.6.1:
895bd8deadSopenharmony_ci
905bd8deadSopenharmony_ci    "Calling Begin will result in an INVALID_FRAMEBUFFER_OPERATION_EXT
915bd8deadSopenharmony_ci    error if the object bound to DRAW_FRAMEBUFFER_BINDING_EXT is not
925bd8deadSopenharmony_ci    "framebuffer complete" (section 4.4.4.2)."
935bd8deadSopenharmony_ci
945bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 1.5 Specification (Rasterization)
955bd8deadSopenharmony_ci
965bd8deadSopenharmony_ci    Add to section 3.6.3, at the end of the subsection titled
975bd8deadSopenharmony_ci    "Alternate Color Table Specification Commands":
985bd8deadSopenharmony_ci
995bd8deadSopenharmony_ci    "Calling CopyColorTable or CopyColorSubTable will result in an
1005bd8deadSopenharmony_ci    INVALID_FRAMEBUFFER_OPERATION_EXT error if the object bound to
1015bd8deadSopenharmony_ci    READ_FRAMEBUFFER_BINDING_EXT is not "framebuffer complete"
1025bd8deadSopenharmony_ci    (section 4.4.4.2)."
1035bd8deadSopenharmony_ci
1045bd8deadSopenharmony_ci    Add to section 3.6.3, at the end of the subsection titled
1055bd8deadSopenharmony_ci    "Alternate Convolution Filter Specification Commands":
1065bd8deadSopenharmony_ci
1075bd8deadSopenharmony_ci    "Calling CopyConvolutionFilter1D or CopyConvolutionFilter2D will
1085bd8deadSopenharmony_ci    result in an INVALID_FRAMEBUFFER_OPERATION_EXT error if the object
1095bd8deadSopenharmony_ci    bound to READ_FRAMEBUFFER_BINDING_EXT is not "framebuffer
1105bd8deadSopenharmony_ci    complete" (section 4.4.4.2)."
1115bd8deadSopenharmony_ci
1125bd8deadSopenharmony_ci    In section 3.6.4, modify the final paragraph of the definition of
1135bd8deadSopenharmony_ci    DrawPixels as follows:
1145bd8deadSopenharmony_ci
1155bd8deadSopenharmony_ci    "Calling DrawPixels will result in an
1165bd8deadSopenharmony_ci    INVALID_FRAMEBUFFER_OPERATION_EXT error if the object bound to
1175bd8deadSopenharmony_ci    DRAW_FRAMEBUFFER_BINDING_EXT is not "framebuffer complete"
1185bd8deadSopenharmony_ci    (section 4.4.4.2)."
1195bd8deadSopenharmony_ci
1205bd8deadSopenharmony_ci    Add the following to section 3.7, following the description of
1215bd8deadSopenharmony_ci    Bitmap:
1225bd8deadSopenharmony_ci
1235bd8deadSopenharmony_ci    "Calling Bitmap will result in an
1245bd8deadSopenharmony_ci    INVALID_FRAMEBUFFER_OPERATION_EXT error if the object bound to
1255bd8deadSopenharmony_ci    DRAW_FRAMEBUFFER_BINDING_EXT is not "framebuffer complete"
1265bd8deadSopenharmony_ci    (section 4.4.4.2)."
1275bd8deadSopenharmony_ci
1285bd8deadSopenharmony_ci    Append the following to section 3.8.2:
1295bd8deadSopenharmony_ci
1305bd8deadSopenharmony_ci    "Calling CopyTexSubImage3D, CopyTexImage2D,
1315bd8deadSopenharmony_ci    CopyTexSubImage2D, CopyTexImage1D or CopyTexSubImage1D will result
1325bd8deadSopenharmony_ci    in an INVALID_FRAMEBUFFER_OPERATION_EXT error if the object bound
1335bd8deadSopenharmony_ci    to READ_FRAMEBUFFER_BINDING_EXT is not "framebuffer complete"
1345bd8deadSopenharmony_ci    (section 4.4.4.2)."
1355bd8deadSopenharmony_ci
1365bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 1.5 Specification (Per-Fragment
1375bd8deadSopenharmony_ciOperations and the Frame Buffer)
1385bd8deadSopenharmony_ci
1395bd8deadSopenharmony_ci    Change the first word of Chapter 4 from "The" to "A".
1405bd8deadSopenharmony_ci
1415bd8deadSopenharmony_ci    Append to the introduction of Chapter 4:
1425bd8deadSopenharmony_ci
1435bd8deadSopenharmony_ci    "Conceptually, the GL has two active framebuffers; the draw
1445bd8deadSopenharmony_ci    framebuffer is the destination for rendering operations, and the
1455bd8deadSopenharmony_ci    read framebuffer is the source for readback operations.  The same
1465bd8deadSopenharmony_ci    framebuffer may be used for both drawing and reading.  Section
1475bd8deadSopenharmony_ci    4.4.1 describes the mechanism for controlling framebuffer usage."
1485bd8deadSopenharmony_ci
1495bd8deadSopenharmony_ci    Modify the last paragraph of section 4.1.1 as follows:
1505bd8deadSopenharmony_ci
1515bd8deadSopenharmony_ci    "While an application-created framebuffer object is bound to
1525bd8deadSopenharmony_ci    DRAW_FRAMEBUFFER_EXT, the pixel ownership test always passes."
1535bd8deadSopenharmony_ci
1545bd8deadSopenharmony_ci    Modify the last sentence of the second to last paragraph of
1555bd8deadSopenharmony_ci    section 4.2.4 as follows:
1565bd8deadSopenharmony_ci
1575bd8deadSopenharmony_ci    "If there is no accumulation buffer, or if the DRAW_FRAMEBUFFER_EXT
1585bd8deadSopenharmony_ci    and READ_FRAMEBUFFER_EXT bindings (section 4.4.4.2) do not refer to
1595bd8deadSopenharmony_ci    the same object, or if the GL is in color index mode, Accum
1605bd8deadSopenharmony_ci    generates the error INVALID_OPERATION."
1615bd8deadSopenharmony_ci
1625bd8deadSopenharmony_ci    Add to 4.3.2 (Reading Pixels), right before the subsection titled
1635bd8deadSopenharmony_ci    "Obtaining Pixels from the Framebuffer":
1645bd8deadSopenharmony_ci
1655bd8deadSopenharmony_ci    "Calling ReadPixels generates INVALID_FRAMEBUFFER_OPERATION_EXT if
1665bd8deadSopenharmony_ci    the object bound to READ_FRAMEBUFFER_BINDING_EXT is not "framebuffer
1675bd8deadSopenharmony_ci    complete" (section 4.4.4.2)."
1685bd8deadSopenharmony_ci
1695bd8deadSopenharmony_ci    In section 4.3.2, modify the definition of ReadBuffer as follows:
1705bd8deadSopenharmony_ci
1715bd8deadSopenharmony_ci    "The command
1725bd8deadSopenharmony_ci
1735bd8deadSopenharmony_ci         void ReadBuffer( enum src );
1745bd8deadSopenharmony_ci
1755bd8deadSopenharmony_ci    takes a symbolic constant as argument.  <src> must be one of the
1765bd8deadSopenharmony_ci    values from tables 4.4 or 10.nnn.  Otherwise, INVALID_ENUM is
1775bd8deadSopenharmony_ci    generated.  Further, the acceptable values for <src> depend on
1785bd8deadSopenharmony_ci    whether the GL is using the default window-system-provided
1795bd8deadSopenharmony_ci    framebuffer (i.e., READ_FRAMEBUFFER_BINDING_EXT is zero), or an
1805bd8deadSopenharmony_ci    application-created framebuffer object (i.e.,
1815bd8deadSopenharmony_ci    READ_FRAMEBUFFER_BINDING_EXT is non-zero).  For more information
1825bd8deadSopenharmony_ci    about application-created framebuffer objects, see section 4.4.
1835bd8deadSopenharmony_ci
1845bd8deadSopenharmony_ci    When READ_FRAMEBUFFER_BINDING_EXT is zero, i.e. the default
1855bd8deadSopenharmony_ci    window-system-provided framebuffer, <src> must be one of the
1865bd8deadSopenharmony_ci    values listed in table 4.4. FRONT and LEFT refer to the front left
1875bd8deadSopenharmony_ci    buffer, BACK refers to the back left buffer, and RIGHT refers to
1885bd8deadSopenharmony_ci    the front right buffer.  The other constants correspond directly
1895bd8deadSopenharmony_ci    to the buffers that they name. If the requested buffer is missing,
1905bd8deadSopenharmony_ci    then the error INVALID_OPERATION is generated.  For the default
1915bd8deadSopenharmony_ci    window-system-provided framebuffer, the initial setting for
1925bd8deadSopenharmony_ci    ReadBuffer is FRONT if there is no back buffer and BACK
1935bd8deadSopenharmony_ci    otherwise.
1945bd8deadSopenharmony_ci
1955bd8deadSopenharmony_ci    Modify the first sentence of section 4.3.3 as follows:
1965bd8deadSopenharmony_ci
1975bd8deadSopenharmony_ci    "CopyPixels transfers a rectangle of pixel values from one region
1985bd8deadSopenharmony_ci    of the read framebuffer to another in the draw framebuffer."
1995bd8deadSopenharmony_ci
2005bd8deadSopenharmony_ci    Add the following text to section 4.3.3, page 194, inside the
2015bd8deadSopenharmony_ci    definition of CopyPixels:
2025bd8deadSopenharmony_ci
2035bd8deadSopenharmony_ci    "Finally, the behavior of several GL operations is specified "as if
2045bd8deadSopenharmony_ci    the arguments were passed to CopyPixels."  These operations include:
2055bd8deadSopenharmony_ci    CopyTex{Sub}Image*, CopyColor{Sub}Table, and CopyConvolutionFilter*.
2065bd8deadSopenharmony_ci    INVALID_FRAMEBUFFER_OPERATION_EXT will be generated if an attempt is
2075bd8deadSopenharmony_ci    made to execute one of these operations, or CopyPixels, while the
2085bd8deadSopenharmony_ci    object bound to READ_FRAMEBUFFER_BINDING_EXT is not "framebuffer
2095bd8deadSopenharmony_ci    complete" (as defined in section 4.4.4.2).  Furthermore, an attempt
2105bd8deadSopenharmony_ci    to execute CopyPixels will generate
2115bd8deadSopenharmony_ci    INVALID_FRAMEBUFFER_OPERATION_EXT while the object bound to
2125bd8deadSopenharmony_ci    DRAW_FRAMEBUFFER_BINDING_EXT is not "framebuffer complete"."
2135bd8deadSopenharmony_ci
2145bd8deadSopenharmony_ci    Append to section 4.3.3:
2155bd8deadSopenharmony_ci
2165bd8deadSopenharmony_ci    "BlitFramebufferEXT transfers a rectangle of pixel values from one
2175bd8deadSopenharmony_ci    region of the read framebuffer to another in the draw framebuffer.
2185bd8deadSopenharmony_ci    There are some important distinctions from CopyPixels, as
2195bd8deadSopenharmony_ci    described below.
2205bd8deadSopenharmony_ci
2215bd8deadSopenharmony_ci    BlitFramebufferEXT(int srcX0, int srcY0, int srcX1, int srcY1,
2225bd8deadSopenharmony_ci                       int dstX0, int dstY0, int dstX1, int dstY1,
2235bd8deadSopenharmony_ci                       bitfield mask, enum filter);
2245bd8deadSopenharmony_ci
2255bd8deadSopenharmony_ci    <mask> is the bitwise OR of a number of values indicating which
2265bd8deadSopenharmony_ci    buffers are to be copied. The values are COLOR_BUFFER_BIT,
2275bd8deadSopenharmony_ci    DEPTH_BUFFER_BIT, and STENCIL_BUFFER_BIT, which are described in
2285bd8deadSopenharmony_ci    section 4.2.3.  The pixels corresponding to these buffers are
2295bd8deadSopenharmony_ci    copied from the source rectangle, bound by the locations (srcX0,
2305bd8deadSopenharmony_ci    srcY0) and (srcX1, srcY1), to the destination rectangle, bound by
2315bd8deadSopenharmony_ci    the locations (dstX0, dstY0) and (dstX1, dstY1).  The lower bounds
2325bd8deadSopenharmony_ci    of the rectangle are inclusive, while the upper bounds are
2335bd8deadSopenharmony_ci    exclusive.
2345bd8deadSopenharmony_ci
2355bd8deadSopenharmony_ci    If the source and destination rectangle dimensions do not match,
2365bd8deadSopenharmony_ci    the source image is stretched to fit the destination
2375bd8deadSopenharmony_ci    rectangle. <filter> must be LINEAR or NEAREST and specifies the
2385bd8deadSopenharmony_ci    method of interpolation to be applied if the image is
2395bd8deadSopenharmony_ci    stretched. LINEAR filtering is allowed only for the color buffer;
2405bd8deadSopenharmony_ci    if <mask> includes DEPTH_BUFFER_BIT or STENCIL_BUFFER_BIT, and
2415bd8deadSopenharmony_ci    filter is not NEAREST, no copy is performed and an
2425bd8deadSopenharmony_ci    INVALID_OPERATION error is generated.  If the source and
2435bd8deadSopenharmony_ci    destination dimensions are identical, no filtering is applied.  If
2445bd8deadSopenharmony_ci    either the source or destination rectangle specifies a negative
2455bd8deadSopenharmony_ci    dimension, the image is reversed in the corresponding direction.
2465bd8deadSopenharmony_ci    If both the source and destination rectangles specify a negative
2475bd8deadSopenharmony_ci    dimension for the same direction, no reversal is performed.
2485bd8deadSopenharmony_ci
2495bd8deadSopenharmony_ci    If the source and destination buffers are identical, and the
2505bd8deadSopenharmony_ci    source and destination rectangles overlap, the result of the blit
2515bd8deadSopenharmony_ci    operation is undefined.
2525bd8deadSopenharmony_ci
2535bd8deadSopenharmony_ci    The pixel copy bypasses the fragment pipeline.  The only fragment
2545bd8deadSopenharmony_ci    operations which affect the blit are the pixel ownership test and
2555bd8deadSopenharmony_ci    the scissor test.
2565bd8deadSopenharmony_ci
2575bd8deadSopenharmony_ci    If a buffer is specified in <mask> and does not exist in both the
2585bd8deadSopenharmony_ci    read and draw framebuffers, the corresponding bit is silently
2595bd8deadSopenharmony_ci    ignored.
2605bd8deadSopenharmony_ci
2615bd8deadSopenharmony_ci    If the color formats of the read and draw framebuffers do not
2625bd8deadSopenharmony_ci    match, and <mask> includes COLOR_BUFFER_BIT, the pixel groups are
2635bd8deadSopenharmony_ci    converted to match the destination format as in CopyPixels, except
2645bd8deadSopenharmony_ci    that no pixel transfer operations apply and clamping behaves as if
2655bd8deadSopenharmony_ci    CLAMP_FRAGMENT_COLOR_ARB is set to FIXED_ONLY_ARB.
2665bd8deadSopenharmony_ci    
2675bd8deadSopenharmony_ci    Calling CopyPixels or BlitFramebufferEXT will result in an
2685bd8deadSopenharmony_ci    INVALID_FRAMEBUFFER_OPERATION_EXT error if the objects bound to
2695bd8deadSopenharmony_ci    DRAW_FRAMEBUFFER_BINDING_EXT and READ_FRAMEBUFFER_BINDING_EXT are
2705bd8deadSopenharmony_ci    not "framebuffer complete" (section 4.4.4.2)."
2715bd8deadSopenharmony_ci
2725bd8deadSopenharmony_ci    Calling BlitFramebufferEXT will result in an INVALID_OPERATION
2735bd8deadSopenharmony_ci    error if <mask> includes DEPTH_BUFFER_BIT or STENCIL_BUFFER_BIT
2745bd8deadSopenharmony_ci    and the source and destination depth and stencil buffer formats do
2755bd8deadSopenharmony_ci    not match.
2765bd8deadSopenharmony_ci
2775bd8deadSopenharmony_ci    Modify the beginning of section 4.4.1 as follows:
2785bd8deadSopenharmony_ci
2795bd8deadSopenharmony_ci    "The default framebuffer for rendering and readback operations is
2805bd8deadSopenharmony_ci    provided by the windowing system.  In addition, named framebuffer
2815bd8deadSopenharmony_ci    objects can be created and operated upon.  The namespace for
2825bd8deadSopenharmony_ci    framebuffer objects is the unsigned integers, with zero reserved
2835bd8deadSopenharmony_ci    by the GL for the default framebuffer.
2845bd8deadSopenharmony_ci
2855bd8deadSopenharmony_ci    A framebuffer object is created by binding an unused name to
2865bd8deadSopenharmony_ci    DRAW_FRAMEBUFFER_EXT or READ_FRAMEBUFFER_EXT.  The binding is
2875bd8deadSopenharmony_ci    effected by calling
2885bd8deadSopenharmony_ci
2895bd8deadSopenharmony_ci        void BindFramebufferEXT(enum target, uint framebuffer);
2905bd8deadSopenharmony_ci
2915bd8deadSopenharmony_ci    with <target> set to the desired framebuffer target and
2925bd8deadSopenharmony_ci    <framebuffer> set to the unused name.  The resulting framebuffer
2935bd8deadSopenharmony_ci    object is a new state vector, comprising all the state values
2945bd8deadSopenharmony_ci    listed in table 4.nnn, as well as one set of the state values
2955bd8deadSopenharmony_ci    listed in table 5.nnn for each attachment point of the
2965bd8deadSopenharmony_ci    framebuffer, set to the same initial values.  There are
2975bd8deadSopenharmony_ci    MAX_COLOR_ATTACHMENTS_EXT color attachment points, plus one each
2985bd8deadSopenharmony_ci    for the depth and stencil attachment points.
2995bd8deadSopenharmony_ci
3005bd8deadSopenharmony_ci    BindFramebufferEXT may also be used to bind an existing
3015bd8deadSopenharmony_ci    framebuffer object to DRAW_FRAMEBUFFER_EXT or
3025bd8deadSopenharmony_ci    READ_FRAMEBUFFER_EXT.  If the bind is successful no change is made
3035bd8deadSopenharmony_ci    to the state of the bound framebuffer object, and any previous
3045bd8deadSopenharmony_ci    binding to <target> is broken.
3055bd8deadSopenharmony_ci
3065bd8deadSopenharmony_ci    If a framebuffer object is bound to DRAW_FRAMEBUFFER_EXT or
3075bd8deadSopenharmony_ci    READ_FRAMEBUFFER_EXT, it becomes the target for rendering or
3085bd8deadSopenharmony_ci    readback operations, respectively, until it is deleted or another
3095bd8deadSopenharmony_ci    framebuffer is bound to the corresponding bind point.  Calling
3105bd8deadSopenharmony_ci    BindFramebufferEXT with <target> set to FRAMEBUFFER_EXT binds the
3115bd8deadSopenharmony_ci    framebuffer to both DRAW_FRAMEBUFFER_EXT and READ_FRAMEBUFFER_EXT.
3125bd8deadSopenharmony_ci
3135bd8deadSopenharmony_ci    While a framebuffer object is bound, GL operations on the target
3145bd8deadSopenharmony_ci    to which it is bound affect the images attached to the bound
3155bd8deadSopenharmony_ci    framebuffer object, and queries of the target to which it is bound
3165bd8deadSopenharmony_ci    return state from the bound object.  Queries of the values
3175bd8deadSopenharmony_ci    specified in table 6.31 (Implementation Dependent Pixel Depths)
3185bd8deadSopenharmony_ci    and table 8.nnn (Framebuffer-Dependent State Variables) are
3195bd8deadSopenharmony_ci    derived from the framebuffer object bound to DRAW_FRAMEBUFFER_EXT.
3205bd8deadSopenharmony_ci
3215bd8deadSopenharmony_ci    The initial state of DRAW_FRAMEBUFFER_EXT and READ_FRAMEBUFFER_EXT
3225bd8deadSopenharmony_ci    refers to the default framebuffer provided by the windowing
3235bd8deadSopenharmony_ci    system.  In order that access to the default framebuffer is not
3245bd8deadSopenharmony_ci    lost, it is treated as a framebuffer object with the name of 0.
3255bd8deadSopenharmony_ci    The default framebuffer is therefore rendered to and read from
3265bd8deadSopenharmony_ci    while 0 is bound to the corresponding targets.  On some
3275bd8deadSopenharmony_ci    implementations, the properties of the default framebuffer can
3285bd8deadSopenharmony_ci    change over time (e.g., in response to windowing system events
3295bd8deadSopenharmony_ci    such as attaching the context to a new windowing system drawable.)"
3305bd8deadSopenharmony_ci
3315bd8deadSopenharmony_ci    Change the description of DeleteFramebuffersEXT as follows:
3325bd8deadSopenharmony_ci
3335bd8deadSopenharmony_ci    "<framebuffers> contains <n> names of framebuffer objects to be
3345bd8deadSopenharmony_ci    deleted.  After a framebuffer object is deleted, it has no
3355bd8deadSopenharmony_ci    attachments, and its name is again unused.  If a framebuffer that
3365bd8deadSopenharmony_ci    is currently bound to one or more of the targets
3375bd8deadSopenharmony_ci    DRAW_FRAMEBUFFER_EXT or READ_FRAMEBUFFER_EXT is deleted, it is as
3385bd8deadSopenharmony_ci    though BindFramebufferEXT had been executed with the corresponding
3395bd8deadSopenharmony_ci    <target> and <framebuffer> zero.  Unused names in <framebuffers>
3405bd8deadSopenharmony_ci    are silently ignored, as is the value zero."
3415bd8deadSopenharmony_ci
3425bd8deadSopenharmony_ci
3435bd8deadSopenharmony_ci    In section 4.4.2.2, modify the first two sentences of the
3445bd8deadSopenharmony_ci    description of FramebufferRenderbufferEXT as follows:
3455bd8deadSopenharmony_ci
3465bd8deadSopenharmony_ci    "<target> must be DRAW_FRAMEBUFFER_EXT, READ_FRAMEBUFFER_EXT, or
3475bd8deadSopenharmony_ci    FRAMEBUFFER_EXT.  If <target> is FRAMEBUFFER_EXT, it behaves as
3485bd8deadSopenharmony_ci    though DRAW_FRAMEBUFFER_EXT was specified.  INVALID_OPERATION is
3495bd8deadSopenharmony_ci    generated if the value of the corresponding binding is zero."
3505bd8deadSopenharmony_ci
3515bd8deadSopenharmony_ci    In section 4.4.2.3, modify the first two sentences of the
3525bd8deadSopenharmony_ci    description of FramebufferTexturexDEXT as follows:
3535bd8deadSopenharmony_ci
3545bd8deadSopenharmony_ci    "In all three routines, <target> must be DRAW_FRAMEBUFFER_EXT,
3555bd8deadSopenharmony_ci    READ_FRAMEBUFFER_EXT, or FRAMEBUFFER_EXT.  If <target> is
3565bd8deadSopenharmony_ci    FRAMEBUFFER_EXT, it behaves as though DRAW_FRAMEBUFFER_EXT was
3575bd8deadSopenharmony_ci    specified.  INVALID_OPERATION is generated if the value of the
3585bd8deadSopenharmony_ci    corresponding binding is zero."
3595bd8deadSopenharmony_ci
3605bd8deadSopenharmony_ci    In section 4.4.4.2, modify the first sentence of the description
3615bd8deadSopenharmony_ci    of CheckFramebufferStatusEXT as follows:
3625bd8deadSopenharmony_ci
3635bd8deadSopenharmony_ci    "If <target> is not DRAW_FRAMEBUFFER_EXT, READ_FRAMEBUFFER_EXT or
3645bd8deadSopenharmony_ci    FRAMEBUFFER_EXT, INVALID_ENUM is generated.  If <target> is
3655bd8deadSopenharmony_ci    FRAMEBUFFER_EXT, it behaves as though DRAW_FRAMEBUFFER_EXT was
3665bd8deadSopenharmony_ci    specified."
3675bd8deadSopenharmony_ci
3685bd8deadSopenharmony_ci    Modify section 4.4.4.3 as follows:
3695bd8deadSopenharmony_ci
3705bd8deadSopenharmony_ci    "Attempting to render to or read from a framebuffer which is not
3715bd8deadSopenharmony_ci    framebuffer complete will generate an
3725bd8deadSopenharmony_ci    INVALID_FRAMEBUFFER_OPERATION_EXT error."
3735bd8deadSopenharmony_ci    
3745bd8deadSopenharmony_ci
3755bd8deadSopenharmony_ci
3765bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL 1.5 Specification (State and State
3775bd8deadSopenharmony_ciRequests)
3785bd8deadSopenharmony_ci
3795bd8deadSopenharmony_ci    In section 6.1.3, modify the first sentence of the description of
3805bd8deadSopenharmony_ci    GetFramebufferAttachmentParameterivEXT as follows:
3815bd8deadSopenharmony_ci
3825bd8deadSopenharmony_ci    "<target> must be DRAW_FRAMEBUFFER_EXT, READ_FRAMEBUFFER_EXT or
3835bd8deadSopenharmony_ci    FRAMEBUFFER_EXT.  If <target> is FRAMEBUFFER_EXT, it behaves as
3845bd8deadSopenharmony_ci    though DRAW_FRAMEBUFFER_EXT was specified."
3855bd8deadSopenharmony_ci
3865bd8deadSopenharmony_ci
3875bd8deadSopenharmony_ciGLX Protocol
3885bd8deadSopenharmony_ci
3895bd8deadSopenharmony_ci    BlitFramebufferEXT
3905bd8deadSopenharmony_ci        2        44              rendering command length
3915bd8deadSopenharmony_ci        2        4330            rendering command opcode
3925bd8deadSopenharmony_ci        4        CARD32          source X0
3935bd8deadSopenharmony_ci        4        CARD32          source Y0
3945bd8deadSopenharmony_ci        4        CARD32          source X1
3955bd8deadSopenharmony_ci        4        CARD32          source Y1
3965bd8deadSopenharmony_ci        4        CARD32          destination X0
3975bd8deadSopenharmony_ci        4        CARD32          destination Y0
3985bd8deadSopenharmony_ci        4        CARD32          destination X1
3995bd8deadSopenharmony_ci        4        CARD32          destination Y1
4005bd8deadSopenharmony_ci        4        CARD32          mask
4015bd8deadSopenharmony_ci        4        ENUM            filter
4025bd8deadSopenharmony_ci
4035bd8deadSopenharmony_ciDependencies on ARB_color_buffer_float
4045bd8deadSopenharmony_ci
4055bd8deadSopenharmony_ci    The reference to CLAMP_FRAGMENT_COLOR_ARB in section 4.3.3 applies
4065bd8deadSopenharmony_ci    only if ARB_color_buffer_float is supported.
4075bd8deadSopenharmony_ci
4085bd8deadSopenharmony_ciErrors
4095bd8deadSopenharmony_ci
4105bd8deadSopenharmony_ci    The error INVALID_FRAMEBUFFER_OPERATION_EXT is generated if
4115bd8deadSopenharmony_ci    BlitFramebufferEXT, DrawPixels, or CopyPixels is called while the
4125bd8deadSopenharmony_ci    draw framebuffer is not framebuffer complete.
4135bd8deadSopenharmony_ci
4145bd8deadSopenharmony_ci    The error INVALID_FRAMEBUFFER_OPERATION_EXT is generated if
4155bd8deadSopenharmony_ci    BlitFramebufferEXT, ReadPixels, CopyPixels, CopyTex{Sub}Image*,
4165bd8deadSopenharmony_ci    CopyColor{Sub}Table, or CopyConvolutionFilter* is called while the
4175bd8deadSopenharmony_ci    read framebuffer is not framebuffer complete.
4185bd8deadSopenharmony_ci
4195bd8deadSopenharmony_ci    The error INVALID_VALUE is generated by BlitFramebufferEXT if
4205bd8deadSopenharmony_ci    <mask> has any bits set other than those named by
4215bd8deadSopenharmony_ci    COLOR_BUFFER_BIT, DEPTH_BUFFER_BIT or STENCIL_BUFFER_BIT.
4225bd8deadSopenharmony_ci
4235bd8deadSopenharmony_ci    The error INVALID_OPERATION is generated if BlitFramebufferEXT is
4245bd8deadSopenharmony_ci    called and <mask> includes DEPTH_BUFFER_BIT or STENCIL_BUFFER_BIT
4255bd8deadSopenharmony_ci    and <filter> is not NEAREST.
4265bd8deadSopenharmony_ci
4275bd8deadSopenharmony_ci    The error INVALID_OPERATION is generated if BlitFramebufferEXT is
4285bd8deadSopenharmony_ci    called and <mask> includes DEPTH_BUFFER_BIT or STENCIL_BUFFER_BIT
4295bd8deadSopenharmony_ci    and the source and destination depth or stencil buffer formats do
4305bd8deadSopenharmony_ci    not match.
4315bd8deadSopenharmony_ci
4325bd8deadSopenharmony_ci    The error INVALID_ENUM is generated by BlitFramebufferEXT if
4335bd8deadSopenharmony_ci    <filter> is not LINEAR or NEAREST.
4345bd8deadSopenharmony_ci
4355bd8deadSopenharmony_ci    The error INVALID_OPERATION is generated if BlitFramebufferEXT 
4365bd8deadSopenharmony_ci    is called within a Begin/End pair.
4375bd8deadSopenharmony_ci
4385bd8deadSopenharmony_ci    The error INVALID_ENUM is generated if BindFramebufferEXT,
4395bd8deadSopenharmony_ci    CheckFramebufferStatusEXT, FramebufferTexture{1D|2D|3D}EXT,
4405bd8deadSopenharmony_ci    FramebufferRenderbufferEXT, or
4415bd8deadSopenharmony_ci    GetFramebufferAttachmentParameterivEXT is called and <target> is
4425bd8deadSopenharmony_ci    not DRAW_FRAMEBUFFER_EXT, READ_FRAMEBUFFER_EXT or FRAMEBUFFER_EXT.
4435bd8deadSopenharmony_ci
4445bd8deadSopenharmony_ciNew State
4455bd8deadSopenharmony_ci
4465bd8deadSopenharmony_ci    (modify table 3.nnn, "Framebuffer (state per framebuffer target binding point)")
4475bd8deadSopenharmony_ci
4485bd8deadSopenharmony_ci    Get Value                     Type   Get Command   Initial Value    Description               Section       Attribute
4495bd8deadSopenharmony_ci    ----------------------------  ----   -----------   --------------   -------------------       ------------  ---------
4505bd8deadSopenharmony_ci    DRAW_FRAMEBUFFER_BINDING_EXT   Z+    GetIntegerv   0                framebuffer object bound  4.4.1         -
4515bd8deadSopenharmony_ci                                                                        to DRAW_FRAMEBUFFER_EXT
4525bd8deadSopenharmony_ci    READ_FRAMEBUFFER_BINDING_EXT   Z+    GetIntegerv   0                framebuffer object        4.4.1         -
4535bd8deadSopenharmony_ci                                                                        to READ_FRAMEBUFFER_EXT
4545bd8deadSopenharmony_ci
4555bd8deadSopenharmony_ci    Remove reference to FRAMEBUFFER_BINDING_EXT.
4565bd8deadSopenharmony_ci
4575bd8deadSopenharmony_ci
4585bd8deadSopenharmony_ciSample Code
4595bd8deadSopenharmony_ci
4605bd8deadSopenharmony_ci    /* Render to framebuffer object 2 */
4615bd8deadSopenharmony_ci    BindFramebufferEXT(DRAW_FRAMEBUFFER_EXT, 2);
4625bd8deadSopenharmony_ci    RenderScene();
4635bd8deadSopenharmony_ci
4645bd8deadSopenharmony_ci    /* Blit contents of color buffer, depth buffer and stencil buffer
4655bd8deadSopenharmony_ci     * from framebuffer object 2 to framebuffer object 1.
4665bd8deadSopenharmony_ci     */
4675bd8deadSopenharmony_ci    BindFramebufferEXT(READ_FRAMEBUFFER_EXT, 2);
4685bd8deadSopenharmony_ci    BindFramebufferEXT(DRAW_FRAMEBUFFER_EXT, 1);
4695bd8deadSopenharmony_ci    BlitFramebufferEXT(0, 0, 640, 480,
4705bd8deadSopenharmony_ci                       0, 0, 640, 480,
4715bd8deadSopenharmony_ci                       GL_COLOR_BUFFER_BIT |
4725bd8deadSopenharmony_ci                       GL_DEPTH_BUFFER_BIT |
4735bd8deadSopenharmony_ci                       GL_STENCIL_BUFFER_BIT,
4745bd8deadSopenharmony_ci                       GL_NEAREST);
4755bd8deadSopenharmony_ci
4765bd8deadSopenharmony_ci    /* Blit contents of color buffer from framebuffer object 1 to
4775bd8deadSopenharmony_ci     * framebuffer object 2, inverting the image in the X direction.
4785bd8deadSopenharmony_ci     */
4795bd8deadSopenharmony_ci    BindFramebufferEXT(READ_FRAMEBUFFER_EXT, 1);
4805bd8deadSopenharmony_ci    BindFramebufferEXT(DRAW_FRAMEBUFFER_EXT, 2);
4815bd8deadSopenharmony_ci    BlitFramebufferEXT(0, 0, 640, 480,
4825bd8deadSopenharmony_ci                       640, 0, 0, 480,
4835bd8deadSopenharmony_ci                       GL_COLOR_BUFFER_BIT,
4845bd8deadSopenharmony_ci                       GL_NEAREST);
4855bd8deadSopenharmony_ci
4865bd8deadSopenharmony_ci    /* Blit color buffer from framebuffer object 1 to framebuffer
4875bd8deadSopenharmony_ci     * object 3 with a 2X zoom and linear filtering.
4885bd8deadSopenharmony_ci     */
4895bd8deadSopenharmony_ci    BindFramebufferEXT(READ_FRAMEBUFFER_EXT, 1);
4905bd8deadSopenharmony_ci    BindFramebufferEXT(DRAW_FRAMEBUFFER_EXT, 3);
4915bd8deadSopenharmony_ci    BlitFramebufferEXT(0, 0, 640, 480,
4925bd8deadSopenharmony_ci                       0, 0, 1280, 960,
4935bd8deadSopenharmony_ci                       GL_COLOR_BUFFER_BIT, GL_LINEAR);
4945bd8deadSopenharmony_ci
4955bd8deadSopenharmony_ci
4965bd8deadSopenharmony_ciIssues
4975bd8deadSopenharmony_ci
4985bd8deadSopenharmony_ci    1) Should we pass in explicit source/dest rects instead of using
4995bd8deadSopenharmony_ci       the rasterpos/pixelzoom?
5005bd8deadSopenharmony_ci
5015bd8deadSopenharmony_ci        Resolved: use explicit rects, so we don't need to perform
5025bd8deadSopenharmony_ci        multiple state changes.
5035bd8deadSopenharmony_ci
5045bd8deadSopenharmony_ci    2) Should rects be (start,size) or (start,end)?
5055bd8deadSopenharmony_ci
5065bd8deadSopenharmony_ci        Resolved: use (start,end).  This is a break from the past
5075bd8deadSopenharmony_ci        (scissor, viewport) but is more intuitive than allowing a
5085bd8deadSopenharmony_ci        negative size where mirrored zooms are desireable.
5095bd8deadSopenharmony_ci
5105bd8deadSopenharmony_ci    3) What should we call the blit function?
5115bd8deadSopenharmony_ci
5125bd8deadSopenharmony_ci        Resolved: BlitFramebufferEXT
5135bd8deadSopenharmony_ci
5145bd8deadSopenharmony_ci    4) Should filtering apply to depth or stencil values?
5155bd8deadSopenharmony_ci
5165bd8deadSopenharmony_ci        Resolved: No
5175bd8deadSopenharmony_ci
5185bd8deadSopenharmony_ci    5) What happens if LINEAR is specified and DEPTH or STENCIL is in
5195bd8deadSopenharmony_ci       the mask?
5205bd8deadSopenharmony_ci
5215bd8deadSopenharmony_ci        Resolved: Generate ERROR_INVALID_OPERATION
5225bd8deadSopenharmony_ci
5235bd8deadSopenharmony_ci    6) What happens if READ_FRAMEBUFFER is NONE and a read is
5245bd8deadSopenharmony_ci       attempted?
5255bd8deadSopenharmony_ci
5265bd8deadSopenharmony_ci        Resolved: Generate ERROR_INVALID_OPERATION
5275bd8deadSopenharmony_ci
5285bd8deadSopenharmony_ci    7) Should we generalize binding point assignment with a single
5295bd8deadSopenharmony_ci       entry point and a parameter specifying read/write/whatever?
5305bd8deadSopenharmony_ci
5315bd8deadSopenharmony_ci        Resolved: concensus leans toward separate Read/Draw entry
5325bd8deadSopenharmony_ci        points.
5335bd8deadSopenharmony_ci
5345bd8deadSopenharmony_ci    8) Should we define READ_FRAMEBUFFER and DRAW_FRAMEBUFFER targets
5355bd8deadSopenharmony_ci       for BindFramebuffer instead of introducing a new level of
5365bd8deadSopenharmony_ci       indirection?
5375bd8deadSopenharmony_ci
5385bd8deadSopenharmony_ci        Resolved: Yes.  Binding to the legacy target FRAMEBUFFER sets
5395bd8deadSopenharmony_ci        both DRAW_FRAMEBUFFER and READ_FRAMEBUFFER.  Querying
5405bd8deadSopenharmony_ci        FRAMEBUFFER_BINDING return the DRAW_FRAMEBUFFER_BINDING.
5415bd8deadSopenharmony_ci
5425bd8deadSopenharmony_ci    9) What happens when a user queries framebuffer attributes,
5435bd8deadSopenharmony_ci       e.g. Get(RED_BITS)?  Is the result returned from
5445bd8deadSopenharmony_ci       READ_FRAMEBUFFER or DRAW_FRAMEBUFFER?  Do we need a new query?
5455bd8deadSopenharmony_ci       e.g.
5465bd8deadSopenharmony_ci
5475bd8deadSopenharmony_ci       GetFramebufferParameteriv(int target, enum pname, int* value)
5485bd8deadSopenharmony_ci
5495bd8deadSopenharmony_ci        Resolved: always return the value associated with the
5505bd8deadSopenharmony_ci        DRAW_FRAMEBUFFER.  Do not add a new query.
5515bd8deadSopenharmony_ci
5525bd8deadSopenharmony_ci    10) How does Accum behave in the presence of separate READ/DRAW
5535bd8deadSopenharmony_ci        framebuffers?
5545bd8deadSopenharmony_ci
5555bd8deadSopenharmony_ci        Resolved: Accum returns INVALID_OPERATION if the
5565bd8deadSopenharmony_ci        READ_FRAMEBUFFER and DRAW_FRAMEBUFFER bindings are not
5575bd8deadSopenharmony_ci        identical.
5585bd8deadSopenharmony_ci
5595bd8deadSopenharmony_ci    11) Should blits be allowed between buffers of different bit sizes?
5605bd8deadSopenharmony_ci
5615bd8deadSopenharmony_ci        Resolved: Yes, for color buffers only.  Attempting to blit
5625bd8deadSopenharmony_ci        between depth or stencil buffers of different size generates
5635bd8deadSopenharmony_ci        INVALID_OPERATION.
5645bd8deadSopenharmony_ci
5655bd8deadSopenharmony_ci    12) Should we add support for multiple ReadBuffers, so that
5665bd8deadSopenharmony_ci        multiple color buffers may be copied with a single call to
5675bd8deadSopenharmony_ci        BlitFramebuffer?
5685bd8deadSopenharmony_ci
5695bd8deadSopenharmony_ci        Resolved: No, we considered this but the behavior is awkward
5705bd8deadSopenharmony_ci        to define and the functionality is of limited use.
5715bd8deadSopenharmony_ci
5725bd8deadSopenharmony_ci    13) How should BlitFramebuffer color space conversion be
5735bd8deadSopenharmony_ci        specified?  Do we allow context clamp state to affect the
5745bd8deadSopenharmony_ci        blit?
5755bd8deadSopenharmony_ci
5765bd8deadSopenharmony_ci        Resolved: Blitting to a fixed point buffer always clamps,
5775bd8deadSopenharmony_ci        blitting to a floating point buffer never clamps.  The context
5785bd8deadSopenharmony_ci        state is ignored.
5795bd8deadSopenharmony_ci
5805bd8deadSopenharmony_ci    14) Should overlapped blits be allowed?  Should they be guaranteed
5815bd8deadSopenharmony_ci        to work?
5825bd8deadSopenharmony_ci
5835bd8deadSopenharmony_ci        Resolved: Overlapping blits are allowed but are undefined.
5845bd8deadSopenharmony_ci
5855bd8deadSopenharmony_ci
5865bd8deadSopenharmony_ciRevision History
5875bd8deadSopenharmony_ci
5885bd8deadSopenharmony_ci    Revision 15, 2007/4/6
5895bd8deadSopenharmony_ci      - Removed language left over from ReadBuffers.
5905bd8deadSopenharmony_ci      - Removed reference to nonexistent 'CopyTexImage3D'.
5915bd8deadSopenharmony_ci    Revision 14, 2006/09/29
5925bd8deadSopenharmony_ci      - Changed the resolution of issue 12 to reflect the working
5935bd8deadSopenharmony_ci        group decision to abandon ReadBuffers.
5945bd8deadSopenharmony_ci      - Eliminated issues 15, 16 and 17 as they are no longer relevent.
5955bd8deadSopenharmony_ci      - Changed the resolution of issue 14 and the corresponding spec
5965bd8deadSopenharmony_ci        language to indicate that the result of an overlapping blit is
5975bd8deadSopenharmony_ci        undefined.
5985bd8deadSopenharmony_ci      - Changed the spec language to clarify that the lower bound of a
5995bd8deadSopenharmony_ci        blit rectangle is inclusive while the upper bound is
6005bd8deadSopenharmony_ci        exclusive.
6015bd8deadSopenharmony_ci      - Added a sample showing an inverted blit, to clarify the pixel
6025bd8deadSopenharmony_ci        addressing rules.
6035bd8deadSopenharmony_ci      - Clarified spec language and error behavior to indicate that
6045bd8deadSopenharmony_ci        blitting DEPTH and STENCIL buffers with LINEAR filtering is
6055bd8deadSopenharmony_ci        always disallowed, whether or not the blit is scaling.
6065bd8deadSopenharmony_ci    Revision 13, 2006/06/01 (Jeff Juliano)
6075bd8deadSopenharmony_ci      - Clarify errors generated when read and draw framebuffers are
6085bd8deadSopenharmony_ci        incomplete.
6095bd8deadSopenharmony_ci    Revision 12, 2005/12/22 (Jon Leech)
6105bd8deadSopenharmony_ci      - Assigned enumerant values. Add return type to BlitFramebufferEXT.
6115bd8deadSopenharmony_ci        Note INVALID_ENUM error if filter is not LINEAR or NEAREST.
6125bd8deadSopenharmony_ci    Revision 11, 2005/12/14
6135bd8deadSopenharmony_ci      - Added several missing conditions to the Errors section.
6145bd8deadSopenharmony_ci      - Changed status to "Complete".
6155bd8deadSopenharmony_ci    Revision 10, 2005/11/6
6165bd8deadSopenharmony_ci      - Removed all ReadBuffers discussion, as this functionality will
6175bd8deadSopenharmony_ci        be deferred.  Issues 15-17 are hereafter irrelevent.
6185bd8deadSopenharmony_ci    Revision 9, 2005/10/31
6195bd8deadSopenharmony_ci      - Resolved issue 16 and updated language to reflect this decision.
6205bd8deadSopenharmony_ci      - Minor language changes per feedback.
6215bd8deadSopenharmony_ci      - Added issue 17 and resolution, although language does not reflect this.
6225bd8deadSopenharmony_ci    Revision 8, 2005/10/20
6235bd8deadSopenharmony_ci      - Added ReadBuffersEXT language
6245bd8deadSopenharmony_ci      - Removed some redundant language in ReadBuffer
6255bd8deadSopenharmony_ci      - Re-opened issue 15 for further consideration
6265bd8deadSopenharmony_ci      - Added issue 16
6275bd8deadSopenharmony_ci    Revision 7, 2005/10/7
6285bd8deadSopenharmony_ci      - Added issues 13 and 14, and resolution for 11, 13, and 14.
6295bd8deadSopenharmony_ci      - Added dependency on ARB_color_buffer_float.
6305bd8deadSopenharmony_ci      - Removed multisample language, now covered in EXT_framebuffer_multisample.
6315bd8deadSopenharmony_ci      - Added framebuffer incomplete error language to spec proper.
6325bd8deadSopenharmony_ci      - Alias DRAW_FRAMEBUFFER_BINDING_EXT to FRAMEBUFFER_BINDING_EXT.
6335bd8deadSopenharmony_ci      - Updated Overview text to reflect the resolution to issue 8.
6345bd8deadSopenharmony_ci    Revision 6, 2005/9/26
6355bd8deadSopenharmony_ci      - Moved issues to the end, per new conventions.
6365bd8deadSopenharmony_ci      - Added new language referring to DRAW_FRAMEBUFFER and
6375bd8deadSopenharmony_ci        READ_FRAMEBUFFER bind points to sections 4.1.1, 4.4.1,
6385bd8deadSopenharmony_ci        4.4.2.2, 4.4.2.3, 4.4.4.2, 6.1.3 and Errors, and updated the
6395bd8deadSopenharmony_ci        example code, per resolution of issue 8.
6405bd8deadSopenharmony_ci      - Added language in section 4.4.1 specifying Get behavior, per
6415bd8deadSopenharmony_ci        resolution of issue 9.
6425bd8deadSopenharmony_ci      - Added language to section 4.2.4 describing new error behavior
6435bd8deadSopenharmony_ci        for Accum, per resolution of issue 10.
6445bd8deadSopenharmony_ci      - Added language to section 4.3.3 describing color format
6455bd8deadSopenharmony_ci        conversion, per resolution of issue 11.
6465bd8deadSopenharmony_ci    Revision 5, 2005/9/6
6475bd8deadSopenharmony_ci      - Added issues 8 - 11
6485bd8deadSopenharmony_ci      - Minor edits from reviewer feedback
6495bd8deadSopenharmony_ci    Revision 4, 2005/9/5
6505bd8deadSopenharmony_ci      - Added chapter 4 intro section
6515bd8deadSopenharmony_ci      - Added errors and state table information
6525bd8deadSopenharmony_ci      - Added sample code
6535bd8deadSopenharmony_ci      - fixed typos
6545bd8deadSopenharmony_ci    Revision 3, 2005/8/29
6555bd8deadSopenharmony_ci      - Converted to spec template
6565bd8deadSopenharmony_ci    Revision 2, 2005/7/18
6575bd8deadSopenharmony_ci      - Lots of new issues added and resolved
6585bd8deadSopenharmony_ci    Revision 1, 2005/7/5
6595bd8deadSopenharmony_ci      - Initial draft
660