Name

    CHROMIUM_image

Name Strings

    GL_CHROMIUM_image

Version

    Last Modifed Date: Apr 30, 2014

Dependencies

    OpenGL ES 2.0 is required.

Overview

    This extension allows for more efficient uploading of texture data through
    Chromium's OpenGL ES 2.0 implementation as well as enable hardware overlay
    support by providing ability to create buffers capable of being scanned out
    directly by the display controller.

    For security reasons Chromium accesses the GPU from a separate process. User
    processes are not allowed to access the GPU directly. This multi-process
    architechure has the advantage that GPU operations can be secured and
    pipelined but it has the disadvantage that all data that is going to be
    passed to GPU must first be made available to the separate GPU process.

    This extension helps the application directly allocate and access texture
    memory.

Issues

    None

New Tokens

    Accepted by the <pname> parameter of GetImageParameterivCHROMIUM:

        IMAGE_ROWBYTES_CHROMIUM 0x78F0

    Accepted by the <usage> parameter of CreateImageCHROMIUM:

        IMAGE_MAP_CHROMIUM 0x78F1
        IMAGE_SCANOUT_CHROMIUM 0x78F2

New Procedures and Functions

    GLuint CreateImageCHROMIUM(GLsizei width, GLsizei height,
                               GLenum internalformat, GLenum usage)

    Allocate an image with width equal to <width> and height equal
    to <height> stored in format <internalformat>.

    Returns a unique identifier for the allocated image that could be used
    in subsequent operations.

    INVALID_VALUE is generated if <width> or <height> is nonpositive.

    INVALID_ENUM is generated if <usage> is not one of
    IMAGE_MAP_CHROMIUM and IMAGE_SCANOUT_CHROMIUM.

    void DestroyImageCHROMIUM(GLuint image_id)

    Frees the image previously allocated by a call to CreateImageCHROMIUM.

    INVALID_OPERATION is generated if <image_id> is not a valid image id.

    void* MapImageCHROMIUM(GLuint image_id)

    Returns a pointer to in the user memory for the application to modify
    the image. It is illegal to call this function on an image not created
    with IMAGE_MAP_CHROMIUM usage.

    INVALID_OPERATION is generated if <image_id> is not a valid image id.

    INVALID_OPERATION is generated if the image was already mapped by a previous
    call to this method.

    void UnmapImageCHROMIUM(GLuint image_id)

    Removes the mapping created by a call to MapImageCHROMIUM.

    Note that after calling UnmapImageCHROMIUM the application should assume
    that the memory returned by MapImageCHROMIUM is off limits and is no longer
    accessible by the application. Accessing it after calling
    UnmapImageCHROMIUM will produce undefined results.

    INVALID_OPERATION is generated if <image_id> is not a valid image id.

    INVALID_OPERATION is generated if the image was not already mapped by a
    previous call to MapImageCHROMIUM.

    void GetImageParameterivCHROMIUM(GLuint image_id, GLenum pname,
                                     GLint* params)

    Sets <params> to the integer value of the parameter specified by <pname>
    for the image specified by <image_id>. <params> is expected to be
    properly allocated before calling this method.

    INVALID_OPERATION is generated if <image_id> is not a valid image id.

    INVALID_ENUM is generated if <pname> is not IMAGE_ROWBYTES_CHROMIUM.

Errors

    None.

New State

    None.

Revision History

    5/9/2013    Documented the extension
    4/30/2014   Moved usage flag to creation function.
