15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci OES_surfaceless_context 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_OES_surfaceless_context 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContributors 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Kristian Hoegsberg, Intel 125bd8deadSopenharmony_ci Steven Holte, NVIDIA 135bd8deadSopenharmony_ci Greg Roth, NVIDIA 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ciContact 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ci Steven Holte, NVIDIA (sholte 'at' nvidia.com) 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ciNotice 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ci Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at 225bd8deadSopenharmony_ci http://www.khronos.org/registry/speccopyright.html 235bd8deadSopenharmony_ci 245bd8deadSopenharmony_ciSpecification Update Policy 255bd8deadSopenharmony_ci 265bd8deadSopenharmony_ci Khronos-approved extension specifications are updated in response to 275bd8deadSopenharmony_ci issues and bugs prioritized by the Khronos OpenGL ES Working Group. For 285bd8deadSopenharmony_ci extensions which have been promoted to a core Specification, fixes will 295bd8deadSopenharmony_ci first appear in the latest version of that core Specification, and will 305bd8deadSopenharmony_ci eventually be backported to the extension document. This policy is 315bd8deadSopenharmony_ci described in more detail at 325bd8deadSopenharmony_ci https://www.khronos.org/registry/OpenGL/docs/update_policy.php 335bd8deadSopenharmony_ci 345bd8deadSopenharmony_ciStatus 355bd8deadSopenharmony_ci 365bd8deadSopenharmony_ci Complete. 375bd8deadSopenharmony_ci Approved by the OpenGL ES Working Group. 385bd8deadSopenharmony_ci Ratified by the Khronos Board of Promoters on July 28, 2012. 395bd8deadSopenharmony_ci 405bd8deadSopenharmony_ciVersion 415bd8deadSopenharmony_ci 425bd8deadSopenharmony_ci Version 4, 2012/05/30 435bd8deadSopenharmony_ci 445bd8deadSopenharmony_ciNumber 455bd8deadSopenharmony_ci 465bd8deadSopenharmony_ci OpenGL ES Extension #116 475bd8deadSopenharmony_ci 485bd8deadSopenharmony_ciDependencies 495bd8deadSopenharmony_ci 505bd8deadSopenharmony_ci This extension is written against the OpenGL ES 2.0 Specification 515bd8deadSopenharmony_ci but can apply to OpenGL ES 1.1 with the GL_OES_framebuffer_object 525bd8deadSopenharmony_ci extension. 535bd8deadSopenharmony_ci 545bd8deadSopenharmony_ci Support for creating contexts that this extension applies to may 555bd8deadSopenharmony_ci require extensions to companion APIs (see 565bd8deadSopenharmony_ci EGL_KHR_surfaceless_context) 575bd8deadSopenharmony_ci 585bd8deadSopenharmony_ciOverview 595bd8deadSopenharmony_ci 605bd8deadSopenharmony_ci Applications that only want to render to framebuffer objects should 615bd8deadSopenharmony_ci not need to create a throw-away EGL surface (typically a 1x1 625bd8deadSopenharmony_ci pbuffer) just to get a current context. The EGL extension 635bd8deadSopenharmony_ci KHR_surfaceless_context provides a mechanism for making a context 645bd8deadSopenharmony_ci current without a surface. This extensions specifies the behaviour 655bd8deadSopenharmony_ci of OpenGL ES 1.x and OpenGL ES 2.0 when such a context is made 665bd8deadSopenharmony_ci current. 675bd8deadSopenharmony_ci 685bd8deadSopenharmony_ciNew Procedures and Functions 695bd8deadSopenharmony_ci 705bd8deadSopenharmony_ci None 715bd8deadSopenharmony_ci 725bd8deadSopenharmony_ciNew Tokens 735bd8deadSopenharmony_ci 745bd8deadSopenharmony_ci Returned by glCheckFramebufferStatusOES and glCheckFramebufferStatus: 755bd8deadSopenharmony_ci 765bd8deadSopenharmony_ci GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 775bd8deadSopenharmony_ci 785bd8deadSopenharmony_ciAdditions to Chapter 2 'OpenGL ES Operation' of the OpenGL ES 2.0 795bd8deadSopenharmony_ciSpecification: 805bd8deadSopenharmony_ci 815bd8deadSopenharmony_ci In section 2.1 'OpenGL ES Fundamentals', replace the paragraphs 825bd8deadSopenharmony_ci beginning: 835bd8deadSopenharmony_ci 845bd8deadSopenharmony_ci " The GL interacts with two classes of framebuffers: window- 855bd8deadSopenharmony_ci system-provided framebuffers and application-created framebuffers ... 865bd8deadSopenharmony_ci The effects of GL commands on the window-system-provided 875bd8deadSopenharmony_ci framebuffer are ultimately controlled by the window-system that 885bd8deadSopenharmony_ci allocates framebuffer resources ... 895bd8deadSopenharmony_ci The initialization of a GL context itself occurs when the 905bd8deadSopenharmony_ci window-system allocates a window for GL rendering and is influenced 915bd8deadSopenharmony_ci by the state of the windowsystem-provided framebuffer" 925bd8deadSopenharmony_ci 935bd8deadSopenharmony_ci with the following paragraphs: 945bd8deadSopenharmony_ci 955bd8deadSopenharmony_ci " The GL interacts with two classes of framebuffers: window 965bd8deadSopenharmony_ci system-provided and application-created. There is at most one window 975bd8deadSopenharmony_ci system-provided framebuffer at any time, referred to as the default 985bd8deadSopenharmony_ci framebuffer. Application-created framebuffers, referred to as 995bd8deadSopenharmony_ci framebuffer objects, may be created as desired. These two types of 1005bd8deadSopenharmony_ci framebuffer are distinguished primarily by the interface for 1015bd8deadSopenharmony_ci configuring and managing their state. 1025bd8deadSopenharmony_ci The effects of GL commands on the default framebuffer are 1035bd8deadSopenharmony_ci ultimately controlled by the window system, which allocates 1045bd8deadSopenharmony_ci framebuffer resources, determines which portions of the default 1055bd8deadSopenharmony_ci framebuffer the GL may access at any given time, and communicates to 1065bd8deadSopenharmony_ci the GL how those portions are structured. Therefore, there are no GL 1075bd8deadSopenharmony_ci commands to initialize a GL context or configure the default 1085bd8deadSopenharmony_ci framebuffer. 1095bd8deadSopenharmony_ci Similarly, display of framebuffer contents on a physical display 1105bd8deadSopenharmony_ci device (including the transformation of individual framebuffer 1115bd8deadSopenharmony_ci values by such techniques as gamma correction) is not addressed by 1125bd8deadSopenharmony_ci the GL. 1135bd8deadSopenharmony_ci Allocation and configuration of the default framebuffer occurs 1145bd8deadSopenharmony_ci outside of the GL in conjunction with the window system, using 1155bd8deadSopenharmony_ci companion APIs, such as EGL. Allocation and initialization of GL 1165bd8deadSopenharmony_ci contexts is also done using these companion APIs. GL contexts can 1175bd8deadSopenharmony_ci typically be associated with different default framebuffers, and 1185bd8deadSopenharmony_ci some context state is determined at the time this association is 1195bd8deadSopenharmony_ci performed. 1205bd8deadSopenharmony_ci It is possible to use a GL context without a default framebuffer, 1215bd8deadSopenharmony_ci in which case a framebuffer object must be used to perform all 1225bd8deadSopenharmony_ci rendering. This is useful for applications needing to perform 1235bd8deadSopenharmony_ci offscreen rendering." 1245bd8deadSopenharmony_ci 1255bd8deadSopenharmony_ci In the last paragraph of section 2.12 'Controlling the viewport', 1265bd8deadSopenharmony_ci after the sentence: 1275bd8deadSopenharmony_ci 1285bd8deadSopenharmony_ci " In the initial state, w and h are set to the width and height, 1295bd8deadSopenharmony_ci respectively, of the window into which the GL is to do its 1305bd8deadSopenharmony_ci rendering." 1315bd8deadSopenharmony_ci 1325bd8deadSopenharmony_ci Add the sentence: 1335bd8deadSopenharmony_ci 1345bd8deadSopenharmony_ci " If no default framebuffer is associated with the GL context (see 1355bd8deadSopenharmony_ci chapter 4), then w and h are initially set to zero." 1365bd8deadSopenharmony_ci 1375bd8deadSopenharmony_ciAdditions to Chapter 4 'Per-Fragment Operations and the Framebuffer', of 1385bd8deadSopenharmony_cithe OpenGL ES 2.0 Specification: 1395bd8deadSopenharmony_ci 1405bd8deadSopenharmony_ci In the introduction, after the sentence: 1415bd8deadSopenharmony_ci 1425bd8deadSopenharmony_ci " Further, and implementation or context may not provide depth or 1435bd8deadSopenharmony_ci stencil buffers." 1445bd8deadSopenharmony_ci 1455bd8deadSopenharmony_ci Add the sentence: 1465bd8deadSopenharmony_ci " If no default framebuffer is associated with the GL context, the 1475bd8deadSopenharmony_ci framebuffer is incomplete except when a framebuffer object is bound. 1485bd8deadSopenharmony_ci (see sections 4.4.1 and 4.4.5)" 1495bd8deadSopenharmony_ci 1505bd8deadSopenharmony_ci In the last paragraph of section 4.1.2 'Scissor Test', after the 1515bd8deadSopenharmony_ci sentence 1525bd8deadSopenharmony_ci 1535bd8deadSopenharmony_ci " The state required consists of four integer values and a bit 1545bd8deadSopenharmony_ci indicating whether the test is enabled or disabled. In the initial 1555bd8deadSopenharmony_ci state left = bottom = 0; width and height are determined by the size 1565bd8deadSopenharmony_ci of the GL window." 1575bd8deadSopenharmony_ci 1585bd8deadSopenharmony_ci Add the sentence: 1595bd8deadSopenharmony_ci 1605bd8deadSopenharmony_ci " If the default framebuffer is bound but no default framebuffer is 1615bd8deadSopenharmony_ci associated with the GL context (see chapter 4), then width and 1625bd8deadSopenharmony_ci height are initially set to zero." 1635bd8deadSopenharmony_ci 1645bd8deadSopenharmony_ci In section 4.4.5 'Framebuffer Completeness', before the first 1655bd8deadSopenharmony_ci paragraph, add the paragraphs: 1665bd8deadSopenharmony_ci 1675bd8deadSopenharmony_ci " A framebuffer must be framebuffer complete to effectively be 1685bd8deadSopenharmony_ci used as the draw or read framebuffer of the GL. 1695bd8deadSopenharmony_ci The default framebuffer is always complete if it exists; however, 1705bd8deadSopenharmony_ci if no default framebuffer exists (no window system-provided drawable 1715bd8deadSopenharmony_ci is associated with the GL context), it is deemed to be incomplete." 1725bd8deadSopenharmony_ci 1735bd8deadSopenharmony_ci In the subsection 'Framebuffer Completeness', add to the list of 1745bd8deadSopenharmony_ci rules for framebuffer completeness and associated errors: 1755bd8deadSopenharmony_ci 1765bd8deadSopenharmony_ci "* if target is the default framebuffer, the default framebuffer 1775bd8deadSopenharmony_ci exists. { FRAMEBUFFER_UNDEFINED_OES } " 1785bd8deadSopenharmony_ci 1795bd8deadSopenharmony_ci To the list of actions which may affect framebuffer completeness, 1805bd8deadSopenharmony_ci add the action: 1815bd8deadSopenharmony_ci 1825bd8deadSopenharmony_ci " Associating a different window system-provided drawable, or no 1835bd8deadSopenharmony_ci drawable, with the default framebuffer using a window system binding 1845bd8deadSopenharmony_ci API such as EGL." 1855bd8deadSopenharmony_ci 1865bd8deadSopenharmony_ciRevision History 1875bd8deadSopenharmony_ci 1885bd8deadSopenharmony_ci Version 4, 2012/05/30 (Greg Roth) - OESify. Add suffix. Omit 1895bd8deadSopenharmony_ci indiscression. Revise widths. 1905bd8deadSopenharmony_ci 1915bd8deadSopenharmony_ci Version 3, 2012/05/29 (Steven Holte) - Typo corrections. 1925bd8deadSopenharmony_ci 1935bd8deadSopenharmony_ci Version 2, 2012/04/13 (Steven Holte) - Language modifications 1945bd8deadSopenharmony_ci expanded to include harmonize with related specifications. 1955bd8deadSopenharmony_ci 1965bd8deadSopenharmony_ci Version 1, 2010/08/19 (Kristian Hoegsberg) - Initial draft, based 1975bd8deadSopenharmony_ci on Jon's wording in the EGL_KHR_surfaceless_gles extension. 198