OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // This file defines the GLES2 command buffer commands. | 5 // This file defines the GLES2 command buffer commands. |
6 | 6 |
7 #ifndef GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_FORMAT_H_ | 7 #ifndef GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_FORMAT_H_ |
8 #define GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_FORMAT_H_ | 8 #define GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_FORMAT_H_ |
9 | 9 |
10 | 10 |
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
314 // TODO(gman): Attempt to make these auto-generated. | 314 // TODO(gman): Attempt to make these auto-generated. |
315 | 315 |
316 struct GenMailboxCHROMIUM { | 316 struct GenMailboxCHROMIUM { |
317 typedef GenMailboxCHROMIUM ValueType; | 317 typedef GenMailboxCHROMIUM ValueType; |
318 static const CommandId kCmdId = kGenMailboxCHROMIUM; | 318 static const CommandId kCmdId = kGenMailboxCHROMIUM; |
319 static const cmd::ArgFlags kArgFlags = cmd::kFixed; | 319 static const cmd::ArgFlags kArgFlags = cmd::kFixed; |
320 static const uint8_t cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3); | 320 static const uint8_t cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3); |
321 CommandHeader header; | 321 CommandHeader header; |
322 }; | 322 }; |
323 | 323 |
324 struct CreateAndConsumeTextureCHROMIUMImmediate { | |
325 typedef CreateAndConsumeTextureCHROMIUMImmediate ValueType; | |
326 static const CommandId kCmdId = kCreateAndConsumeTextureCHROMIUMImmediate; | |
327 static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN; | |
328 static const uint8_t cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(1); | |
329 | |
330 static uint32_t ComputeDataSize() { | |
331 return static_cast<uint32_t>(sizeof(GLbyte) * 64); // NOLINT | |
332 } | |
333 | |
334 static uint32_t ComputeSize() { | |
335 return static_cast<uint32_t>(sizeof(ValueType) + | |
336 ComputeDataSize()); // NOLINT | |
337 } | |
338 | |
339 void SetHeader(uint32_t size_in_bytes) { | |
340 header.SetCmdByTotalSize<ValueType>(size_in_bytes); | |
341 } | |
342 | |
343 void Init(GLenum _target, uint32_t _client_id, const GLbyte* _mailbox) { | |
344 SetHeader(ComputeSize()); | |
345 target = _target; | |
346 client_id = _client_id; | |
347 memcpy(ImmediateDataAddress(this), _mailbox, ComputeDataSize()); | |
348 } | |
349 | |
350 void* Set(void* cmd, | |
351 GLenum _target, | |
352 uint32_t _client_id, | |
353 const GLbyte* _mailbox) { | |
354 static_cast<ValueType*>(cmd)->Init(_target, _client_id, _mailbox); | |
355 const uint32_t size = ComputeSize(); | |
356 return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size); | |
357 } | |
358 | |
359 gpu::CommandHeader header; | |
360 uint32_t target; | |
361 uint32_t client_id; | |
362 }; | |
363 | |
364 static_assert(sizeof(CreateAndConsumeTextureCHROMIUMImmediate) == 12, | |
365 "size of CreateAndConsumeTextureCHROMIUMImmediate should be 12"); | |
366 static_assert(offsetof(CreateAndConsumeTextureCHROMIUMImmediate, header) == 0, | |
367 "offset of CreateAndConsumeTextureCHROMIUMImmediate.header " | |
368 "should be 0"); | |
369 static_assert(offsetof(CreateAndConsumeTextureCHROMIUMImmediate, target) == 4, | |
370 "offset of CreateAndConsumeTextureCHROMIUMImmediate.target " | |
371 "should be 4"); | |
372 static_assert( | |
373 offsetof(CreateAndConsumeTextureCHROMIUMImmediate, client_id) == 8, | |
374 "offset of CreateAndConsumeTextureCHROMIUMImmediate.client_id should be 8"); | |
375 | |
376 | |
377 #pragma pack(pop) | 324 #pragma pack(pop) |
378 | 325 |
379 } // namespace cmd | 326 } // namespace cmd |
380 } // namespace gles2 | 327 } // namespace gles2 |
381 } // namespace gpu | 328 } // namespace gpu |
382 | 329 |
383 #endif // GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_FORMAT_H_ | 330 #endif // GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_FORMAT_H_ |
OLD | NEW |