Version
- Last Modifed Date: Apr 30, 2014
+ Last Modifed Date: Oct 7, 2014
Dependencies
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.
+ This extension defines a new resource type that is suitable for
+ sharing 2D arrays of image data between client APIs.
Issues
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
+ None
New Procedures and Functions
- GLuint CreateImageCHROMIUM(GLsizei width, GLsizei height,
- GLenum internalformat, GLenum usage)
+ GLuint CreateImageCHROMIUM(ClientBuffer buffer,
+ GLsizei width,
+ GLsizei height,
+ GLenum internalformat)
- Allocate an image with width equal to <width> and height equal
- to <height> stored in format <internalformat>.
+ Create an image from <buffer> with width equal to <width> and
+ height equal to <height> and format equal to <internalformat>.
- Returns a unique identifier for the allocated image that could be used
- in subsequent operations.
+ Returns a unique identifier for the 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.
+ INVALID_ENUM is generated if <internalformat> is not one of
+ RGB or RGBA.
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.
+ Frees the image previously created by a call to CreateImageCHROMIUM.
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.
5/9/2013 Documented the extension
4/30/2014 Moved usage flag to creation function.
+ 10/7/2014 Remove map/unmap API.