blob: 9f129b03004b5b6a45b1ca7f1b27bcd3a406a0eb [file] [log] [blame]
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.