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 | |
greggman
2013/05/03 23:48:01
This extension is, at least at the moment, specifi
kaanb
2013/05/06 18:20:53
I'll go over this document once we finalize the na
| |
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 |