| Index: gpu/GLES2/extensions/CHROMIUM/CHROMIUM_gpu_memory_buffer.txt
|
| diff --git a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_gpu_memory_buffer.txt b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_gpu_memory_buffer.txt
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9f610a57d8a9500327518a89ab806e887fbdf61e
|
| --- /dev/null
|
| +++ b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_gpu_memory_buffer.txt
|
| @@ -0,0 +1,80 @@
|
| +Name
|
| +
|
| + CHROMIUM_gpu_memory_buffer
|
| +
|
| +Name Strings
|
| +
|
| + GL_CHROMIUM_gpu_memory_buffer
|
| +
|
| +Version
|
| +
|
| + Last Modifed Date: April 26, 2013
|
| +
|
| +Dependencies
|
| +
|
| + OpenGL ES 2.0 is required.
|
| +
|
| +Overview
|
| +
|
| + This extension allows for more efficiently uploading of buffer or texture
|
| + data through Chromium's OpenGL ES 2.0 implementation.
|
| +
|
| + 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.
|
| +
|
| + Chromium's OpenGL ES 2.0 implementation hides this issue when using the
|
| + standard OpenGL functions BufferData, BufferSubData, TexImage2D, and
|
| + TexSubImage2D by first copying the user's data to shared memory and then
|
| + telling the GPU process to use that shared memory to upload the data.
|
| +
|
| + This extension helps avoid that extra copy from user memory to shared memory
|
| + in a safe and secure manner by allowing the client to directly allocate
|
| + GPU memory. After allocating the memory the client of this interface
|
| + can use methods in CHROMIUM_map_sub extension to map the GPU buffer into
|
| + the user memory and modify the pixels.
|
| +
|
| +Issues
|
| +
|
| + The initial use of this extension was designed for the single process
|
| + mode of Chromium where OpenGL ES 2.0 and GPU implementations share the
|
| + same process. Some additions may be required to support the case where
|
| + OpenGL ES 2.0 and GPU implementations live in different processes.
|
| +
|
| +New Tokens
|
| +
|
| + None
|
| +
|
| +New Procedures and Functions
|
| +
|
| + void ImageBufferDataCHROMIUM (GLenum target, GLsizei width, GLsizei height,
|
| + GLenum format, GLenum type)
|
| +
|
| + Allocates GPU memory for the currently bound buffer with width equal to
|
| + <width> and height equal to <height>. If any memory was previously allocated
|
| + to the bound buffer it is freed before new GPU memory is allocated. If
|
| + <width> and <height> are both 0 no allocation takes place. Similarly if no
|
| + buffer was bound with a call to BindBuffer this method returns immediately
|
| + without allocating any buffers.
|
| +
|
| + INVALID_ENUM is generated if <target> is not GL_IMAGE_BUFFER_CHROMIUM
|
| +
|
| + INVALID_VALUE is generated if <width> or <height> is negative
|
| +
|
| + INVALID_ENUM is generated if <format> is not GL_RGBA
|
| +
|
| + INVALID_ENUM is generated if <type> is not GL_UNSIGNED_BYTE
|
| +
|
| +Errors
|
| +
|
| + None.
|
| +
|
| +New State
|
| +
|
| + None.
|
| +
|
| +Revision History
|
| +
|
| + 4/26/2013 Documented the extension
|
|
|