Hash :
b433e872
        
        Author :
  
        
        Date :
2017-10-05T14:01:47
        
      
Change robust resource init into a context creation attribute. Enabled support on OpenGL even through the extension is not fully implemented so that testing with Chromium/Passthrough commmand decoder is still possible. BUG=angleproject:1635 Change-Id: Ia417b1779aace1eae19514325701a79cd33f4ef3 Reviewed-on: https://chromium-review.googlesource.com/678479 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
Name
    ANGLE_robust_resource_initialization
Name Strings
    EGL_ANGLE_robust_resource_initialization
Contributors
    Geoff Lang, Google
    Ken Russell, Google
Contacts
    Shannon Woods, Google (shannonwoods 'at' google.com)
Status
    Draft
Version
    Version 4, September 19, 2017
Number
    EGL Extension TBD
Dependencies
    This extension is written against the wording of the EGL 1.5
    specification.
    An OpenGL ES implementation supporting ANGLE_robust_resource_initialization
    or an implementation supporting equivalent functionality is required.
Overview
    This extension allows creating an OpenGL ES context or EGL surface
    supporting robust resource initialization.
New Types
    None
New Procedures and Functions
    None
New Tokens
    Accepted as an attribute name by eglCreateContext, eglQueryContext,
    eglCreateWindowSurface, eglCreatePbufferSurface, eglCreatePixmapSurface,
    and eglQuerySurface:
        EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE    0x3453
Additions to the EGL 1.5 Specification
    Add a new section entitled "OpenGL ES Robust Resource Initialization"
    to section 3.7.1:
    "If the attribute EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE
    is set to EGL_TRUE, a context supporting <robust resource initialization>
    will be created. OpenGL ES contexts must support the
    ANGLE_robust_resource_initialization extension, or equivalent core API
    functionality. This attribute is supported only for OpenGL ES contexts.
    The default value of EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE
    is EGL_FALSE."
    Add a new paragraph to section 3.7.4 "Context Queries" under
    eglQueryContext:
    "Querying EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE returns if
    the context was created using robust initialization."
    Add a new paragrah to section 3.5.1 "Creating On-Screen Rendering
    Surfaces" and section 3.5.2 "Creating Off-Screen Rendering Surfaces":
    "EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE specifies if the pixel
    values of the surface are initialized.  If its value is EGL_TRUE then all
    pixel values in the surface are initialized to zero, otherwise the contents
    are undefined. The default value of
    EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE is EGL_FALSE."
    Add a new paragrah to section 3.5.6 "Surface Attributes" under
    eglQuerySurface:
    "Querying EGL_CONTEXT_ROBUST_RESOURCE_INITIALIZATION_ANGLE returns if
    the surface was created using robust initialization."
    Modify the 2nd paragraph of section 3.10.1 "Posting to a Window":
    "... The contents of the color buffer are undefined if the value of the
    EGL_SWAP_BEHAVIOR attribute of surface is not EGL_BUFFER_PRESERVED and
    the value of the EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE is
    EGL_FALSE. ..."
Issues
    (1) Should this be a Display or Context creation extension?
    RESOLVED (3): Making this a Context creation extension has complications in
    the implementation - what happens to resources shared between Contexts
    with and without the extension enabled? Also for display-created resources,
    such as those used in the D3D11 SwapChain, there's no way to specify if
    we want them robustly initialized. Hence it is clearer to specify this
    extension as a Display extension.
    RESOLVED (4): This extension has been moved back to a context/surface
    creation attribute. This makes the extension much easier to detect before
    the GL context is created.
Revision History
    Version 1, 2015/01/07 - first draft.
    Version 2, 2017/03/01 - renamed extension and enum.
    Version 3, 2017/05/31 - renamed extension and made into display extension.
    Version 4, 2017/09/19 - renamed extension and changed into a
                            context/surface creation attribute.