OLD | NEW |
(Empty) | |
| 1 Name |
| 2 |
| 3 CHROMIUM_gpu_memory_buffer |
| 4 |
| 5 Name Strings |
| 6 |
| 7 GL_CHROMIUM_gpu_memory_buffer |
| 8 |
| 9 Version |
| 10 |
| 11 Last Modifed Date: April 26, 2013 |
| 12 |
| 13 Dependencies |
| 14 |
| 15 OpenGL ES 2.0 is required. |
| 16 |
| 17 Overview |
| 18 |
| 19 This extension allows for more efficiently uploading of buffer or texture |
| 20 data through Chromium's OpenGL ES 2.0 implementation. |
| 21 |
| 22 For security reasons Chromium accesses the GPU from a separate process. User |
| 23 processes are not allowed to access the GPU directly. This multi-process |
| 24 architechure has the advantage that GPU operations can be secured and |
| 25 pipelined but it has the disadvantage that all data that is going to be |
| 26 passed to GPU must first be made available to the separate GPU process. |
| 27 |
| 28 Chromium's OpenGL ES 2.0 implementation hides this issue when using the |
| 29 standard OpenGL functions BufferData, BufferSubData, TexImage2D, and |
| 30 TexSubImage2D by first copying the user's data to shared memory and then |
| 31 telling the GPU process to use that shared memory to upload the data. |
| 32 |
| 33 This extension helps avoid that extra copy from user memory to shared memory |
| 34 in a safe and secure manner by allowing the client to directly allocate |
| 35 GPU memory. After allocating the memory the client of this interface |
| 36 can use methods in CHROMIUM_map_sub extension to map the GPU buffer into |
| 37 the user memory and modify the pixels. |
| 38 |
| 39 Issues |
| 40 |
| 41 The initial use of this extension was designed for the single process |
| 42 mode of Chromium where OpenGL ES 2.0 and GPU implementations share the |
| 43 same process. Some additions may be required to support the case where |
| 44 OpenGL ES 2.0 and GPU implementations live in different processes. |
| 45 |
| 46 New Tokens |
| 47 |
| 48 None |
| 49 |
| 50 New Procedures and Functions |
| 51 |
| 52 void ImageBufferDataCHROMIUM (GLenum target, GLsizei width, GLsizei height, |
| 53 GLenum format, GLenum type) |
| 54 |
| 55 Allocates GPU memory for the currently bound buffer with width equal to |
| 56 <width> and height equal to <height>. If any memory was previously allocated |
| 57 to the bound buffer it is freed before new GPU memory is allocated. If |
| 58 <width> and <height> are both 0 no allocation takes place. Similarly if no |
| 59 buffer was bound with a call to BindBuffer this method returns immediately |
| 60 without allocating any buffers. |
| 61 |
| 62 INVALID_ENUM is generated if <target> is not GL_IMAGE_BUFFER_CHROMIUM |
| 63 |
| 64 INVALID_VALUE is generated if <width> or <height> is negative |
| 65 |
| 66 INVALID_ENUM is generated if <format> is not GL_RGBA |
| 67 |
| 68 INVALID_ENUM is generated if <type> is not GL_UNSIGNED_BYTE |
| 69 |
| 70 Errors |
| 71 |
| 72 None. |
| 73 |
| 74 New State |
| 75 |
| 76 None. |
| 77 |
| 78 Revision History |
| 79 |
| 80 4/26/2013 Documented the extension |
OLD | NEW |