Name

    ANGLE_d3d_texture_client_buffer

Name Strings

    EGL_ANGLE_d3d_texture_client_buffer

Contributors

    Geoff Lang

Contacts

    Geoff Lang, Google Inc. (geofflang 'at' google.com)

Status

    Draft

Version

    Version 1, Oct 5, 2016

Number

    EGL Extension #??

Dependencies

    This extension is written against the wording of the EGL 1.4
    Specification.

    References the EGL_ANGLE_device_d3d extension.

Overview

    This extension allows creating EGL surfaces from D3D texture objects.

New Types

    None

New Procedures and Functions

    None

New Tokens

    Accepted in the <buftype> parameter of eglCreatePbufferFromClientBuffer:

        EGL_D3D_TEXTURE_ANGLE            0x33A3

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 Direct3D texture objects."

    Replace the last sentence of paragraph 2 ("To bind a client API...") of
    Section 3.5.3 with the following text.
    "When <buftype> is EGL_OPENVG_IMAGE or EGL_D3D_TEXTURE_ANGLE, the width and
    height of the pbuffer are determined by the width and height of <buffer>."

    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_D3D_TEXTURE_ANGLE".

    Append the following text to the fourth paragraph of Section 3.5.3.
    "When <buftype> is EGL_D3D_TEXTURE_ANGLE, <buffer> must be
    a valid D3D texture object, cast into the type EGLClientBuffer. See table
    egl.restrictions for acceptable texture object types and formats. If the
    EGL_ANGLE_device_d3d extension is present, the provided D3D texture object
    must have been created by the same D3D device queried from the display.
    If these requirements are not met, an EGL_BAD_PARAMETER error is
    generated."

    ---------------------------------------------------------------------------
    Resource Type      Resource Restrictions
    ---------------------------------------------------------------------------
    IDirect3DTexture9  Memory pool must be D3DPOOL_DEFAULT. Format must be
                       D3DFMT_R8G8B8, D3DFMT_A8R8G8B8, D3DFMT_A16B16G16R16F or
                       D3DFMT_A32B32G32R32F.
    ID3D11Texture2D    Usage flags must be D3D11_USAGE_DEFAULT. Format must be
                       DXGI_FORMAT_R8G8B8A8_UNORM,
                       DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
                       DXGI_FORMAT_B8G8R8A8_UNORM,
                       DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
                       DXGI_FORMAT_R16G16B16A16_FLOAT or
                       DXGI_FORMAT_R32G32B32A32_FLOAT.
   --------------------------------------------------------------------------
    Table egl.restrictions - Restrictions on D3D resources that can be used
    as a <buffer>.
    --------------------------------------------------------------------------

    Append to the end of Section 3.5.3.
    "When a pbuffer is created with type EGL_D3D_TEXTURE_ANGLE, the contents
    of the associcated D3D texture object are undefined while the pbuffer is
    the current read surface, draw surface or bound to a client texture."

Issues

    1. What renderers allow the use of a multi-sampled texture?

    PROPOSED: Mutli-sampled texture support is currently limited to D3D11. Additionally,
    the client is responsible for resolving the texture.

Revision History

    Version 1, 2016/10/05 - first draft.
