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