| Name |
| |
| OES_surfaceless_context |
| |
| Name Strings |
| |
| GL_OES_surfaceless_context |
| |
| Contributors |
| |
| Kristian Hoegsberg, Intel |
| Steven Holte, NVIDIA |
| Greg Roth, NVIDIA |
| |
| Contact |
| |
| Steven Holte, NVIDIA (sholte 'at' nvidia.com) |
| |
| Notice |
| |
| Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at |
| http://www.khronos.org/registry/speccopyright.html |
| |
| Specification Update Policy |
| |
| Khronos-approved extension specifications are updated in response to |
| issues and bugs prioritized by the Khronos OpenGL ES Working Group. For |
| extensions which have been promoted to a core Specification, fixes will |
| first appear in the latest version of that core Specification, and will |
| eventually be backported to the extension document. This policy is |
| described in more detail at |
| https://www.khronos.org/registry/OpenGL/docs/update_policy.php |
| |
| Status |
| |
| Complete. |
| Approved by the OpenGL ES Working Group. |
| Ratified by the Khronos Board of Promoters on July 28, 2012. |
| |
| Version |
| |
| Version 4, 2012/05/30 |
| |
| Number |
| |
| OpenGL ES Extension #116 |
| |
| Dependencies |
| |
| This extension is written against the OpenGL ES 2.0 Specification |
| but can apply to OpenGL ES 1.1 with the GL_OES_framebuffer_object |
| extension. |
| |
| Support for creating contexts that this extension applies to may |
| require extensions to companion APIs (see |
| EGL_KHR_surfaceless_context) |
| |
| Overview |
| |
| Applications that only want to render to framebuffer objects should |
| not need to create a throw-away EGL surface (typically a 1x1 |
| pbuffer) just to get a current context. The EGL extension |
| KHR_surfaceless_context provides a mechanism for making a context |
| current without a surface. This extensions specifies the behaviour |
| of OpenGL ES 1.x and OpenGL ES 2.0 when such a context is made |
| current. |
| |
| New Procedures and Functions |
| |
| None |
| |
| New Tokens |
| |
| Returned by glCheckFramebufferStatusOES and glCheckFramebufferStatus: |
| |
| GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 |
| |
| Additions to Chapter 2 'OpenGL ES Operation' of the OpenGL ES 2.0 |
| Specification: |
| |
| In section 2.1 'OpenGL ES Fundamentals', replace the paragraphs |
| beginning: |
| |
| " The GL interacts with two classes of framebuffers: window- |
| system-provided framebuffers and application-created framebuffers ... |
| The effects of GL commands on the window-system-provided |
| framebuffer are ultimately controlled by the window-system that |
| allocates framebuffer resources ... |
| The initialization of a GL context itself occurs when the |
| window-system allocates a window for GL rendering and is influenced |
| by the state of the windowsystem-provided framebuffer" |
| |
| with the following paragraphs: |
| |
| " The GL interacts with two classes of framebuffers: window |
| system-provided and application-created. There is at most one window |
| system-provided framebuffer at any time, referred to as the default |
| framebuffer. Application-created framebuffers, referred to as |
| framebuffer objects, may be created as desired. These two types of |
| framebuffer are distinguished primarily by the interface for |
| configuring and managing their state. |
| The effects of GL commands on the default framebuffer are |
| ultimately controlled by the window system, which allocates |
| framebuffer resources, determines which portions of the default |
| framebuffer the GL may access at any given time, and communicates to |
| the GL how those portions are structured. Therefore, there are no GL |
| commands to initialize a GL context or configure the default |
| framebuffer. |
| Similarly, display of framebuffer contents on a physical display |
| device (including the transformation of individual framebuffer |
| values by such techniques as gamma correction) is not addressed by |
| the GL. |
| Allocation and configuration of the default framebuffer occurs |
| outside of the GL in conjunction with the window system, using |
| companion APIs, such as EGL. Allocation and initialization of GL |
| contexts is also done using these companion APIs. GL contexts can |
| typically be associated with different default framebuffers, and |
| some context state is determined at the time this association is |
| performed. |
| It is possible to use a GL context without a default framebuffer, |
| in which case a framebuffer object must be used to perform all |
| rendering. This is useful for applications needing to perform |
| offscreen rendering." |
| |
| In the last paragraph of section 2.12 'Controlling the viewport', |
| after the sentence: |
| |
| " In the initial state, w and h are set to the width and height, |
| respectively, of the window into which the GL is to do its |
| rendering." |
| |
| Add the sentence: |
| |
| " If no default framebuffer is associated with the GL context (see |
| chapter 4), then w and h are initially set to zero." |
| |
| Additions to Chapter 4 'Per-Fragment Operations and the Framebuffer', of |
| the OpenGL ES 2.0 Specification: |
| |
| In the introduction, after the sentence: |
| |
| " Further, and implementation or context may not provide depth or |
| stencil buffers." |
| |
| Add the sentence: |
| " If no default framebuffer is associated with the GL context, the |
| framebuffer is incomplete except when a framebuffer object is bound. |
| (see sections 4.4.1 and 4.4.5)" |
| |
| In the last paragraph of section 4.1.2 'Scissor Test', after the |
| sentence |
| |
| " The state required consists of four integer values and a bit |
| indicating whether the test is enabled or disabled. In the initial |
| state left = bottom = 0; width and height are determined by the size |
| of the GL window." |
| |
| Add the sentence: |
| |
| " If the default framebuffer is bound but no default framebuffer is |
| associated with the GL context (see chapter 4), then width and |
| height are initially set to zero." |
| |
| In section 4.4.5 'Framebuffer Completeness', before the first |
| paragraph, add the paragraphs: |
| |
| " A framebuffer must be framebuffer complete to effectively be |
| used as the draw or read framebuffer of the GL. |
| The default framebuffer is always complete if it exists; however, |
| if no default framebuffer exists (no window system-provided drawable |
| is associated with the GL context), it is deemed to be incomplete." |
| |
| In the subsection 'Framebuffer Completeness', add to the list of |
| rules for framebuffer completeness and associated errors: |
| |
| "* if target is the default framebuffer, the default framebuffer |
| exists. { FRAMEBUFFER_UNDEFINED_OES } " |
| |
| To the list of actions which may affect framebuffer completeness, |
| add the action: |
| |
| " Associating a different window system-provided drawable, or no |
| drawable, with the default framebuffer using a window system binding |
| API such as EGL." |
| |
| Revision History |
| |
| Version 4, 2012/05/30 (Greg Roth) - OESify. Add suffix. Omit |
| indiscression. Revise widths. |
| |
| Version 3, 2012/05/29 (Steven Holte) - Typo corrections. |
| |
| Version 2, 2012/04/13 (Steven Holte) - Language modifications |
| expanded to include harmonize with related specifications. |
| |
| Version 1, 2010/08/19 (Kristian Hoegsberg) - Initial draft, based |
| on Jon's wording in the EGL_KHR_surfaceless_gles extension. |