Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(166)

Side by Side Diff: gpu/command_buffer/docs/gles2_cmd_format_docs.txt

Issue 2127001: Makes shader translation a runtime switch.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 //! \file 1 //! \file
2 //! 2 //!
3 //! The public interface for 3D graphics is based on a commmand buffer. 3 //! The public interface for 3D graphics is based on a command buffer.
4 //! 4 //!
5 //! This was choosen because it provides an easy way to separate the process 5 //! This was chosen because it provides an easy way to separate the process of
6 //! writing commands from the process reading those commands without requiring 6 //! writing commands from the process of reading those commands without
7 //! too much overhead to keep the two processes in sync. 7 //! requiring too much overhead to keep the two processes in sync.
8 //! 8 //!
9 //! You can use this info to write commands yourself. Most developers will use 9 //! You can use this info to write commands yourself. Most developers will use
10 //! the provided OpenGL ES 2.0 implementation that issues these commands for 10 //! the provided OpenGL ES 2.0 implementation that issues these commands for
11 //! them. 11 //! them.
12 //! 12 //!
13 //! Each command starts with a header. The header is 32 bits where the first 21 13 //! Each command starts with a header. The header is 32 bits, where the first 21
14 //! bits define the number of 32 bit entries, including the header, the command 14 //! bits define the number of 32 bit entries, including the header, the command
15 //! represnts. The last 11 bits specify the specific command. 15 //! represents. The last 11 bits specify the command.
16 //! 16 //!
17 //! Commands that send a variable amount of data have 1 to 3 ways to send that 17 //! Commands that send a variable amount of data have 1 to 3 ways to send that
18 //! data. 18 //! data.
19 //! 19 //!
20 //! For many commands they can send their data in shared memory. The command 20 //! Many commands can send their data in shared memory. The command will take
21 //! will take an id of the shared memory and an offset into that shared memory 21 //! an id of the shared memory and an offset into that shared memory of where
22 //! of where the data lives. Commands are executed asynchronously so the client 22 //! the data lives. Commands are executed asynchronously, so the client
23 //! program must be careful to leave the data available until the command has 23 //! program must be careful to leave the data available until the command has
24 //! executed. 24 //! executed.
25 //! 25 //!
26 //! Some commands have an 'immediate' version where the data appears directly 26 //! Some commands have an 'immediate' version where the data appears directly
27 //! after the command in memory. 27 //! after the command in memory.
28 //! 28 //!
29 //! A 3rd way of passing data is through Buckets. Buckets are indentified by 29 //! A 3rd way of passing data is through Buckets. Buckets are identified by
30 //! number. You create a bucket with the command SetBucketSize, you can then 30 //! number. You create a bucket with the command SetBucketSize, you can then
31 //! fill the bucket with SetBucketData commands. Once you've sent all your 31 //! fill the bucket with SetBucketData commands. Once you've sent all your
32 //! data you can then issue a command that uses the bucket and takes a bucket 32 //! data you can then issue a command that uses the bucket and takes a bucket
33 //! id for which bucket to use. 33 //! id for which bucket to use.
34 //! 34 //!
35 //! Receiving data works similarly. Some commands return their data to shared 35 //! Receiving data works similarly. Some commands return their data to shared
36 //! memory. Other commands return their data through buckets which can then be 36 //! memory. Other commands return their data through buckets which can then be
37 //! queried with the GetBucketSize and GetBucketData commands. In either case 37 //! queried with the GetBucketSize and GetBucketData commands. In either case
38 //! the data will not be available until the command executes. 38 //! the data will not be available until the command executes.
39 //! 39 //!
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 Uint32 size:21; 74 Uint32 size:21;
75 Uint32 command:11; 75 Uint32 command:11;
76 }; 76 };
77 77
78 78
79 //! Used for some glGetXXX commands that return a result through a pointer. We 79 //! Used for some glGetXXX commands that return a result through a pointer. We
80 //! need to know if the command succeeded or not and the size of the result. If 80 //! need to know if the command succeeded or not and the size of the result. If
81 //! the command failed its result size will 0. You must set the size to 0 81 //! the command failed its result size will 0. You must set the size to 0
82 //! before issuing the command. 82 //! before issuing the command.
83 //! 83 //!
84 //! To retreive the data you might do something like this pseudo code: 84 //! To retrieve the data you might do something like this pseudo code:
85 //! 85 //!
86 //! GetAttachedShaders::Result* result = address-of-shared-memory 86 //! GetAttachedShaders::Result* result = address-of-shared-memory
87 //! int num_results = result->size / sizeof(GLuint); // the type returned 87 //! int num_results = result->size / sizeof(GLuint); // the type returned
88 //! GLuint* results = &result->data; 88 //! GLuint* results = &result->data;
89 //! for (int ii = 0; ii < num_results; ++ii) { 89 //! for (int ii = 0; ii < num_results; ++ii) {
90 //! printf("%d\n", results[ii]); 90 //! printf("%d\n", results[ii]);
91 //! } 91 //! }
92 //! 92 //!
93 template <typename T> 93 template <typename T>
94 struct SizedResult { 94 struct SizedResult {
(...skipping 21 matching lines...) Expand all
116 //! The Jump command jumps to another place in the command buffer. 116 //! The Jump command jumps to another place in the command buffer.
117 struct Jump { 117 struct Jump {
118 static const CommandId kCmdId = 3; 118 static const CommandId kCmdId = 3;
119 119
120 CommandHeader header; 120 CommandHeader header;
121 uint32 offset; 121 uint32 offset;
122 }; 122 };
123 123
124 //! The JumpRelative command jumps to another place in the command buffer 124 //! The JumpRelative command jumps to another place in the command buffer
125 //! relative to the end of this command. In other words. JumpRelative with an 125 //! relative to the end of this command. In other words. JumpRelative with an
126 //! offset of zero is effectively a noop. 126 //! offset of zero is effectively a no-op.
127 struct JumpRelative { 127 struct JumpRelative {
128 static const CommandId kCmdId = 4; 128 static const CommandId kCmdId = 4;
129 129
130 CommandHeader header; 130 CommandHeader header;
131 int32 offset; 131 int32 offset;
132 }; 132 };
133 133
134 //! The Call command jumps to a subroutine which can be returned from with the 134 //! The Call command jumps to a subroutine which can be returned from with the
135 //! Return command. 135 //! Return command.
136 struct Call { 136 struct Call {
(...skipping 2103 matching lines...) Expand 10 before | Expand all | Expand 10 after
2240 struct RegisterSharedIds { 2240 struct RegisterSharedIds {
2241 static const CommandId kCmdId = 441; 2241 static const CommandId kCmdId = 441;
2242 2242
2243 CommandHeader header; 2243 CommandHeader header;
2244 uint32 namespace_id; //!< GLuint 2244 uint32 namespace_id; //!< GLuint
2245 int32 n; //!< GLsizei 2245 int32 n; //!< GLsizei
2246 uint32 ids_shm_id; //!< uint32 2246 uint32 ids_shm_id; //!< uint32
2247 uint32 ids_shm_offset; //!< uint32 2247 uint32 ids_shm_offset; //!< uint32
2248 }; 2248 };
2249 2249
2250 //! Command that enables or disables command buffer specific features. 2250 //! Command that enables features. The bucket should contain the feature string.
2251 struct CommandBufferEnable { 2251 struct CommandBufferEnable {
2252 static const CommandId kCmdId = 442; 2252 static const CommandId kCmdId = 442;
2253 2253
2254 typedef GLint Result;
2255
2254 CommandHeader header; 2256 CommandHeader header;
2255 uint32 cap; //!< GLenum 2257 uint32 bucket_id; //!< GLuint
2256 uint32 enable; //!< GLboolean 2258 uint32 result_shm_id; //!< uint32
2259 uint32 result_shm_offset; //!< uint32
2257 }; 2260 };
2258 2261
2262
OLDNEW
« no previous file with comments | « gpu/command_buffer/common/gles2_cmd_format_test_autogen.h ('k') | gpu/command_buffer/service/gles2_cmd_decoder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698