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