Edit

kc3-lang/angle/extensions/EGL_ANGLE_iosurface_client_buffer.txt

Branch :

  • Show log

    Commit

  • Author : Corentin Wallez
    Date : 2018-02-16 17:12:19
    Hash : 3f4b87b4
    Message : Expand the EGLIOSurfaceClientBufferTests This expands the test to check for validation errors and that multiple formats of IOSurfaces can be read from / rendered to. It fixes a couple issues in the implementation of the extension too. Minor fixes in the EGL_ANGLE_iosurface_client_buffer extension text. Fix a fragile test that was not setting the texture unit a shader is to sample from. BUG=angleproject:1649 Change-Id: Ied2a9bfff95cb3a9a7a59008260899eb2fc55575 Reviewed-on: https://chromium-review.googlesource.com/924477 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>

  • extensions/EGL_ANGLE_iosurface_client_buffer.txt
  • Name
    
        ANGLE_iosurface_client_buffer
    
    Name Strings
    
        EGL_ANGLE_iosurface_client_buffer
    
    Contributors
    
        Corentin Wallez
        Geoff Lang
    
    Contacts
    
        Corentin Wallez, Google Inc. (cwallez 'at' google.com)
    
    Status
    
        Draft
    
    Version
    
        Version 1, Dec 6, 2017
    
    Number
    
        EGL Extension #??
    
    Dependencies
    
        This extension is written against the wording of the EGL 1.4
        Specification.
    
    Overview
    
        This extension allows creating EGL surfaces from IOSurface objects.
    
    New Types
    
        None
    
    New Procedures and Functions
    
        None
    
    New Tokens
    
        Accepted in the <buftype> parameter of eglCreatePbufferFromClientBuffer:
    
            EGL_IOSURFACE_ANGLE            0x3454
            EGL_IOSURFACE_PLANE_ANGLE      0x345A
            EGL_TEXTURE_RECTANGLE_ANGLE    0x345B
            EGL_TEXTURE_TYPE_ANGLE         0x345C
            EGL_TEXTURE_INTERNAL_FORMAT_ANGLE 0x345D
    
    Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
    
        Replace the last sentence of paragraph 1 of Section 3.5.3 with the
        following text.
        "Currently, the only client API resources which may be bound in this
        fashion are OpenVG VGImage objects and IOSurface objects."
    
        Replace the third paragraph of Section 3.5.3 with the following text.
        "<buftype> specifies the type of buffer to be bound. The only allowed values
        of <buftype> are EGL_OPENVG_IMAGE and EGL_IOSURFACE_ANGLE".
    
        Append the following text to the fourth paragraph of Section 3.5.3.
        "When <buftype> is EGL_IOSURFACE_ANGLE, <buffer> must be a valid IOSurface
        object case into the type EGLClientBuffer."
    
        Append to the end of Section 3.5.3.
        "When <buftype> is EGL_IOSURFACE_ANGLE, <attrib_list> must contain all the
        following attributes otherwise EGL_BAD_PARAMETER is generated. The
        attributes must satisfy the following constraints otherwise
        EGL_BAD_ATTRIBUTE is generated:
          - EGL_TEXTURE_TYPE_ANGLE, and EGL_TEXTURE_INTERNAL_FORMAT_ANGLE followed
        by OpenGL enums for texture types, and texture internal format
        respectively.
          - EGL_TEXTURE_FORMAT with a value of EGL_TEXTURE_RGBA
          - EGL_WIDTH with a value between 1 and the width of <buffer>.
          - EGL_HEIGHT with a value between 1 and the height of <buffer>.
          - EGL_TEXTURE_TARGET with a value of EGL_TEXTURE_RECTANGLE_ANGLE
          - EGL_IOSURFACE_PLANE_ANGLE with a value between 0 and the number of
        planes of <buffer> (exclusive).
    
        In addition the EGL_TEXTURE_TYPE_ANGLE and
        EGL_TEXTURE_INTERNAL_FORMAT_ANGLE attributes must be one of the
        combinations listed in table egl.iosurface.formats or an
        EGL_BAD_PARAMETER is generated. The combination must also be a valid
        combinations for glTexImage2D or EGL_BAD_PARAMETER is generated."
    
        ---------------------------------------------------------------------------
        Texture Type               Texture Internal Format
        ---------------------------------------------------------------------------
        GL_UNSIGNED_BYTE           GL_RED
        GL_UNSIGNED_SHORT          GL_R16UI
        GL_UNSIGNED_BYTE           GL_RG
        GL_UNSIGNED_BYTE           GL_BGRA_EXT
        GL_HALF_FLOAT              GL_RGBA
        ---------------------------------------------------------------------------
        Table egl.iosurface.formats - Valid combinations of format, type and
        internal format for IOSurface-backed pbuffers.
        ---------------------------------------------------------------------------
    
        Append to the end of Section 3.5.3.
        "When a pbuffer is created with type EGL_IOSURFACE_ANGLE, the contents
        of the associcated IOSurface object are undefined while the pbuffer is
        bound to a client texture."
    
        Append to the list of errors generated by eglMakeCurrent in Section 3.7.3:
        "  - If either draw or read are pbuffers created with
        eglCreatePbufferFromClientBuffer with <buftype> set to EGL_IOSURFACE_ANGLE,
        an EGL_BAD_SURFACE is generated."
    
    Issues
    
        There are no issues, please move on.
    
    Revision History
    
        Version 1, 2017/12/06 - first draft.