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