1Name 2 3 OES_surfaceless_context 4 5Name Strings 6 7 GL_OES_surfaceless_context 8 9Contributors 10 11 Kristian Hoegsberg, Intel 12 Steven Holte, NVIDIA 13 Greg Roth, NVIDIA 14 15Contact 16 17 Steven Holte, NVIDIA (sholte 'at' nvidia.com) 18 19Notice 20 21 Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at 22 http://www.khronos.org/registry/speccopyright.html 23 24Status 25 26 Complete. 27 Approved by the OpenGL ES Working Group. 28 Ratified by the Khronos Board of Promoters on July 28, 2012. 29 30Version 31 32 Version 4, 2012/05/30 33 34Number 35 36 OpenGL ES Extension #116 37 38Dependencies 39 40 This extension is written against the OpenGL ES 2.0 Specification 41 but can apply to OpenGL ES 1.1 with the GL_OES_framebuffer_object 42 extension. 43 44 Support for creating contexts that this extension applies to may 45 require extensions to companion APIs (see 46 EGL_KHR_surfaceless_context) 47 48Overview 49 50 Applications that only want to render to framebuffer objects should 51 not need to create a throw-away EGL surface (typically a 1x1 52 pbuffer) just to get a current context. The EGL extension 53 KHR_surfaceless_context provides a mechanism for making a context 54 current without a surface. This extensions specifies the behaviour 55 of OpenGL ES 1.x and OpenGL ES 2.0 when such a context is made 56 current. 57 58New Procedures and Functions 59 60 None 61 62New Tokens 63 64 Returned by glCheckFramebufferStatusOES and glCheckFramebufferStatus: 65 66 GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 67 68Additions to Chapter 2 'OpenGL ES Operation' of the OpenGL ES 2.0 69Specification: 70 71 In section 2.1 'OpenGL ES Fundamentals', replace the paragraphs 72 beginning: 73 74 " The GL interacts with two classes of framebuffers: window- 75 system-provided framebuffers and application-created framebuffers ... 76 The effects of GL commands on the window-system-provided 77 framebuffer are ultimately controlled by the window-system that 78 allocates framebuffer resources ... 79 The initialization of a GL context itself occurs when the 80 window-system allocates a window for GL rendering and is influenced 81 by the state of the windowsystem-provided framebuffer" 82 83 with the following paragraphs: 84 85 " The GL interacts with two classes of framebuffers: window 86 system-provided and application-created. There is at most one window 87 system-provided framebuffer at any time, referred to as the default 88 framebuffer. Application-created framebuffers, referred to as 89 framebuffer objects, may be created as desired. These two types of 90 framebuffer are distinguished primarily by the interface for 91 configuring and managing their state. 92 The effects of GL commands on the default framebuffer are 93 ultimately controlled by the window system, which allocates 94 framebuffer resources, determines which portions of the default 95 framebuffer the GL may access at any given time, and communicates to 96 the GL how those portions are structured. Therefore, there are no GL 97 commands to initialize a GL context or configure the default 98 framebuffer. 99 Similarly, display of framebuffer contents on a physical display 100 device (including the transformation of individual framebuffer 101 values by such techniques as gamma correction) is not addressed by 102 the GL. 103 Allocation and configuration of the default framebuffer occurs 104 outside of the GL in conjunction with the window system, using 105 companion APIs, such as EGL. Allocation and initialization of GL 106 contexts is also done using these companion APIs. GL contexts can 107 typically be associated with different default framebuffers, and 108 some context state is determined at the time this association is 109 performed. 110 It is possible to use a GL context without a default framebuffer, 111 in which case a framebuffer object must be used to perform all 112 rendering. This is useful for applications needing to perform 113 offscreen rendering." 114 115 In the last paragraph of section 2.12 'Controlling the viewport', 116 after the sentence: 117 118 " In the initial state, w and h are set to the width and height, 119 respectively, of the window into which the GL is to do its 120 rendering." 121 122 Add the sentence: 123 124 " If no default framebuffer is associated with the GL context (see 125 chapter 4), then w and h are initially set to zero." 126 127Additions to Chapter 4 'Per-Fragment Operations and the Framebuffer', of 128the OpenGL ES 2.0 Specification: 129 130 In the introduction, after the sentence: 131 132 " Further, and implementation or context may not provide depth or 133 stencil buffers." 134 135 Add the sentence: 136 " If no default framebuffer is associated with the GL context, the 137 framebuffer is incomplete except when a framebuffer object is bound. 138 (see sections 4.4.1 and 4.4.5)" 139 140 In the last paragraph of section 4.1.2 'Scissor Test', after the 141 sentence 142 143 " The state required consists of four integer values and a bit 144 indicating whether the test is enabled or disabled. In the initial 145 state left = bottom = 0; width and height are determined by the size 146 of the GL window." 147 148 Add the sentence: 149 150 " If the default framebuffer is bound but no default framebuffer is 151 associated with the GL context (see chapter 4), then width and 152 height are initially set to zero." 153 154 In section 4.4.5 'Framebuffer Completeness', before the first 155 paragraph, add the paragraphs: 156 157 " A framebuffer must be framebuffer complete to effectively be 158 used as the draw or read framebuffer of the GL. 159 The default framebuffer is always complete if it exists; however, 160 if no default framebuffer exists (no window system-provided drawable 161 is associated with the GL context), it is deemed to be incomplete." 162 163 In the subsection 'Framebuffer Completeness', add to the list of 164 rules for framebuffer completeness and associated errors: 165 166 "* if target is the default framebuffer, the default framebuffer 167 exists. { FRAMEBUFFER_UNDEFINED_OES } " 168 169 To the list of actions which may affect framebuffer completeness, 170 add the action: 171 172 " Associating a different window system-provided drawable, or no 173 drawable, with the default framebuffer using a window system binding 174 API such as EGL." 175 176Revision History 177 178 Version 4, 2012/05/30 (Greg Roth) - OESify. Add suffix. Omit 179 indiscression. Revise widths. 180 181 Version 3, 2012/05/29 (Steven Holte) - Typo corrections. 182 183 Version 2, 2012/04/13 (Steven Holte) - Language modifications 184 expanded to include harmonize with related specifications. 185 186 Version 1, 2010/08/19 (Kristian Hoegsberg) - Initial draft, based 187 on Jon's wording in the EGL_KHR_surfaceless_gles extension. 188