Home | History | Annotate | Download | only in common
      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
      3 // found in the LICENSE file.
      4 
      5 // This file is auto-generated from
      6 // gpu/command_buffer/build_gles2_cmd_buffer.py
      7 // DO NOT EDIT!
      8 
      9 #ifndef GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_FORMAT_AUTOGEN_H_
     10 #define GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_FORMAT_AUTOGEN_H_
     11 
     12 struct ActiveTexture {
     13   typedef ActiveTexture ValueType;
     14   static const CommandId kCmdId = kActiveTexture;
     15   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
     16 
     17   static uint32 ComputeSize() {
     18     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
     19   }
     20 
     21   void SetHeader() {
     22     header.SetCmd<ValueType>();
     23   }
     24 
     25   void Init(GLenum _texture) {
     26     SetHeader();
     27     texture = _texture;
     28   }
     29 
     30   void* Set(void* cmd, GLenum _texture) {
     31     static_cast<ValueType*>(cmd)->Init(_texture);
     32     return NextCmdAddress<ValueType>(cmd);
     33   }
     34 
     35   gpu::CommandHeader header;
     36   uint32 texture;
     37 };
     38 
     39 COMPILE_ASSERT(sizeof(ActiveTexture) == 8,
     40                Sizeof_ActiveTexture_is_not_8);
     41 COMPILE_ASSERT(offsetof(ActiveTexture, header) == 0,
     42                OffsetOf_ActiveTexture_header_not_0);
     43 COMPILE_ASSERT(offsetof(ActiveTexture, texture) == 4,
     44                OffsetOf_ActiveTexture_texture_not_4);
     45 
     46 struct AttachShader {
     47   typedef AttachShader ValueType;
     48   static const CommandId kCmdId = kAttachShader;
     49   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
     50 
     51   static uint32 ComputeSize() {
     52     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
     53   }
     54 
     55   void SetHeader() {
     56     header.SetCmd<ValueType>();
     57   }
     58 
     59   void Init(GLuint _program, GLuint _shader) {
     60     SetHeader();
     61     program = _program;
     62     shader = _shader;
     63   }
     64 
     65   void* Set(void* cmd, GLuint _program, GLuint _shader) {
     66     static_cast<ValueType*>(cmd)->Init(_program, _shader);
     67     return NextCmdAddress<ValueType>(cmd);
     68   }
     69 
     70   gpu::CommandHeader header;
     71   uint32 program;
     72   uint32 shader;
     73 };
     74 
     75 COMPILE_ASSERT(sizeof(AttachShader) == 12,
     76                Sizeof_AttachShader_is_not_12);
     77 COMPILE_ASSERT(offsetof(AttachShader, header) == 0,
     78                OffsetOf_AttachShader_header_not_0);
     79 COMPILE_ASSERT(offsetof(AttachShader, program) == 4,
     80                OffsetOf_AttachShader_program_not_4);
     81 COMPILE_ASSERT(offsetof(AttachShader, shader) == 8,
     82                OffsetOf_AttachShader_shader_not_8);
     83 
     84 struct BindAttribLocation {
     85   typedef BindAttribLocation ValueType;
     86   static const CommandId kCmdId = kBindAttribLocation;
     87   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
     88 
     89   static uint32 ComputeSize() {
     90     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
     91   }
     92 
     93   void SetHeader() {
     94     header.SetCmd<ValueType>();
     95   }
     96 
     97   void Init(
     98       GLuint _program, GLuint _index, uint32 _name_shm_id,
     99       uint32 _name_shm_offset, uint32 _data_size) {
    100     SetHeader();
    101     program = _program;
    102     index = _index;
    103     name_shm_id = _name_shm_id;
    104     name_shm_offset = _name_shm_offset;
    105     data_size = _data_size;
    106   }
    107 
    108   void* Set(
    109       void* cmd, GLuint _program, GLuint _index, uint32 _name_shm_id,
    110       uint32 _name_shm_offset, uint32 _data_size) {
    111     static_cast<ValueType*>(
    112         cmd)->Init(
    113             _program, _index, _name_shm_id, _name_shm_offset, _data_size);
    114     return NextCmdAddress<ValueType>(cmd);
    115   }
    116 
    117   gpu::CommandHeader header;
    118   uint32 program;
    119   uint32 index;
    120   uint32 name_shm_id;
    121   uint32 name_shm_offset;
    122   uint32 data_size;
    123 };
    124 
    125 COMPILE_ASSERT(sizeof(BindAttribLocation) == 24,
    126                Sizeof_BindAttribLocation_is_not_24);
    127 COMPILE_ASSERT(offsetof(BindAttribLocation, header) == 0,
    128                OffsetOf_BindAttribLocation_header_not_0);
    129 COMPILE_ASSERT(offsetof(BindAttribLocation, program) == 4,
    130                OffsetOf_BindAttribLocation_program_not_4);
    131 COMPILE_ASSERT(offsetof(BindAttribLocation, index) == 8,
    132                OffsetOf_BindAttribLocation_index_not_8);
    133 COMPILE_ASSERT(offsetof(BindAttribLocation, name_shm_id) == 12,
    134                OffsetOf_BindAttribLocation_name_shm_id_not_12);
    135 COMPILE_ASSERT(offsetof(BindAttribLocation, name_shm_offset) == 16,
    136                OffsetOf_BindAttribLocation_name_shm_offset_not_16);
    137 COMPILE_ASSERT(offsetof(BindAttribLocation, data_size) == 20,
    138                OffsetOf_BindAttribLocation_data_size_not_20);
    139 
    140 struct BindAttribLocationImmediate {
    141   typedef BindAttribLocationImmediate ValueType;
    142   static const CommandId kCmdId = kBindAttribLocationImmediate;
    143   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
    144 
    145   static uint32 ComputeSize(uint32 data_size) {
    146     return static_cast<uint32>(
    147         sizeof(ValueType) + data_size);  // NOLINT
    148   }
    149 
    150   void SetHeader(uint32 data_size) {
    151     header.SetCmdBySize<ValueType>(data_size);
    152   }
    153 
    154   void Init(
    155       GLuint _program, GLuint _index, const char* _name, uint32 _data_size) {
    156     SetHeader(_data_size);
    157     program = _program;
    158     index = _index;
    159     data_size = _data_size;
    160     memcpy(ImmediateDataAddress(this), _name, _data_size);
    161   }
    162 
    163   void* Set(
    164       void* cmd, GLuint _program, GLuint _index, const char* _name,
    165       uint32 _data_size) {
    166     static_cast<ValueType*>(cmd)->Init(_program, _index, _name, _data_size);
    167     return NextImmediateCmdAddress<ValueType>(cmd, _data_size);
    168   }
    169 
    170   gpu::CommandHeader header;
    171   uint32 program;
    172   uint32 index;
    173   uint32 data_size;
    174 };
    175 
    176 COMPILE_ASSERT(sizeof(BindAttribLocationImmediate) == 16,
    177                Sizeof_BindAttribLocationImmediate_is_not_16);
    178 COMPILE_ASSERT(offsetof(BindAttribLocationImmediate, header) == 0,
    179                OffsetOf_BindAttribLocationImmediate_header_not_0);
    180 COMPILE_ASSERT(offsetof(BindAttribLocationImmediate, program) == 4,
    181                OffsetOf_BindAttribLocationImmediate_program_not_4);
    182 COMPILE_ASSERT(offsetof(BindAttribLocationImmediate, index) == 8,
    183                OffsetOf_BindAttribLocationImmediate_index_not_8);
    184 COMPILE_ASSERT(offsetof(BindAttribLocationImmediate, data_size) == 12,
    185                OffsetOf_BindAttribLocationImmediate_data_size_not_12);
    186 
    187 struct BindAttribLocationBucket {
    188   typedef BindAttribLocationBucket ValueType;
    189   static const CommandId kCmdId = kBindAttribLocationBucket;
    190   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
    191 
    192   static uint32 ComputeSize() {
    193     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
    194   }
    195 
    196   void SetHeader() {
    197     header.SetCmd<ValueType>();
    198   }
    199 
    200   void Init(GLuint _program, GLuint _index, uint32 _name_bucket_id) {
    201     SetHeader();
    202     program = _program;
    203     index = _index;
    204     name_bucket_id = _name_bucket_id;
    205   }
    206 
    207   void* Set(
    208       void* cmd, GLuint _program, GLuint _index, uint32 _name_bucket_id) {
    209     static_cast<ValueType*>(cmd)->Init(_program, _index, _name_bucket_id);
    210     return NextCmdAddress<ValueType>(cmd);
    211   }
    212 
    213   gpu::CommandHeader header;
    214   uint32 program;
    215   uint32 index;
    216   uint32 name_bucket_id;
    217 };
    218 
    219 COMPILE_ASSERT(sizeof(BindAttribLocationBucket) == 16,
    220                Sizeof_BindAttribLocationBucket_is_not_16);
    221 COMPILE_ASSERT(offsetof(BindAttribLocationBucket, header) == 0,
    222                OffsetOf_BindAttribLocationBucket_header_not_0);
    223 COMPILE_ASSERT(offsetof(BindAttribLocationBucket, program) == 4,
    224                OffsetOf_BindAttribLocationBucket_program_not_4);
    225 COMPILE_ASSERT(offsetof(BindAttribLocationBucket, index) == 8,
    226                OffsetOf_BindAttribLocationBucket_index_not_8);
    227 COMPILE_ASSERT(offsetof(BindAttribLocationBucket, name_bucket_id) == 12,
    228                OffsetOf_BindAttribLocationBucket_name_bucket_id_not_12);
    229 
    230 struct BindBuffer {
    231   typedef BindBuffer ValueType;
    232   static const CommandId kCmdId = kBindBuffer;
    233   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
    234 
    235   static uint32 ComputeSize() {
    236     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
    237   }
    238 
    239   void SetHeader() {
    240     header.SetCmd<ValueType>();
    241   }
    242 
    243   void Init(GLenum _target, GLuint _buffer) {
    244     SetHeader();
    245     target = _target;
    246     buffer = _buffer;
    247   }
    248 
    249   void* Set(void* cmd, GLenum _target, GLuint _buffer) {
    250     static_cast<ValueType*>(cmd)->Init(_target, _buffer);
    251     return NextCmdAddress<ValueType>(cmd);
    252   }
    253 
    254   gpu::CommandHeader header;
    255   uint32 target;
    256   uint32 buffer;
    257 };
    258 
    259 COMPILE_ASSERT(sizeof(BindBuffer) == 12,
    260                Sizeof_BindBuffer_is_not_12);
    261 COMPILE_ASSERT(offsetof(BindBuffer, header) == 0,
    262                OffsetOf_BindBuffer_header_not_0);
    263 COMPILE_ASSERT(offsetof(BindBuffer, target) == 4,
    264                OffsetOf_BindBuffer_target_not_4);
    265 COMPILE_ASSERT(offsetof(BindBuffer, buffer) == 8,
    266                OffsetOf_BindBuffer_buffer_not_8);
    267 
    268 struct BindFramebuffer {
    269   typedef BindFramebuffer ValueType;
    270   static const CommandId kCmdId = kBindFramebuffer;
    271   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
    272 
    273   static uint32 ComputeSize() {
    274     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
    275   }
    276 
    277   void SetHeader() {
    278     header.SetCmd<ValueType>();
    279   }
    280 
    281   void Init(GLenum _target, GLuint _framebuffer) {
    282     SetHeader();
    283     target = _target;
    284     framebuffer = _framebuffer;
    285   }
    286 
    287   void* Set(void* cmd, GLenum _target, GLuint _framebuffer) {
    288     static_cast<ValueType*>(cmd)->Init(_target, _framebuffer);
    289     return NextCmdAddress<ValueType>(cmd);
    290   }
    291 
    292   gpu::CommandHeader header;
    293   uint32 target;
    294   uint32 framebuffer;
    295 };
    296 
    297 COMPILE_ASSERT(sizeof(BindFramebuffer) == 12,
    298                Sizeof_BindFramebuffer_is_not_12);
    299 COMPILE_ASSERT(offsetof(BindFramebuffer, header) == 0,
    300                OffsetOf_BindFramebuffer_header_not_0);
    301 COMPILE_ASSERT(offsetof(BindFramebuffer, target) == 4,
    302                OffsetOf_BindFramebuffer_target_not_4);
    303 COMPILE_ASSERT(offsetof(BindFramebuffer, framebuffer) == 8,
    304                OffsetOf_BindFramebuffer_framebuffer_not_8);
    305 
    306 struct BindRenderbuffer {
    307   typedef BindRenderbuffer ValueType;
    308   static const CommandId kCmdId = kBindRenderbuffer;
    309   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
    310 
    311   static uint32 ComputeSize() {
    312     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
    313   }
    314 
    315   void SetHeader() {
    316     header.SetCmd<ValueType>();
    317   }
    318 
    319   void Init(GLenum _target, GLuint _renderbuffer) {
    320     SetHeader();
    321     target = _target;
    322     renderbuffer = _renderbuffer;
    323   }
    324 
    325   void* Set(void* cmd, GLenum _target, GLuint _renderbuffer) {
    326     static_cast<ValueType*>(cmd)->Init(_target, _renderbuffer);
    327     return NextCmdAddress<ValueType>(cmd);
    328   }
    329 
    330   gpu::CommandHeader header;
    331   uint32 target;
    332   uint32 renderbuffer;
    333 };
    334 
    335 COMPILE_ASSERT(sizeof(BindRenderbuffer) == 12,
    336                Sizeof_BindRenderbuffer_is_not_12);
    337 COMPILE_ASSERT(offsetof(BindRenderbuffer, header) == 0,
    338                OffsetOf_BindRenderbuffer_header_not_0);
    339 COMPILE_ASSERT(offsetof(BindRenderbuffer, target) == 4,
    340                OffsetOf_BindRenderbuffer_target_not_4);
    341 COMPILE_ASSERT(offsetof(BindRenderbuffer, renderbuffer) == 8,
    342                OffsetOf_BindRenderbuffer_renderbuffer_not_8);
    343 
    344 struct BindTexture {
    345   typedef BindTexture ValueType;
    346   static const CommandId kCmdId = kBindTexture;
    347   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
    348 
    349   static uint32 ComputeSize() {
    350     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
    351   }
    352 
    353   void SetHeader() {
    354     header.SetCmd<ValueType>();
    355   }
    356 
    357   void Init(GLenum _target, GLuint _texture) {
    358     SetHeader();
    359     target = _target;
    360     texture = _texture;
    361   }
    362 
    363   void* Set(void* cmd, GLenum _target, GLuint _texture) {
    364     static_cast<ValueType*>(cmd)->Init(_target, _texture);
    365     return NextCmdAddress<ValueType>(cmd);
    366   }
    367 
    368   gpu::CommandHeader header;
    369   uint32 target;
    370   uint32 texture;
    371 };
    372 
    373 COMPILE_ASSERT(sizeof(BindTexture) == 12,
    374                Sizeof_BindTexture_is_not_12);
    375 COMPILE_ASSERT(offsetof(BindTexture, header) == 0,
    376                OffsetOf_BindTexture_header_not_0);
    377 COMPILE_ASSERT(offsetof(BindTexture, target) == 4,
    378                OffsetOf_BindTexture_target_not_4);
    379 COMPILE_ASSERT(offsetof(BindTexture, texture) == 8,
    380                OffsetOf_BindTexture_texture_not_8);
    381 
    382 struct BlendColor {
    383   typedef BlendColor ValueType;
    384   static const CommandId kCmdId = kBlendColor;
    385   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
    386 
    387   static uint32 ComputeSize() {
    388     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
    389   }
    390 
    391   void SetHeader() {
    392     header.SetCmd<ValueType>();
    393   }
    394 
    395   void Init(GLclampf _red, GLclampf _green, GLclampf _blue, GLclampf _alpha) {
    396     SetHeader();
    397     red = _red;
    398     green = _green;
    399     blue = _blue;
    400     alpha = _alpha;
    401   }
    402 
    403   void* Set(
    404       void* cmd, GLclampf _red, GLclampf _green, GLclampf _blue,
    405       GLclampf _alpha) {
    406     static_cast<ValueType*>(cmd)->Init(_red, _green, _blue, _alpha);
    407     return NextCmdAddress<ValueType>(cmd);
    408   }
    409 
    410   gpu::CommandHeader header;
    411   float red;
    412   float green;
    413   float blue;
    414   float alpha;
    415 };
    416 
    417 COMPILE_ASSERT(sizeof(BlendColor) == 20,
    418                Sizeof_BlendColor_is_not_20);
    419 COMPILE_ASSERT(offsetof(BlendColor, header) == 0,
    420                OffsetOf_BlendColor_header_not_0);
    421 COMPILE_ASSERT(offsetof(BlendColor, red) == 4,
    422                OffsetOf_BlendColor_red_not_4);
    423 COMPILE_ASSERT(offsetof(BlendColor, green) == 8,
    424                OffsetOf_BlendColor_green_not_8);
    425 COMPILE_ASSERT(offsetof(BlendColor, blue) == 12,
    426                OffsetOf_BlendColor_blue_not_12);
    427 COMPILE_ASSERT(offsetof(BlendColor, alpha) == 16,
    428                OffsetOf_BlendColor_alpha_not_16);
    429 
    430 struct BlendEquation {
    431   typedef BlendEquation ValueType;
    432   static const CommandId kCmdId = kBlendEquation;
    433   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
    434 
    435   static uint32 ComputeSize() {
    436     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
    437   }
    438 
    439   void SetHeader() {
    440     header.SetCmd<ValueType>();
    441   }
    442 
    443   void Init(GLenum _mode) {
    444     SetHeader();
    445     mode = _mode;
    446   }
    447 
    448   void* Set(void* cmd, GLenum _mode) {
    449     static_cast<ValueType*>(cmd)->Init(_mode);
    450     return NextCmdAddress<ValueType>(cmd);
    451   }
    452 
    453   gpu::CommandHeader header;
    454   uint32 mode;
    455 };
    456 
    457 COMPILE_ASSERT(sizeof(BlendEquation) == 8,
    458                Sizeof_BlendEquation_is_not_8);
    459 COMPILE_ASSERT(offsetof(BlendEquation, header) == 0,
    460                OffsetOf_BlendEquation_header_not_0);
    461 COMPILE_ASSERT(offsetof(BlendEquation, mode) == 4,
    462                OffsetOf_BlendEquation_mode_not_4);
    463 
    464 struct BlendEquationSeparate {
    465   typedef BlendEquationSeparate ValueType;
    466   static const CommandId kCmdId = kBlendEquationSeparate;
    467   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
    468 
    469   static uint32 ComputeSize() {
    470     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
    471   }
    472 
    473   void SetHeader() {
    474     header.SetCmd<ValueType>();
    475   }
    476 
    477   void Init(GLenum _modeRGB, GLenum _modeAlpha) {
    478     SetHeader();
    479     modeRGB = _modeRGB;
    480     modeAlpha = _modeAlpha;
    481   }
    482 
    483   void* Set(void* cmd, GLenum _modeRGB, GLenum _modeAlpha) {
    484     static_cast<ValueType*>(cmd)->Init(_modeRGB, _modeAlpha);
    485     return NextCmdAddress<ValueType>(cmd);
    486   }
    487 
    488   gpu::CommandHeader header;
    489   uint32 modeRGB;
    490   uint32 modeAlpha;
    491 };
    492 
    493 COMPILE_ASSERT(sizeof(BlendEquationSeparate) == 12,
    494                Sizeof_BlendEquationSeparate_is_not_12);
    495 COMPILE_ASSERT(offsetof(BlendEquationSeparate, header) == 0,
    496                OffsetOf_BlendEquationSeparate_header_not_0);
    497 COMPILE_ASSERT(offsetof(BlendEquationSeparate, modeRGB) == 4,
    498                OffsetOf_BlendEquationSeparate_modeRGB_not_4);
    499 COMPILE_ASSERT(offsetof(BlendEquationSeparate, modeAlpha) == 8,
    500                OffsetOf_BlendEquationSeparate_modeAlpha_not_8);
    501 
    502 struct BlendFunc {
    503   typedef BlendFunc ValueType;
    504   static const CommandId kCmdId = kBlendFunc;
    505   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
    506 
    507   static uint32 ComputeSize() {
    508     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
    509   }
    510 
    511   void SetHeader() {
    512     header.SetCmd<ValueType>();
    513   }
    514 
    515   void Init(GLenum _sfactor, GLenum _dfactor) {
    516     SetHeader();
    517     sfactor = _sfactor;
    518     dfactor = _dfactor;
    519   }
    520 
    521   void* Set(void* cmd, GLenum _sfactor, GLenum _dfactor) {
    522     static_cast<ValueType*>(cmd)->Init(_sfactor, _dfactor);
    523     return NextCmdAddress<ValueType>(cmd);
    524   }
    525 
    526   gpu::CommandHeader header;
    527   uint32 sfactor;
    528   uint32 dfactor;
    529 };
    530 
    531 COMPILE_ASSERT(sizeof(BlendFunc) == 12,
    532                Sizeof_BlendFunc_is_not_12);
    533 COMPILE_ASSERT(offsetof(BlendFunc, header) == 0,
    534                OffsetOf_BlendFunc_header_not_0);
    535 COMPILE_ASSERT(offsetof(BlendFunc, sfactor) == 4,
    536                OffsetOf_BlendFunc_sfactor_not_4);
    537 COMPILE_ASSERT(offsetof(BlendFunc, dfactor) == 8,
    538                OffsetOf_BlendFunc_dfactor_not_8);
    539 
    540 struct BlendFuncSeparate {
    541   typedef BlendFuncSeparate ValueType;
    542   static const CommandId kCmdId = kBlendFuncSeparate;
    543   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
    544 
    545   static uint32 ComputeSize() {
    546     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
    547   }
    548 
    549   void SetHeader() {
    550     header.SetCmd<ValueType>();
    551   }
    552 
    553   void Init(
    554       GLenum _srcRGB, GLenum _dstRGB, GLenum _srcAlpha, GLenum _dstAlpha) {
    555     SetHeader();
    556     srcRGB = _srcRGB;
    557     dstRGB = _dstRGB;
    558     srcAlpha = _srcAlpha;
    559     dstAlpha = _dstAlpha;
    560   }
    561 
    562   void* Set(
    563       void* cmd, GLenum _srcRGB, GLenum _dstRGB, GLenum _srcAlpha,
    564       GLenum _dstAlpha) {
    565     static_cast<ValueType*>(cmd)->Init(_srcRGB, _dstRGB, _srcAlpha, _dstAlpha);
    566     return NextCmdAddress<ValueType>(cmd);
    567   }
    568 
    569   gpu::CommandHeader header;
    570   uint32 srcRGB;
    571   uint32 dstRGB;
    572   uint32 srcAlpha;
    573   uint32 dstAlpha;
    574 };
    575 
    576 COMPILE_ASSERT(sizeof(BlendFuncSeparate) == 20,
    577                Sizeof_BlendFuncSeparate_is_not_20);
    578 COMPILE_ASSERT(offsetof(BlendFuncSeparate, header) == 0,
    579                OffsetOf_BlendFuncSeparate_header_not_0);
    580 COMPILE_ASSERT(offsetof(BlendFuncSeparate, srcRGB) == 4,
    581                OffsetOf_BlendFuncSeparate_srcRGB_not_4);
    582 COMPILE_ASSERT(offsetof(BlendFuncSeparate, dstRGB) == 8,
    583                OffsetOf_BlendFuncSeparate_dstRGB_not_8);
    584 COMPILE_ASSERT(offsetof(BlendFuncSeparate, srcAlpha) == 12,
    585                OffsetOf_BlendFuncSeparate_srcAlpha_not_12);
    586 COMPILE_ASSERT(offsetof(BlendFuncSeparate, dstAlpha) == 16,
    587                OffsetOf_BlendFuncSeparate_dstAlpha_not_16);
    588 
    589 struct BufferData {
    590   typedef BufferData ValueType;
    591   static const CommandId kCmdId = kBufferData;
    592   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
    593 
    594   static uint32 ComputeSize() {
    595     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
    596   }
    597 
    598   void SetHeader() {
    599     header.SetCmd<ValueType>();
    600   }
    601 
    602   void Init(
    603       GLenum _target, GLsizeiptr _size, uint32 _data_shm_id,
    604       uint32 _data_shm_offset, GLenum _usage) {
    605     SetHeader();
    606     target = _target;
    607     size = _size;
    608     data_shm_id = _data_shm_id;
    609     data_shm_offset = _data_shm_offset;
    610     usage = _usage;
    611   }
    612 
    613   void* Set(
    614       void* cmd, GLenum _target, GLsizeiptr _size, uint32 _data_shm_id,
    615       uint32 _data_shm_offset, GLenum _usage) {
    616     static_cast<ValueType*>(
    617         cmd)->Init(_target, _size, _data_shm_id, _data_shm_offset, _usage);
    618     return NextCmdAddress<ValueType>(cmd);
    619   }
    620 
    621   gpu::CommandHeader header;
    622   uint32 target;
    623   int32 size;
    624   uint32 data_shm_id;
    625   uint32 data_shm_offset;
    626   uint32 usage;
    627 };
    628 
    629 COMPILE_ASSERT(sizeof(BufferData) == 24,
    630                Sizeof_BufferData_is_not_24);
    631 COMPILE_ASSERT(offsetof(BufferData, header) == 0,
    632                OffsetOf_BufferData_header_not_0);
    633 COMPILE_ASSERT(offsetof(BufferData, target) == 4,
    634                OffsetOf_BufferData_target_not_4);
    635 COMPILE_ASSERT(offsetof(BufferData, size) == 8,
    636                OffsetOf_BufferData_size_not_8);
    637 COMPILE_ASSERT(offsetof(BufferData, data_shm_id) == 12,
    638                OffsetOf_BufferData_data_shm_id_not_12);
    639 COMPILE_ASSERT(offsetof(BufferData, data_shm_offset) == 16,
    640                OffsetOf_BufferData_data_shm_offset_not_16);
    641 COMPILE_ASSERT(offsetof(BufferData, usage) == 20,
    642                OffsetOf_BufferData_usage_not_20);
    643 
    644 struct BufferDataImmediate {
    645   typedef BufferDataImmediate ValueType;
    646   static const CommandId kCmdId = kBufferDataImmediate;
    647   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
    648 
    649   static uint32 ComputeSize(uint32 size_in_bytes) {
    650     return static_cast<uint32>(
    651         sizeof(ValueType) +  // NOLINT
    652         RoundSizeToMultipleOfEntries(size_in_bytes));
    653   }
    654 
    655   void SetHeader(uint32 size_in_bytes) {
    656     header.SetCmdByTotalSize<ValueType>(size_in_bytes);
    657   }
    658 
    659   void Init(GLenum _target, GLsizeiptr _size, GLenum _usage) {
    660     uint32 total_size = 0;  // TODO(gman): get correct size.
    661     SetHeader(total_size);
    662     target = _target;
    663     size = _size;
    664     usage = _usage;
    665   }
    666 
    667   void* Set(void* cmd, GLenum _target, GLsizeiptr _size, GLenum _usage) {
    668     uint32 total_size = 0;  // TODO(gman): get correct size.
    669     static_cast<ValueType*>(cmd)->Init(_target, _size, _usage);
    670     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, total_size);
    671   }
    672 
    673   gpu::CommandHeader header;
    674   uint32 target;
    675   int32 size;
    676   uint32 usage;
    677 };
    678 
    679 COMPILE_ASSERT(sizeof(BufferDataImmediate) == 16,
    680                Sizeof_BufferDataImmediate_is_not_16);
    681 COMPILE_ASSERT(offsetof(BufferDataImmediate, header) == 0,
    682                OffsetOf_BufferDataImmediate_header_not_0);
    683 COMPILE_ASSERT(offsetof(BufferDataImmediate, target) == 4,
    684                OffsetOf_BufferDataImmediate_target_not_4);
    685 COMPILE_ASSERT(offsetof(BufferDataImmediate, size) == 8,
    686                OffsetOf_BufferDataImmediate_size_not_8);
    687 COMPILE_ASSERT(offsetof(BufferDataImmediate, usage) == 12,
    688                OffsetOf_BufferDataImmediate_usage_not_12);
    689 
    690 struct BufferSubData {
    691   typedef BufferSubData ValueType;
    692   static const CommandId kCmdId = kBufferSubData;
    693   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
    694 
    695   static uint32 ComputeSize() {
    696     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
    697   }
    698 
    699   void SetHeader() {
    700     header.SetCmd<ValueType>();
    701   }
    702 
    703   void Init(
    704       GLenum _target, GLintptr _offset, GLsizeiptr _size, uint32 _data_shm_id,
    705       uint32 _data_shm_offset) {
    706     SetHeader();
    707     target = _target;
    708     offset = _offset;
    709     size = _size;
    710     data_shm_id = _data_shm_id;
    711     data_shm_offset = _data_shm_offset;
    712   }
    713 
    714   void* Set(
    715       void* cmd, GLenum _target, GLintptr _offset, GLsizeiptr _size,
    716       uint32 _data_shm_id, uint32 _data_shm_offset) {
    717     static_cast<ValueType*>(
    718         cmd)->Init(_target, _offset, _size, _data_shm_id, _data_shm_offset);
    719     return NextCmdAddress<ValueType>(cmd);
    720   }
    721 
    722   gpu::CommandHeader header;
    723   uint32 target;
    724   int32 offset;
    725   int32 size;
    726   uint32 data_shm_id;
    727   uint32 data_shm_offset;
    728 };
    729 
    730 COMPILE_ASSERT(sizeof(BufferSubData) == 24,
    731                Sizeof_BufferSubData_is_not_24);
    732 COMPILE_ASSERT(offsetof(BufferSubData, header) == 0,
    733                OffsetOf_BufferSubData_header_not_0);
    734 COMPILE_ASSERT(offsetof(BufferSubData, target) == 4,
    735                OffsetOf_BufferSubData_target_not_4);
    736 COMPILE_ASSERT(offsetof(BufferSubData, offset) == 8,
    737                OffsetOf_BufferSubData_offset_not_8);
    738 COMPILE_ASSERT(offsetof(BufferSubData, size) == 12,
    739                OffsetOf_BufferSubData_size_not_12);
    740 COMPILE_ASSERT(offsetof(BufferSubData, data_shm_id) == 16,
    741                OffsetOf_BufferSubData_data_shm_id_not_16);
    742 COMPILE_ASSERT(offsetof(BufferSubData, data_shm_offset) == 20,
    743                OffsetOf_BufferSubData_data_shm_offset_not_20);
    744 
    745 struct BufferSubDataImmediate {
    746   typedef BufferSubDataImmediate ValueType;
    747   static const CommandId kCmdId = kBufferSubDataImmediate;
    748   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
    749 
    750   static uint32 ComputeSize(uint32 size_in_bytes) {
    751     return static_cast<uint32>(
    752         sizeof(ValueType) +  // NOLINT
    753         RoundSizeToMultipleOfEntries(size_in_bytes));
    754   }
    755 
    756   void SetHeader(uint32 size_in_bytes) {
    757     header.SetCmdByTotalSize<ValueType>(size_in_bytes);
    758   }
    759 
    760   void Init(GLenum _target, GLintptr _offset, GLsizeiptr _size) {
    761     uint32 total_size = ComputeSize(_size);
    762     SetHeader(total_size);
    763     target = _target;
    764     offset = _offset;
    765     size = _size;
    766   }
    767 
    768   void* Set(void* cmd, GLenum _target, GLintptr _offset, GLsizeiptr _size) {
    769     uint32 total_size = ComputeSize(_size);
    770     static_cast<ValueType*>(cmd)->Init(_target, _offset, _size);
    771     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, total_size);
    772   }
    773 
    774   gpu::CommandHeader header;
    775   uint32 target;
    776   int32 offset;
    777   int32 size;
    778 };
    779 
    780 COMPILE_ASSERT(sizeof(BufferSubDataImmediate) == 16,
    781                Sizeof_BufferSubDataImmediate_is_not_16);
    782 COMPILE_ASSERT(offsetof(BufferSubDataImmediate, header) == 0,
    783                OffsetOf_BufferSubDataImmediate_header_not_0);
    784 COMPILE_ASSERT(offsetof(BufferSubDataImmediate, target) == 4,
    785                OffsetOf_BufferSubDataImmediate_target_not_4);
    786 COMPILE_ASSERT(offsetof(BufferSubDataImmediate, offset) == 8,
    787                OffsetOf_BufferSubDataImmediate_offset_not_8);
    788 COMPILE_ASSERT(offsetof(BufferSubDataImmediate, size) == 12,
    789                OffsetOf_BufferSubDataImmediate_size_not_12);
    790 
    791 struct CheckFramebufferStatus {
    792   typedef CheckFramebufferStatus ValueType;
    793   static const CommandId kCmdId = kCheckFramebufferStatus;
    794   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
    795 
    796   typedef GLenum Result;
    797 
    798   static uint32 ComputeSize() {
    799     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
    800   }
    801 
    802   void SetHeader() {
    803     header.SetCmd<ValueType>();
    804   }
    805 
    806   void Init(GLenum _target, uint32 _result_shm_id, uint32 _result_shm_offset) {
    807     SetHeader();
    808     target = _target;
    809     result_shm_id = _result_shm_id;
    810     result_shm_offset = _result_shm_offset;
    811   }
    812 
    813   void* Set(
    814       void* cmd, GLenum _target, uint32 _result_shm_id,
    815       uint32 _result_shm_offset) {
    816     static_cast<ValueType*>(
    817         cmd)->Init(_target, _result_shm_id, _result_shm_offset);
    818     return NextCmdAddress<ValueType>(cmd);
    819   }
    820 
    821   gpu::CommandHeader header;
    822   uint32 target;
    823   uint32 result_shm_id;
    824   uint32 result_shm_offset;
    825 };
    826 
    827 COMPILE_ASSERT(sizeof(CheckFramebufferStatus) == 16,
    828                Sizeof_CheckFramebufferStatus_is_not_16);
    829 COMPILE_ASSERT(offsetof(CheckFramebufferStatus, header) == 0,
    830                OffsetOf_CheckFramebufferStatus_header_not_0);
    831 COMPILE_ASSERT(offsetof(CheckFramebufferStatus, target) == 4,
    832                OffsetOf_CheckFramebufferStatus_target_not_4);
    833 COMPILE_ASSERT(offsetof(CheckFramebufferStatus, result_shm_id) == 8,
    834                OffsetOf_CheckFramebufferStatus_result_shm_id_not_8);
    835 COMPILE_ASSERT(offsetof(CheckFramebufferStatus, result_shm_offset) == 12,
    836                OffsetOf_CheckFramebufferStatus_result_shm_offset_not_12);
    837 
    838 struct Clear {
    839   typedef Clear ValueType;
    840   static const CommandId kCmdId = kClear;
    841   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
    842 
    843   static uint32 ComputeSize() {
    844     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
    845   }
    846 
    847   void SetHeader() {
    848     header.SetCmd<ValueType>();
    849   }
    850 
    851   void Init(GLbitfield _mask) {
    852     SetHeader();
    853     mask = _mask;
    854   }
    855 
    856   void* Set(void* cmd, GLbitfield _mask) {
    857     static_cast<ValueType*>(cmd)->Init(_mask);
    858     return NextCmdAddress<ValueType>(cmd);
    859   }
    860 
    861   gpu::CommandHeader header;
    862   uint32 mask;
    863 };
    864 
    865 COMPILE_ASSERT(sizeof(Clear) == 8,
    866                Sizeof_Clear_is_not_8);
    867 COMPILE_ASSERT(offsetof(Clear, header) == 0,
    868                OffsetOf_Clear_header_not_0);
    869 COMPILE_ASSERT(offsetof(Clear, mask) == 4,
    870                OffsetOf_Clear_mask_not_4);
    871 
    872 struct ClearColor {
    873   typedef ClearColor ValueType;
    874   static const CommandId kCmdId = kClearColor;
    875   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
    876 
    877   static uint32 ComputeSize() {
    878     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
    879   }
    880 
    881   void SetHeader() {
    882     header.SetCmd<ValueType>();
    883   }
    884 
    885   void Init(GLclampf _red, GLclampf _green, GLclampf _blue, GLclampf _alpha) {
    886     SetHeader();
    887     red = _red;
    888     green = _green;
    889     blue = _blue;
    890     alpha = _alpha;
    891   }
    892 
    893   void* Set(
    894       void* cmd, GLclampf _red, GLclampf _green, GLclampf _blue,
    895       GLclampf _alpha) {
    896     static_cast<ValueType*>(cmd)->Init(_red, _green, _blue, _alpha);
    897     return NextCmdAddress<ValueType>(cmd);
    898   }
    899 
    900   gpu::CommandHeader header;
    901   float red;
    902   float green;
    903   float blue;
    904   float alpha;
    905 };
    906 
    907 COMPILE_ASSERT(sizeof(ClearColor) == 20,
    908                Sizeof_ClearColor_is_not_20);
    909 COMPILE_ASSERT(offsetof(ClearColor, header) == 0,
    910                OffsetOf_ClearColor_header_not_0);
    911 COMPILE_ASSERT(offsetof(ClearColor, red) == 4,
    912                OffsetOf_ClearColor_red_not_4);
    913 COMPILE_ASSERT(offsetof(ClearColor, green) == 8,
    914                OffsetOf_ClearColor_green_not_8);
    915 COMPILE_ASSERT(offsetof(ClearColor, blue) == 12,
    916                OffsetOf_ClearColor_blue_not_12);
    917 COMPILE_ASSERT(offsetof(ClearColor, alpha) == 16,
    918                OffsetOf_ClearColor_alpha_not_16);
    919 
    920 struct ClearDepthf {
    921   typedef ClearDepthf ValueType;
    922   static const CommandId kCmdId = kClearDepthf;
    923   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
    924 
    925   static uint32 ComputeSize() {
    926     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
    927   }
    928 
    929   void SetHeader() {
    930     header.SetCmd<ValueType>();
    931   }
    932 
    933   void Init(GLclampf _depth) {
    934     SetHeader();
    935     depth = _depth;
    936   }
    937 
    938   void* Set(void* cmd, GLclampf _depth) {
    939     static_cast<ValueType*>(cmd)->Init(_depth);
    940     return NextCmdAddress<ValueType>(cmd);
    941   }
    942 
    943   gpu::CommandHeader header;
    944   float depth;
    945 };
    946 
    947 COMPILE_ASSERT(sizeof(ClearDepthf) == 8,
    948                Sizeof_ClearDepthf_is_not_8);
    949 COMPILE_ASSERT(offsetof(ClearDepthf, header) == 0,
    950                OffsetOf_ClearDepthf_header_not_0);
    951 COMPILE_ASSERT(offsetof(ClearDepthf, depth) == 4,
    952                OffsetOf_ClearDepthf_depth_not_4);
    953 
    954 struct ClearStencil {
    955   typedef ClearStencil ValueType;
    956   static const CommandId kCmdId = kClearStencil;
    957   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
    958 
    959   static uint32 ComputeSize() {
    960     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
    961   }
    962 
    963   void SetHeader() {
    964     header.SetCmd<ValueType>();
    965   }
    966 
    967   void Init(GLint _s) {
    968     SetHeader();
    969     s = _s;
    970   }
    971 
    972   void* Set(void* cmd, GLint _s) {
    973     static_cast<ValueType*>(cmd)->Init(_s);
    974     return NextCmdAddress<ValueType>(cmd);
    975   }
    976 
    977   gpu::CommandHeader header;
    978   int32 s;
    979 };
    980 
    981 COMPILE_ASSERT(sizeof(ClearStencil) == 8,
    982                Sizeof_ClearStencil_is_not_8);
    983 COMPILE_ASSERT(offsetof(ClearStencil, header) == 0,
    984                OffsetOf_ClearStencil_header_not_0);
    985 COMPILE_ASSERT(offsetof(ClearStencil, s) == 4,
    986                OffsetOf_ClearStencil_s_not_4);
    987 
    988 struct ColorMask {
    989   typedef ColorMask ValueType;
    990   static const CommandId kCmdId = kColorMask;
    991   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
    992 
    993   static uint32 ComputeSize() {
    994     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
    995   }
    996 
    997   void SetHeader() {
    998     header.SetCmd<ValueType>();
    999   }
   1000 
   1001   void Init(
   1002       GLboolean _red, GLboolean _green, GLboolean _blue, GLboolean _alpha) {
   1003     SetHeader();
   1004     red = _red;
   1005     green = _green;
   1006     blue = _blue;
   1007     alpha = _alpha;
   1008   }
   1009 
   1010   void* Set(
   1011       void* cmd, GLboolean _red, GLboolean _green, GLboolean _blue,
   1012       GLboolean _alpha) {
   1013     static_cast<ValueType*>(cmd)->Init(_red, _green, _blue, _alpha);
   1014     return NextCmdAddress<ValueType>(cmd);
   1015   }
   1016 
   1017   gpu::CommandHeader header;
   1018   uint32 red;
   1019   uint32 green;
   1020   uint32 blue;
   1021   uint32 alpha;
   1022 };
   1023 
   1024 COMPILE_ASSERT(sizeof(ColorMask) == 20,
   1025                Sizeof_ColorMask_is_not_20);
   1026 COMPILE_ASSERT(offsetof(ColorMask, header) == 0,
   1027                OffsetOf_ColorMask_header_not_0);
   1028 COMPILE_ASSERT(offsetof(ColorMask, red) == 4,
   1029                OffsetOf_ColorMask_red_not_4);
   1030 COMPILE_ASSERT(offsetof(ColorMask, green) == 8,
   1031                OffsetOf_ColorMask_green_not_8);
   1032 COMPILE_ASSERT(offsetof(ColorMask, blue) == 12,
   1033                OffsetOf_ColorMask_blue_not_12);
   1034 COMPILE_ASSERT(offsetof(ColorMask, alpha) == 16,
   1035                OffsetOf_ColorMask_alpha_not_16);
   1036 
   1037 struct CompileShader {
   1038   typedef CompileShader ValueType;
   1039   static const CommandId kCmdId = kCompileShader;
   1040   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   1041 
   1042   static uint32 ComputeSize() {
   1043     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   1044   }
   1045 
   1046   void SetHeader() {
   1047     header.SetCmd<ValueType>();
   1048   }
   1049 
   1050   void Init(GLuint _shader) {
   1051     SetHeader();
   1052     shader = _shader;
   1053   }
   1054 
   1055   void* Set(void* cmd, GLuint _shader) {
   1056     static_cast<ValueType*>(cmd)->Init(_shader);
   1057     return NextCmdAddress<ValueType>(cmd);
   1058   }
   1059 
   1060   gpu::CommandHeader header;
   1061   uint32 shader;
   1062 };
   1063 
   1064 COMPILE_ASSERT(sizeof(CompileShader) == 8,
   1065                Sizeof_CompileShader_is_not_8);
   1066 COMPILE_ASSERT(offsetof(CompileShader, header) == 0,
   1067                OffsetOf_CompileShader_header_not_0);
   1068 COMPILE_ASSERT(offsetof(CompileShader, shader) == 4,
   1069                OffsetOf_CompileShader_shader_not_4);
   1070 
   1071 struct CompressedTexImage2D {
   1072   typedef CompressedTexImage2D ValueType;
   1073   static const CommandId kCmdId = kCompressedTexImage2D;
   1074   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   1075 
   1076   static uint32 ComputeSize() {
   1077     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   1078   }
   1079 
   1080   void SetHeader() {
   1081     header.SetCmd<ValueType>();
   1082   }
   1083 
   1084   void Init(
   1085       GLenum _target, GLint _level, GLenum _internalformat, GLsizei _width,
   1086       GLsizei _height, GLint _border, GLsizei _imageSize, uint32 _data_shm_id,
   1087       uint32 _data_shm_offset) {
   1088     SetHeader();
   1089     target = _target;
   1090     level = _level;
   1091     internalformat = _internalformat;
   1092     width = _width;
   1093     height = _height;
   1094     border = _border;
   1095     imageSize = _imageSize;
   1096     data_shm_id = _data_shm_id;
   1097     data_shm_offset = _data_shm_offset;
   1098   }
   1099 
   1100   void* Set(
   1101       void* cmd, GLenum _target, GLint _level, GLenum _internalformat,
   1102       GLsizei _width, GLsizei _height, GLint _border, GLsizei _imageSize,
   1103       uint32 _data_shm_id, uint32 _data_shm_offset) {
   1104     static_cast<ValueType*>(
   1105         cmd)->Init(
   1106             _target, _level, _internalformat, _width, _height, _border,
   1107             _imageSize, _data_shm_id, _data_shm_offset);
   1108     return NextCmdAddress<ValueType>(cmd);
   1109   }
   1110 
   1111   gpu::CommandHeader header;
   1112   uint32 target;
   1113   int32 level;
   1114   uint32 internalformat;
   1115   int32 width;
   1116   int32 height;
   1117   int32 border;
   1118   int32 imageSize;
   1119   uint32 data_shm_id;
   1120   uint32 data_shm_offset;
   1121 };
   1122 
   1123 COMPILE_ASSERT(sizeof(CompressedTexImage2D) == 40,
   1124                Sizeof_CompressedTexImage2D_is_not_40);
   1125 COMPILE_ASSERT(offsetof(CompressedTexImage2D, header) == 0,
   1126                OffsetOf_CompressedTexImage2D_header_not_0);
   1127 COMPILE_ASSERT(offsetof(CompressedTexImage2D, target) == 4,
   1128                OffsetOf_CompressedTexImage2D_target_not_4);
   1129 COMPILE_ASSERT(offsetof(CompressedTexImage2D, level) == 8,
   1130                OffsetOf_CompressedTexImage2D_level_not_8);
   1131 COMPILE_ASSERT(offsetof(CompressedTexImage2D, internalformat) == 12,
   1132                OffsetOf_CompressedTexImage2D_internalformat_not_12);
   1133 COMPILE_ASSERT(offsetof(CompressedTexImage2D, width) == 16,
   1134                OffsetOf_CompressedTexImage2D_width_not_16);
   1135 COMPILE_ASSERT(offsetof(CompressedTexImage2D, height) == 20,
   1136                OffsetOf_CompressedTexImage2D_height_not_20);
   1137 COMPILE_ASSERT(offsetof(CompressedTexImage2D, border) == 24,
   1138                OffsetOf_CompressedTexImage2D_border_not_24);
   1139 COMPILE_ASSERT(offsetof(CompressedTexImage2D, imageSize) == 28,
   1140                OffsetOf_CompressedTexImage2D_imageSize_not_28);
   1141 COMPILE_ASSERT(offsetof(CompressedTexImage2D, data_shm_id) == 32,
   1142                OffsetOf_CompressedTexImage2D_data_shm_id_not_32);
   1143 COMPILE_ASSERT(offsetof(CompressedTexImage2D, data_shm_offset) == 36,
   1144                OffsetOf_CompressedTexImage2D_data_shm_offset_not_36);
   1145 
   1146 struct CompressedTexImage2DImmediate {
   1147   typedef CompressedTexImage2DImmediate ValueType;
   1148   static const CommandId kCmdId = kCompressedTexImage2DImmediate;
   1149   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   1150 
   1151   static uint32 ComputeSize(uint32 size_in_bytes) {
   1152     return static_cast<uint32>(
   1153         sizeof(ValueType) +  // NOLINT
   1154         RoundSizeToMultipleOfEntries(size_in_bytes));
   1155   }
   1156 
   1157   void SetHeader(uint32 size_in_bytes) {
   1158     header.SetCmdByTotalSize<ValueType>(size_in_bytes);
   1159   }
   1160 
   1161   void Init(
   1162       GLenum _target, GLint _level, GLenum _internalformat, GLsizei _width,
   1163       GLsizei _height, GLint _border, GLsizei _imageSize) {
   1164     uint32 total_size = 0;  // TODO(gman): get correct size.
   1165     SetHeader(total_size);
   1166     target = _target;
   1167     level = _level;
   1168     internalformat = _internalformat;
   1169     width = _width;
   1170     height = _height;
   1171     border = _border;
   1172     imageSize = _imageSize;
   1173   }
   1174 
   1175   void* Set(
   1176       void* cmd, GLenum _target, GLint _level, GLenum _internalformat,
   1177       GLsizei _width, GLsizei _height, GLint _border, GLsizei _imageSize) {
   1178     uint32 total_size = 0;  // TODO(gman): get correct size.
   1179     static_cast<ValueType*>(
   1180         cmd)->Init(
   1181             _target, _level, _internalformat, _width, _height, _border,
   1182             _imageSize);
   1183     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, total_size);
   1184   }
   1185 
   1186   gpu::CommandHeader header;
   1187   uint32 target;
   1188   int32 level;
   1189   uint32 internalformat;
   1190   int32 width;
   1191   int32 height;
   1192   int32 border;
   1193   int32 imageSize;
   1194 };
   1195 
   1196 COMPILE_ASSERT(sizeof(CompressedTexImage2DImmediate) == 32,
   1197                Sizeof_CompressedTexImage2DImmediate_is_not_32);
   1198 COMPILE_ASSERT(offsetof(CompressedTexImage2DImmediate, header) == 0,
   1199                OffsetOf_CompressedTexImage2DImmediate_header_not_0);
   1200 COMPILE_ASSERT(offsetof(CompressedTexImage2DImmediate, target) == 4,
   1201                OffsetOf_CompressedTexImage2DImmediate_target_not_4);
   1202 COMPILE_ASSERT(offsetof(CompressedTexImage2DImmediate, level) == 8,
   1203                OffsetOf_CompressedTexImage2DImmediate_level_not_8);
   1204 COMPILE_ASSERT(offsetof(CompressedTexImage2DImmediate, internalformat) == 12,
   1205                OffsetOf_CompressedTexImage2DImmediate_internalformat_not_12);
   1206 COMPILE_ASSERT(offsetof(CompressedTexImage2DImmediate, width) == 16,
   1207                OffsetOf_CompressedTexImage2DImmediate_width_not_16);
   1208 COMPILE_ASSERT(offsetof(CompressedTexImage2DImmediate, height) == 20,
   1209                OffsetOf_CompressedTexImage2DImmediate_height_not_20);
   1210 COMPILE_ASSERT(offsetof(CompressedTexImage2DImmediate, border) == 24,
   1211                OffsetOf_CompressedTexImage2DImmediate_border_not_24);
   1212 COMPILE_ASSERT(offsetof(CompressedTexImage2DImmediate, imageSize) == 28,
   1213                OffsetOf_CompressedTexImage2DImmediate_imageSize_not_28);
   1214 
   1215 struct CompressedTexImage2DBucket {
   1216   typedef CompressedTexImage2DBucket ValueType;
   1217   static const CommandId kCmdId = kCompressedTexImage2DBucket;
   1218   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   1219 
   1220   static uint32 ComputeSize() {
   1221     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   1222   }
   1223 
   1224   void SetHeader() {
   1225     header.SetCmd<ValueType>();
   1226   }
   1227 
   1228   void Init(
   1229       GLenum _target, GLint _level, GLenum _internalformat, GLsizei _width,
   1230       GLsizei _height, GLint _border, GLuint _bucket_id) {
   1231     SetHeader();
   1232     target = _target;
   1233     level = _level;
   1234     internalformat = _internalformat;
   1235     width = _width;
   1236     height = _height;
   1237     border = _border;
   1238     bucket_id = _bucket_id;
   1239   }
   1240 
   1241   void* Set(
   1242       void* cmd, GLenum _target, GLint _level, GLenum _internalformat,
   1243       GLsizei _width, GLsizei _height, GLint _border, GLuint _bucket_id) {
   1244     static_cast<ValueType*>(
   1245         cmd)->Init(
   1246             _target, _level, _internalformat, _width, _height, _border,
   1247             _bucket_id);
   1248     return NextCmdAddress<ValueType>(cmd);
   1249   }
   1250 
   1251   gpu::CommandHeader header;
   1252   uint32 target;
   1253   int32 level;
   1254   uint32 internalformat;
   1255   int32 width;
   1256   int32 height;
   1257   int32 border;
   1258   uint32 bucket_id;
   1259 };
   1260 
   1261 COMPILE_ASSERT(sizeof(CompressedTexImage2DBucket) == 32,
   1262                Sizeof_CompressedTexImage2DBucket_is_not_32);
   1263 COMPILE_ASSERT(offsetof(CompressedTexImage2DBucket, header) == 0,
   1264                OffsetOf_CompressedTexImage2DBucket_header_not_0);
   1265 COMPILE_ASSERT(offsetof(CompressedTexImage2DBucket, target) == 4,
   1266                OffsetOf_CompressedTexImage2DBucket_target_not_4);
   1267 COMPILE_ASSERT(offsetof(CompressedTexImage2DBucket, level) == 8,
   1268                OffsetOf_CompressedTexImage2DBucket_level_not_8);
   1269 COMPILE_ASSERT(offsetof(CompressedTexImage2DBucket, internalformat) == 12,
   1270                OffsetOf_CompressedTexImage2DBucket_internalformat_not_12);
   1271 COMPILE_ASSERT(offsetof(CompressedTexImage2DBucket, width) == 16,
   1272                OffsetOf_CompressedTexImage2DBucket_width_not_16);
   1273 COMPILE_ASSERT(offsetof(CompressedTexImage2DBucket, height) == 20,
   1274                OffsetOf_CompressedTexImage2DBucket_height_not_20);
   1275 COMPILE_ASSERT(offsetof(CompressedTexImage2DBucket, border) == 24,
   1276                OffsetOf_CompressedTexImage2DBucket_border_not_24);
   1277 COMPILE_ASSERT(offsetof(CompressedTexImage2DBucket, bucket_id) == 28,
   1278                OffsetOf_CompressedTexImage2DBucket_bucket_id_not_28);
   1279 
   1280 struct CompressedTexSubImage2D {
   1281   typedef CompressedTexSubImage2D ValueType;
   1282   static const CommandId kCmdId = kCompressedTexSubImage2D;
   1283   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   1284 
   1285   static uint32 ComputeSize() {
   1286     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   1287   }
   1288 
   1289   void SetHeader() {
   1290     header.SetCmd<ValueType>();
   1291   }
   1292 
   1293   void Init(
   1294       GLenum _target, GLint _level, GLint _xoffset, GLint _yoffset,
   1295       GLsizei _width, GLsizei _height, GLenum _format, GLsizei _imageSize,
   1296       uint32 _data_shm_id, uint32 _data_shm_offset) {
   1297     SetHeader();
   1298     target = _target;
   1299     level = _level;
   1300     xoffset = _xoffset;
   1301     yoffset = _yoffset;
   1302     width = _width;
   1303     height = _height;
   1304     format = _format;
   1305     imageSize = _imageSize;
   1306     data_shm_id = _data_shm_id;
   1307     data_shm_offset = _data_shm_offset;
   1308   }
   1309 
   1310   void* Set(
   1311       void* cmd, GLenum _target, GLint _level, GLint _xoffset, GLint _yoffset,
   1312       GLsizei _width, GLsizei _height, GLenum _format, GLsizei _imageSize,
   1313       uint32 _data_shm_id, uint32 _data_shm_offset) {
   1314     static_cast<ValueType*>(
   1315         cmd)->Init(
   1316             _target, _level, _xoffset, _yoffset, _width, _height, _format,
   1317             _imageSize, _data_shm_id, _data_shm_offset);
   1318     return NextCmdAddress<ValueType>(cmd);
   1319   }
   1320 
   1321   gpu::CommandHeader header;
   1322   uint32 target;
   1323   int32 level;
   1324   int32 xoffset;
   1325   int32 yoffset;
   1326   int32 width;
   1327   int32 height;
   1328   uint32 format;
   1329   int32 imageSize;
   1330   uint32 data_shm_id;
   1331   uint32 data_shm_offset;
   1332 };
   1333 
   1334 COMPILE_ASSERT(sizeof(CompressedTexSubImage2D) == 44,
   1335                Sizeof_CompressedTexSubImage2D_is_not_44);
   1336 COMPILE_ASSERT(offsetof(CompressedTexSubImage2D, header) == 0,
   1337                OffsetOf_CompressedTexSubImage2D_header_not_0);
   1338 COMPILE_ASSERT(offsetof(CompressedTexSubImage2D, target) == 4,
   1339                OffsetOf_CompressedTexSubImage2D_target_not_4);
   1340 COMPILE_ASSERT(offsetof(CompressedTexSubImage2D, level) == 8,
   1341                OffsetOf_CompressedTexSubImage2D_level_not_8);
   1342 COMPILE_ASSERT(offsetof(CompressedTexSubImage2D, xoffset) == 12,
   1343                OffsetOf_CompressedTexSubImage2D_xoffset_not_12);
   1344 COMPILE_ASSERT(offsetof(CompressedTexSubImage2D, yoffset) == 16,
   1345                OffsetOf_CompressedTexSubImage2D_yoffset_not_16);
   1346 COMPILE_ASSERT(offsetof(CompressedTexSubImage2D, width) == 20,
   1347                OffsetOf_CompressedTexSubImage2D_width_not_20);
   1348 COMPILE_ASSERT(offsetof(CompressedTexSubImage2D, height) == 24,
   1349                OffsetOf_CompressedTexSubImage2D_height_not_24);
   1350 COMPILE_ASSERT(offsetof(CompressedTexSubImage2D, format) == 28,
   1351                OffsetOf_CompressedTexSubImage2D_format_not_28);
   1352 COMPILE_ASSERT(offsetof(CompressedTexSubImage2D, imageSize) == 32,
   1353                OffsetOf_CompressedTexSubImage2D_imageSize_not_32);
   1354 COMPILE_ASSERT(offsetof(CompressedTexSubImage2D, data_shm_id) == 36,
   1355                OffsetOf_CompressedTexSubImage2D_data_shm_id_not_36);
   1356 COMPILE_ASSERT(offsetof(CompressedTexSubImage2D, data_shm_offset) == 40,
   1357                OffsetOf_CompressedTexSubImage2D_data_shm_offset_not_40);
   1358 
   1359 struct CompressedTexSubImage2DImmediate {
   1360   typedef CompressedTexSubImage2DImmediate ValueType;
   1361   static const CommandId kCmdId = kCompressedTexSubImage2DImmediate;
   1362   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   1363 
   1364   static uint32 ComputeSize(uint32 size_in_bytes) {
   1365     return static_cast<uint32>(
   1366         sizeof(ValueType) +  // NOLINT
   1367         RoundSizeToMultipleOfEntries(size_in_bytes));
   1368   }
   1369 
   1370   void SetHeader(uint32 size_in_bytes) {
   1371     header.SetCmdByTotalSize<ValueType>(size_in_bytes);
   1372   }
   1373 
   1374   void Init(
   1375       GLenum _target, GLint _level, GLint _xoffset, GLint _yoffset,
   1376       GLsizei _width, GLsizei _height, GLenum _format, GLsizei _imageSize) {
   1377     uint32 total_size = ComputeSize(_imageSize);
   1378     SetHeader(total_size);
   1379     target = _target;
   1380     level = _level;
   1381     xoffset = _xoffset;
   1382     yoffset = _yoffset;
   1383     width = _width;
   1384     height = _height;
   1385     format = _format;
   1386     imageSize = _imageSize;
   1387   }
   1388 
   1389   void* Set(
   1390       void* cmd, GLenum _target, GLint _level, GLint _xoffset, GLint _yoffset,
   1391       GLsizei _width, GLsizei _height, GLenum _format, GLsizei _imageSize) {
   1392     uint32 total_size = ComputeSize(_imageSize);
   1393     static_cast<ValueType*>(
   1394         cmd)->Init(
   1395             _target, _level, _xoffset, _yoffset, _width, _height, _format,
   1396             _imageSize);
   1397     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, total_size);
   1398   }
   1399 
   1400   gpu::CommandHeader header;
   1401   uint32 target;
   1402   int32 level;
   1403   int32 xoffset;
   1404   int32 yoffset;
   1405   int32 width;
   1406   int32 height;
   1407   uint32 format;
   1408   int32 imageSize;
   1409 };
   1410 
   1411 COMPILE_ASSERT(sizeof(CompressedTexSubImage2DImmediate) == 36,
   1412                Sizeof_CompressedTexSubImage2DImmediate_is_not_36);
   1413 COMPILE_ASSERT(offsetof(CompressedTexSubImage2DImmediate, header) == 0,
   1414                OffsetOf_CompressedTexSubImage2DImmediate_header_not_0);
   1415 COMPILE_ASSERT(offsetof(CompressedTexSubImage2DImmediate, target) == 4,
   1416                OffsetOf_CompressedTexSubImage2DImmediate_target_not_4);
   1417 COMPILE_ASSERT(offsetof(CompressedTexSubImage2DImmediate, level) == 8,
   1418                OffsetOf_CompressedTexSubImage2DImmediate_level_not_8);
   1419 COMPILE_ASSERT(offsetof(CompressedTexSubImage2DImmediate, xoffset) == 12,
   1420                OffsetOf_CompressedTexSubImage2DImmediate_xoffset_not_12);
   1421 COMPILE_ASSERT(offsetof(CompressedTexSubImage2DImmediate, yoffset) == 16,
   1422                OffsetOf_CompressedTexSubImage2DImmediate_yoffset_not_16);
   1423 COMPILE_ASSERT(offsetof(CompressedTexSubImage2DImmediate, width) == 20,
   1424                OffsetOf_CompressedTexSubImage2DImmediate_width_not_20);
   1425 COMPILE_ASSERT(offsetof(CompressedTexSubImage2DImmediate, height) == 24,
   1426                OffsetOf_CompressedTexSubImage2DImmediate_height_not_24);
   1427 COMPILE_ASSERT(offsetof(CompressedTexSubImage2DImmediate, format) == 28,
   1428                OffsetOf_CompressedTexSubImage2DImmediate_format_not_28);
   1429 COMPILE_ASSERT(offsetof(CompressedTexSubImage2DImmediate, imageSize) == 32,
   1430                OffsetOf_CompressedTexSubImage2DImmediate_imageSize_not_32);
   1431 
   1432 struct CompressedTexSubImage2DBucket {
   1433   typedef CompressedTexSubImage2DBucket ValueType;
   1434   static const CommandId kCmdId = kCompressedTexSubImage2DBucket;
   1435   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   1436 
   1437   static uint32 ComputeSize() {
   1438     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   1439   }
   1440 
   1441   void SetHeader() {
   1442     header.SetCmd<ValueType>();
   1443   }
   1444 
   1445   void Init(
   1446       GLenum _target, GLint _level, GLint _xoffset, GLint _yoffset,
   1447       GLsizei _width, GLsizei _height, GLenum _format, GLuint _bucket_id) {
   1448     SetHeader();
   1449     target = _target;
   1450     level = _level;
   1451     xoffset = _xoffset;
   1452     yoffset = _yoffset;
   1453     width = _width;
   1454     height = _height;
   1455     format = _format;
   1456     bucket_id = _bucket_id;
   1457   }
   1458 
   1459   void* Set(
   1460       void* cmd, GLenum _target, GLint _level, GLint _xoffset, GLint _yoffset,
   1461       GLsizei _width, GLsizei _height, GLenum _format, GLuint _bucket_id) {
   1462     static_cast<ValueType*>(
   1463         cmd)->Init(
   1464             _target, _level, _xoffset, _yoffset, _width, _height, _format,
   1465             _bucket_id);
   1466     return NextCmdAddress<ValueType>(cmd);
   1467   }
   1468 
   1469   gpu::CommandHeader header;
   1470   uint32 target;
   1471   int32 level;
   1472   int32 xoffset;
   1473   int32 yoffset;
   1474   int32 width;
   1475   int32 height;
   1476   uint32 format;
   1477   uint32 bucket_id;
   1478 };
   1479 
   1480 COMPILE_ASSERT(sizeof(CompressedTexSubImage2DBucket) == 36,
   1481                Sizeof_CompressedTexSubImage2DBucket_is_not_36);
   1482 COMPILE_ASSERT(offsetof(CompressedTexSubImage2DBucket, header) == 0,
   1483                OffsetOf_CompressedTexSubImage2DBucket_header_not_0);
   1484 COMPILE_ASSERT(offsetof(CompressedTexSubImage2DBucket, target) == 4,
   1485                OffsetOf_CompressedTexSubImage2DBucket_target_not_4);
   1486 COMPILE_ASSERT(offsetof(CompressedTexSubImage2DBucket, level) == 8,
   1487                OffsetOf_CompressedTexSubImage2DBucket_level_not_8);
   1488 COMPILE_ASSERT(offsetof(CompressedTexSubImage2DBucket, xoffset) == 12,
   1489                OffsetOf_CompressedTexSubImage2DBucket_xoffset_not_12);
   1490 COMPILE_ASSERT(offsetof(CompressedTexSubImage2DBucket, yoffset) == 16,
   1491                OffsetOf_CompressedTexSubImage2DBucket_yoffset_not_16);
   1492 COMPILE_ASSERT(offsetof(CompressedTexSubImage2DBucket, width) == 20,
   1493                OffsetOf_CompressedTexSubImage2DBucket_width_not_20);
   1494 COMPILE_ASSERT(offsetof(CompressedTexSubImage2DBucket, height) == 24,
   1495                OffsetOf_CompressedTexSubImage2DBucket_height_not_24);
   1496 COMPILE_ASSERT(offsetof(CompressedTexSubImage2DBucket, format) == 28,
   1497                OffsetOf_CompressedTexSubImage2DBucket_format_not_28);
   1498 COMPILE_ASSERT(offsetof(CompressedTexSubImage2DBucket, bucket_id) == 32,
   1499                OffsetOf_CompressedTexSubImage2DBucket_bucket_id_not_32);
   1500 
   1501 struct CopyTexImage2D {
   1502   typedef CopyTexImage2D ValueType;
   1503   static const CommandId kCmdId = kCopyTexImage2D;
   1504   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   1505 
   1506   static uint32 ComputeSize() {
   1507     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   1508   }
   1509 
   1510   void SetHeader() {
   1511     header.SetCmd<ValueType>();
   1512   }
   1513 
   1514   void Init(
   1515       GLenum _target, GLint _level, GLenum _internalformat, GLint _x, GLint _y,
   1516       GLsizei _width, GLsizei _height, GLint _border) {
   1517     SetHeader();
   1518     target = _target;
   1519     level = _level;
   1520     internalformat = _internalformat;
   1521     x = _x;
   1522     y = _y;
   1523     width = _width;
   1524     height = _height;
   1525     border = _border;
   1526   }
   1527 
   1528   void* Set(
   1529       void* cmd, GLenum _target, GLint _level, GLenum _internalformat, GLint _x,
   1530       GLint _y, GLsizei _width, GLsizei _height, GLint _border) {
   1531     static_cast<ValueType*>(
   1532         cmd)->Init(
   1533             _target, _level, _internalformat, _x, _y, _width, _height,
   1534             _border);
   1535     return NextCmdAddress<ValueType>(cmd);
   1536   }
   1537 
   1538   gpu::CommandHeader header;
   1539   uint32 target;
   1540   int32 level;
   1541   uint32 internalformat;
   1542   int32 x;
   1543   int32 y;
   1544   int32 width;
   1545   int32 height;
   1546   int32 border;
   1547 };
   1548 
   1549 COMPILE_ASSERT(sizeof(CopyTexImage2D) == 36,
   1550                Sizeof_CopyTexImage2D_is_not_36);
   1551 COMPILE_ASSERT(offsetof(CopyTexImage2D, header) == 0,
   1552                OffsetOf_CopyTexImage2D_header_not_0);
   1553 COMPILE_ASSERT(offsetof(CopyTexImage2D, target) == 4,
   1554                OffsetOf_CopyTexImage2D_target_not_4);
   1555 COMPILE_ASSERT(offsetof(CopyTexImage2D, level) == 8,
   1556                OffsetOf_CopyTexImage2D_level_not_8);
   1557 COMPILE_ASSERT(offsetof(CopyTexImage2D, internalformat) == 12,
   1558                OffsetOf_CopyTexImage2D_internalformat_not_12);
   1559 COMPILE_ASSERT(offsetof(CopyTexImage2D, x) == 16,
   1560                OffsetOf_CopyTexImage2D_x_not_16);
   1561 COMPILE_ASSERT(offsetof(CopyTexImage2D, y) == 20,
   1562                OffsetOf_CopyTexImage2D_y_not_20);
   1563 COMPILE_ASSERT(offsetof(CopyTexImage2D, width) == 24,
   1564                OffsetOf_CopyTexImage2D_width_not_24);
   1565 COMPILE_ASSERT(offsetof(CopyTexImage2D, height) == 28,
   1566                OffsetOf_CopyTexImage2D_height_not_28);
   1567 COMPILE_ASSERT(offsetof(CopyTexImage2D, border) == 32,
   1568                OffsetOf_CopyTexImage2D_border_not_32);
   1569 
   1570 struct CopyTexSubImage2D {
   1571   typedef CopyTexSubImage2D ValueType;
   1572   static const CommandId kCmdId = kCopyTexSubImage2D;
   1573   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   1574 
   1575   static uint32 ComputeSize() {
   1576     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   1577   }
   1578 
   1579   void SetHeader() {
   1580     header.SetCmd<ValueType>();
   1581   }
   1582 
   1583   void Init(
   1584       GLenum _target, GLint _level, GLint _xoffset, GLint _yoffset, GLint _x,
   1585       GLint _y, GLsizei _width, GLsizei _height) {
   1586     SetHeader();
   1587     target = _target;
   1588     level = _level;
   1589     xoffset = _xoffset;
   1590     yoffset = _yoffset;
   1591     x = _x;
   1592     y = _y;
   1593     width = _width;
   1594     height = _height;
   1595   }
   1596 
   1597   void* Set(
   1598       void* cmd, GLenum _target, GLint _level, GLint _xoffset, GLint _yoffset,
   1599       GLint _x, GLint _y, GLsizei _width, GLsizei _height) {
   1600     static_cast<ValueType*>(
   1601         cmd)->Init(
   1602             _target, _level, _xoffset, _yoffset, _x, _y, _width, _height);
   1603     return NextCmdAddress<ValueType>(cmd);
   1604   }
   1605 
   1606   gpu::CommandHeader header;
   1607   uint32 target;
   1608   int32 level;
   1609   int32 xoffset;
   1610   int32 yoffset;
   1611   int32 x;
   1612   int32 y;
   1613   int32 width;
   1614   int32 height;
   1615 };
   1616 
   1617 COMPILE_ASSERT(sizeof(CopyTexSubImage2D) == 36,
   1618                Sizeof_CopyTexSubImage2D_is_not_36);
   1619 COMPILE_ASSERT(offsetof(CopyTexSubImage2D, header) == 0,
   1620                OffsetOf_CopyTexSubImage2D_header_not_0);
   1621 COMPILE_ASSERT(offsetof(CopyTexSubImage2D, target) == 4,
   1622                OffsetOf_CopyTexSubImage2D_target_not_4);
   1623 COMPILE_ASSERT(offsetof(CopyTexSubImage2D, level) == 8,
   1624                OffsetOf_CopyTexSubImage2D_level_not_8);
   1625 COMPILE_ASSERT(offsetof(CopyTexSubImage2D, xoffset) == 12,
   1626                OffsetOf_CopyTexSubImage2D_xoffset_not_12);
   1627 COMPILE_ASSERT(offsetof(CopyTexSubImage2D, yoffset) == 16,
   1628                OffsetOf_CopyTexSubImage2D_yoffset_not_16);
   1629 COMPILE_ASSERT(offsetof(CopyTexSubImage2D, x) == 20,
   1630                OffsetOf_CopyTexSubImage2D_x_not_20);
   1631 COMPILE_ASSERT(offsetof(CopyTexSubImage2D, y) == 24,
   1632                OffsetOf_CopyTexSubImage2D_y_not_24);
   1633 COMPILE_ASSERT(offsetof(CopyTexSubImage2D, width) == 28,
   1634                OffsetOf_CopyTexSubImage2D_width_not_28);
   1635 COMPILE_ASSERT(offsetof(CopyTexSubImage2D, height) == 32,
   1636                OffsetOf_CopyTexSubImage2D_height_not_32);
   1637 
   1638 struct CreateProgram {
   1639   typedef CreateProgram ValueType;
   1640   static const CommandId kCmdId = kCreateProgram;
   1641   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   1642 
   1643   static uint32 ComputeSize() {
   1644     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   1645   }
   1646 
   1647   void SetHeader() {
   1648     header.SetCmd<ValueType>();
   1649   }
   1650 
   1651   void Init(uint32 _client_id) {
   1652     SetHeader();
   1653     client_id = _client_id;
   1654   }
   1655 
   1656   void* Set(void* cmd, uint32 _client_id) {
   1657     static_cast<ValueType*>(cmd)->Init(_client_id);
   1658     return NextCmdAddress<ValueType>(cmd);
   1659   }
   1660 
   1661   gpu::CommandHeader header;
   1662   uint32 client_id;
   1663 };
   1664 
   1665 COMPILE_ASSERT(sizeof(CreateProgram) == 8,
   1666                Sizeof_CreateProgram_is_not_8);
   1667 COMPILE_ASSERT(offsetof(CreateProgram, header) == 0,
   1668                OffsetOf_CreateProgram_header_not_0);
   1669 COMPILE_ASSERT(offsetof(CreateProgram, client_id) == 4,
   1670                OffsetOf_CreateProgram_client_id_not_4);
   1671 
   1672 struct CreateShader {
   1673   typedef CreateShader ValueType;
   1674   static const CommandId kCmdId = kCreateShader;
   1675   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   1676 
   1677   static uint32 ComputeSize() {
   1678     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   1679   }
   1680 
   1681   void SetHeader() {
   1682     header.SetCmd<ValueType>();
   1683   }
   1684 
   1685   void Init(GLenum _type, uint32 _client_id) {
   1686     SetHeader();
   1687     type = _type;
   1688     client_id = _client_id;
   1689   }
   1690 
   1691   void* Set(void* cmd, GLenum _type, uint32 _client_id) {
   1692     static_cast<ValueType*>(cmd)->Init(_type, _client_id);
   1693     return NextCmdAddress<ValueType>(cmd);
   1694   }
   1695 
   1696   gpu::CommandHeader header;
   1697   uint32 type;
   1698   uint32 client_id;
   1699 };
   1700 
   1701 COMPILE_ASSERT(sizeof(CreateShader) == 12,
   1702                Sizeof_CreateShader_is_not_12);
   1703 COMPILE_ASSERT(offsetof(CreateShader, header) == 0,
   1704                OffsetOf_CreateShader_header_not_0);
   1705 COMPILE_ASSERT(offsetof(CreateShader, type) == 4,
   1706                OffsetOf_CreateShader_type_not_4);
   1707 COMPILE_ASSERT(offsetof(CreateShader, client_id) == 8,
   1708                OffsetOf_CreateShader_client_id_not_8);
   1709 
   1710 struct CullFace {
   1711   typedef CullFace ValueType;
   1712   static const CommandId kCmdId = kCullFace;
   1713   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   1714 
   1715   static uint32 ComputeSize() {
   1716     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   1717   }
   1718 
   1719   void SetHeader() {
   1720     header.SetCmd<ValueType>();
   1721   }
   1722 
   1723   void Init(GLenum _mode) {
   1724     SetHeader();
   1725     mode = _mode;
   1726   }
   1727 
   1728   void* Set(void* cmd, GLenum _mode) {
   1729     static_cast<ValueType*>(cmd)->Init(_mode);
   1730     return NextCmdAddress<ValueType>(cmd);
   1731   }
   1732 
   1733   gpu::CommandHeader header;
   1734   uint32 mode;
   1735 };
   1736 
   1737 COMPILE_ASSERT(sizeof(CullFace) == 8,
   1738                Sizeof_CullFace_is_not_8);
   1739 COMPILE_ASSERT(offsetof(CullFace, header) == 0,
   1740                OffsetOf_CullFace_header_not_0);
   1741 COMPILE_ASSERT(offsetof(CullFace, mode) == 4,
   1742                OffsetOf_CullFace_mode_not_4);
   1743 
   1744 struct DeleteBuffers {
   1745   typedef DeleteBuffers ValueType;
   1746   static const CommandId kCmdId = kDeleteBuffers;
   1747   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   1748 
   1749   static uint32 ComputeSize() {
   1750     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   1751   }
   1752 
   1753   void SetHeader() {
   1754     header.SetCmd<ValueType>();
   1755   }
   1756 
   1757   void Init(GLsizei _n, uint32 _buffers_shm_id, uint32 _buffers_shm_offset) {
   1758     SetHeader();
   1759     n = _n;
   1760     buffers_shm_id = _buffers_shm_id;
   1761     buffers_shm_offset = _buffers_shm_offset;
   1762   }
   1763 
   1764   void* Set(
   1765       void* cmd, GLsizei _n, uint32 _buffers_shm_id,
   1766       uint32 _buffers_shm_offset) {
   1767     static_cast<ValueType*>(
   1768         cmd)->Init(_n, _buffers_shm_id, _buffers_shm_offset);
   1769     return NextCmdAddress<ValueType>(cmd);
   1770   }
   1771 
   1772   gpu::CommandHeader header;
   1773   int32 n;
   1774   uint32 buffers_shm_id;
   1775   uint32 buffers_shm_offset;
   1776 };
   1777 
   1778 COMPILE_ASSERT(sizeof(DeleteBuffers) == 16,
   1779                Sizeof_DeleteBuffers_is_not_16);
   1780 COMPILE_ASSERT(offsetof(DeleteBuffers, header) == 0,
   1781                OffsetOf_DeleteBuffers_header_not_0);
   1782 COMPILE_ASSERT(offsetof(DeleteBuffers, n) == 4,
   1783                OffsetOf_DeleteBuffers_n_not_4);
   1784 COMPILE_ASSERT(offsetof(DeleteBuffers, buffers_shm_id) == 8,
   1785                OffsetOf_DeleteBuffers_buffers_shm_id_not_8);
   1786 COMPILE_ASSERT(offsetof(DeleteBuffers, buffers_shm_offset) == 12,
   1787                OffsetOf_DeleteBuffers_buffers_shm_offset_not_12);
   1788 
   1789 struct DeleteBuffersImmediate {
   1790   typedef DeleteBuffersImmediate ValueType;
   1791   static const CommandId kCmdId = kDeleteBuffersImmediate;
   1792   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   1793 
   1794   static uint32 ComputeDataSize(GLsizei n) {
   1795     return static_cast<uint32>(sizeof(GLuint) * n);  // NOLINT
   1796   }
   1797 
   1798   static uint32 ComputeSize(GLsizei n) {
   1799     return static_cast<uint32>(
   1800         sizeof(ValueType) + ComputeDataSize(n));  // NOLINT
   1801   }
   1802 
   1803   void SetHeader(GLsizei n) {
   1804     header.SetCmdByTotalSize<ValueType>(ComputeSize(n));
   1805   }
   1806 
   1807   void Init(GLsizei _n, const GLuint* _buffers) {
   1808     SetHeader(_n);
   1809     n = _n;
   1810     memcpy(ImmediateDataAddress(this),
   1811            _buffers, ComputeDataSize(_n));
   1812   }
   1813 
   1814   void* Set(void* cmd, GLsizei _n, const GLuint* _buffers) {
   1815     static_cast<ValueType*>(cmd)->Init(_n, _buffers);
   1816     const uint32 size = ComputeSize(_n);
   1817     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   1818   }
   1819 
   1820   gpu::CommandHeader header;
   1821   int32 n;
   1822 };
   1823 
   1824 COMPILE_ASSERT(sizeof(DeleteBuffersImmediate) == 8,
   1825                Sizeof_DeleteBuffersImmediate_is_not_8);
   1826 COMPILE_ASSERT(offsetof(DeleteBuffersImmediate, header) == 0,
   1827                OffsetOf_DeleteBuffersImmediate_header_not_0);
   1828 COMPILE_ASSERT(offsetof(DeleteBuffersImmediate, n) == 4,
   1829                OffsetOf_DeleteBuffersImmediate_n_not_4);
   1830 
   1831 struct DeleteFramebuffers {
   1832   typedef DeleteFramebuffers ValueType;
   1833   static const CommandId kCmdId = kDeleteFramebuffers;
   1834   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   1835 
   1836   static uint32 ComputeSize() {
   1837     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   1838   }
   1839 
   1840   void SetHeader() {
   1841     header.SetCmd<ValueType>();
   1842   }
   1843 
   1844   void Init(
   1845       GLsizei _n, uint32 _framebuffers_shm_id,
   1846       uint32 _framebuffers_shm_offset) {
   1847     SetHeader();
   1848     n = _n;
   1849     framebuffers_shm_id = _framebuffers_shm_id;
   1850     framebuffers_shm_offset = _framebuffers_shm_offset;
   1851   }
   1852 
   1853   void* Set(
   1854       void* cmd, GLsizei _n, uint32 _framebuffers_shm_id,
   1855       uint32 _framebuffers_shm_offset) {
   1856     static_cast<ValueType*>(
   1857         cmd)->Init(_n, _framebuffers_shm_id, _framebuffers_shm_offset);
   1858     return NextCmdAddress<ValueType>(cmd);
   1859   }
   1860 
   1861   gpu::CommandHeader header;
   1862   int32 n;
   1863   uint32 framebuffers_shm_id;
   1864   uint32 framebuffers_shm_offset;
   1865 };
   1866 
   1867 COMPILE_ASSERT(sizeof(DeleteFramebuffers) == 16,
   1868                Sizeof_DeleteFramebuffers_is_not_16);
   1869 COMPILE_ASSERT(offsetof(DeleteFramebuffers, header) == 0,
   1870                OffsetOf_DeleteFramebuffers_header_not_0);
   1871 COMPILE_ASSERT(offsetof(DeleteFramebuffers, n) == 4,
   1872                OffsetOf_DeleteFramebuffers_n_not_4);
   1873 COMPILE_ASSERT(offsetof(DeleteFramebuffers, framebuffers_shm_id) == 8,
   1874                OffsetOf_DeleteFramebuffers_framebuffers_shm_id_not_8);
   1875 COMPILE_ASSERT(offsetof(DeleteFramebuffers, framebuffers_shm_offset) == 12,
   1876                OffsetOf_DeleteFramebuffers_framebuffers_shm_offset_not_12);
   1877 
   1878 struct DeleteFramebuffersImmediate {
   1879   typedef DeleteFramebuffersImmediate ValueType;
   1880   static const CommandId kCmdId = kDeleteFramebuffersImmediate;
   1881   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   1882 
   1883   static uint32 ComputeDataSize(GLsizei n) {
   1884     return static_cast<uint32>(sizeof(GLuint) * n);  // NOLINT
   1885   }
   1886 
   1887   static uint32 ComputeSize(GLsizei n) {
   1888     return static_cast<uint32>(
   1889         sizeof(ValueType) + ComputeDataSize(n));  // NOLINT
   1890   }
   1891 
   1892   void SetHeader(GLsizei n) {
   1893     header.SetCmdByTotalSize<ValueType>(ComputeSize(n));
   1894   }
   1895 
   1896   void Init(GLsizei _n, const GLuint* _framebuffers) {
   1897     SetHeader(_n);
   1898     n = _n;
   1899     memcpy(ImmediateDataAddress(this),
   1900            _framebuffers, ComputeDataSize(_n));
   1901   }
   1902 
   1903   void* Set(void* cmd, GLsizei _n, const GLuint* _framebuffers) {
   1904     static_cast<ValueType*>(cmd)->Init(_n, _framebuffers);
   1905     const uint32 size = ComputeSize(_n);
   1906     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   1907   }
   1908 
   1909   gpu::CommandHeader header;
   1910   int32 n;
   1911 };
   1912 
   1913 COMPILE_ASSERT(sizeof(DeleteFramebuffersImmediate) == 8,
   1914                Sizeof_DeleteFramebuffersImmediate_is_not_8);
   1915 COMPILE_ASSERT(offsetof(DeleteFramebuffersImmediate, header) == 0,
   1916                OffsetOf_DeleteFramebuffersImmediate_header_not_0);
   1917 COMPILE_ASSERT(offsetof(DeleteFramebuffersImmediate, n) == 4,
   1918                OffsetOf_DeleteFramebuffersImmediate_n_not_4);
   1919 
   1920 struct DeleteProgram {
   1921   typedef DeleteProgram ValueType;
   1922   static const CommandId kCmdId = kDeleteProgram;
   1923   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   1924 
   1925   static uint32 ComputeSize() {
   1926     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   1927   }
   1928 
   1929   void SetHeader() {
   1930     header.SetCmd<ValueType>();
   1931   }
   1932 
   1933   void Init(GLuint _program) {
   1934     SetHeader();
   1935     program = _program;
   1936   }
   1937 
   1938   void* Set(void* cmd, GLuint _program) {
   1939     static_cast<ValueType*>(cmd)->Init(_program);
   1940     return NextCmdAddress<ValueType>(cmd);
   1941   }
   1942 
   1943   gpu::CommandHeader header;
   1944   uint32 program;
   1945 };
   1946 
   1947 COMPILE_ASSERT(sizeof(DeleteProgram) == 8,
   1948                Sizeof_DeleteProgram_is_not_8);
   1949 COMPILE_ASSERT(offsetof(DeleteProgram, header) == 0,
   1950                OffsetOf_DeleteProgram_header_not_0);
   1951 COMPILE_ASSERT(offsetof(DeleteProgram, program) == 4,
   1952                OffsetOf_DeleteProgram_program_not_4);
   1953 
   1954 struct DeleteRenderbuffers {
   1955   typedef DeleteRenderbuffers ValueType;
   1956   static const CommandId kCmdId = kDeleteRenderbuffers;
   1957   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   1958 
   1959   static uint32 ComputeSize() {
   1960     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   1961   }
   1962 
   1963   void SetHeader() {
   1964     header.SetCmd<ValueType>();
   1965   }
   1966 
   1967   void Init(
   1968       GLsizei _n, uint32 _renderbuffers_shm_id,
   1969       uint32 _renderbuffers_shm_offset) {
   1970     SetHeader();
   1971     n = _n;
   1972     renderbuffers_shm_id = _renderbuffers_shm_id;
   1973     renderbuffers_shm_offset = _renderbuffers_shm_offset;
   1974   }
   1975 
   1976   void* Set(
   1977       void* cmd, GLsizei _n, uint32 _renderbuffers_shm_id,
   1978       uint32 _renderbuffers_shm_offset) {
   1979     static_cast<ValueType*>(
   1980         cmd)->Init(_n, _renderbuffers_shm_id, _renderbuffers_shm_offset);
   1981     return NextCmdAddress<ValueType>(cmd);
   1982   }
   1983 
   1984   gpu::CommandHeader header;
   1985   int32 n;
   1986   uint32 renderbuffers_shm_id;
   1987   uint32 renderbuffers_shm_offset;
   1988 };
   1989 
   1990 COMPILE_ASSERT(sizeof(DeleteRenderbuffers) == 16,
   1991                Sizeof_DeleteRenderbuffers_is_not_16);
   1992 COMPILE_ASSERT(offsetof(DeleteRenderbuffers, header) == 0,
   1993                OffsetOf_DeleteRenderbuffers_header_not_0);
   1994 COMPILE_ASSERT(offsetof(DeleteRenderbuffers, n) == 4,
   1995                OffsetOf_DeleteRenderbuffers_n_not_4);
   1996 COMPILE_ASSERT(offsetof(DeleteRenderbuffers, renderbuffers_shm_id) == 8,
   1997                OffsetOf_DeleteRenderbuffers_renderbuffers_shm_id_not_8);
   1998 COMPILE_ASSERT(offsetof(DeleteRenderbuffers, renderbuffers_shm_offset) == 12,
   1999                OffsetOf_DeleteRenderbuffers_renderbuffers_shm_offset_not_12);
   2000 
   2001 struct DeleteRenderbuffersImmediate {
   2002   typedef DeleteRenderbuffersImmediate ValueType;
   2003   static const CommandId kCmdId = kDeleteRenderbuffersImmediate;
   2004   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   2005 
   2006   static uint32 ComputeDataSize(GLsizei n) {
   2007     return static_cast<uint32>(sizeof(GLuint) * n);  // NOLINT
   2008   }
   2009 
   2010   static uint32 ComputeSize(GLsizei n) {
   2011     return static_cast<uint32>(
   2012         sizeof(ValueType) + ComputeDataSize(n));  // NOLINT
   2013   }
   2014 
   2015   void SetHeader(GLsizei n) {
   2016     header.SetCmdByTotalSize<ValueType>(ComputeSize(n));
   2017   }
   2018 
   2019   void Init(GLsizei _n, const GLuint* _renderbuffers) {
   2020     SetHeader(_n);
   2021     n = _n;
   2022     memcpy(ImmediateDataAddress(this),
   2023            _renderbuffers, ComputeDataSize(_n));
   2024   }
   2025 
   2026   void* Set(void* cmd, GLsizei _n, const GLuint* _renderbuffers) {
   2027     static_cast<ValueType*>(cmd)->Init(_n, _renderbuffers);
   2028     const uint32 size = ComputeSize(_n);
   2029     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   2030   }
   2031 
   2032   gpu::CommandHeader header;
   2033   int32 n;
   2034 };
   2035 
   2036 COMPILE_ASSERT(sizeof(DeleteRenderbuffersImmediate) == 8,
   2037                Sizeof_DeleteRenderbuffersImmediate_is_not_8);
   2038 COMPILE_ASSERT(offsetof(DeleteRenderbuffersImmediate, header) == 0,
   2039                OffsetOf_DeleteRenderbuffersImmediate_header_not_0);
   2040 COMPILE_ASSERT(offsetof(DeleteRenderbuffersImmediate, n) == 4,
   2041                OffsetOf_DeleteRenderbuffersImmediate_n_not_4);
   2042 
   2043 struct DeleteShader {
   2044   typedef DeleteShader ValueType;
   2045   static const CommandId kCmdId = kDeleteShader;
   2046   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2047 
   2048   static uint32 ComputeSize() {
   2049     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2050   }
   2051 
   2052   void SetHeader() {
   2053     header.SetCmd<ValueType>();
   2054   }
   2055 
   2056   void Init(GLuint _shader) {
   2057     SetHeader();
   2058     shader = _shader;
   2059   }
   2060 
   2061   void* Set(void* cmd, GLuint _shader) {
   2062     static_cast<ValueType*>(cmd)->Init(_shader);
   2063     return NextCmdAddress<ValueType>(cmd);
   2064   }
   2065 
   2066   gpu::CommandHeader header;
   2067   uint32 shader;
   2068 };
   2069 
   2070 COMPILE_ASSERT(sizeof(DeleteShader) == 8,
   2071                Sizeof_DeleteShader_is_not_8);
   2072 COMPILE_ASSERT(offsetof(DeleteShader, header) == 0,
   2073                OffsetOf_DeleteShader_header_not_0);
   2074 COMPILE_ASSERT(offsetof(DeleteShader, shader) == 4,
   2075                OffsetOf_DeleteShader_shader_not_4);
   2076 
   2077 struct DeleteTextures {
   2078   typedef DeleteTextures ValueType;
   2079   static const CommandId kCmdId = kDeleteTextures;
   2080   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2081 
   2082   static uint32 ComputeSize() {
   2083     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2084   }
   2085 
   2086   void SetHeader() {
   2087     header.SetCmd<ValueType>();
   2088   }
   2089 
   2090   void Init(GLsizei _n, uint32 _textures_shm_id, uint32 _textures_shm_offset) {
   2091     SetHeader();
   2092     n = _n;
   2093     textures_shm_id = _textures_shm_id;
   2094     textures_shm_offset = _textures_shm_offset;
   2095   }
   2096 
   2097   void* Set(
   2098       void* cmd, GLsizei _n, uint32 _textures_shm_id,
   2099       uint32 _textures_shm_offset) {
   2100     static_cast<ValueType*>(
   2101         cmd)->Init(_n, _textures_shm_id, _textures_shm_offset);
   2102     return NextCmdAddress<ValueType>(cmd);
   2103   }
   2104 
   2105   gpu::CommandHeader header;
   2106   int32 n;
   2107   uint32 textures_shm_id;
   2108   uint32 textures_shm_offset;
   2109 };
   2110 
   2111 COMPILE_ASSERT(sizeof(DeleteTextures) == 16,
   2112                Sizeof_DeleteTextures_is_not_16);
   2113 COMPILE_ASSERT(offsetof(DeleteTextures, header) == 0,
   2114                OffsetOf_DeleteTextures_header_not_0);
   2115 COMPILE_ASSERT(offsetof(DeleteTextures, n) == 4,
   2116                OffsetOf_DeleteTextures_n_not_4);
   2117 COMPILE_ASSERT(offsetof(DeleteTextures, textures_shm_id) == 8,
   2118                OffsetOf_DeleteTextures_textures_shm_id_not_8);
   2119 COMPILE_ASSERT(offsetof(DeleteTextures, textures_shm_offset) == 12,
   2120                OffsetOf_DeleteTextures_textures_shm_offset_not_12);
   2121 
   2122 struct DeleteTexturesImmediate {
   2123   typedef DeleteTexturesImmediate ValueType;
   2124   static const CommandId kCmdId = kDeleteTexturesImmediate;
   2125   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   2126 
   2127   static uint32 ComputeDataSize(GLsizei n) {
   2128     return static_cast<uint32>(sizeof(GLuint) * n);  // NOLINT
   2129   }
   2130 
   2131   static uint32 ComputeSize(GLsizei n) {
   2132     return static_cast<uint32>(
   2133         sizeof(ValueType) + ComputeDataSize(n));  // NOLINT
   2134   }
   2135 
   2136   void SetHeader(GLsizei n) {
   2137     header.SetCmdByTotalSize<ValueType>(ComputeSize(n));
   2138   }
   2139 
   2140   void Init(GLsizei _n, const GLuint* _textures) {
   2141     SetHeader(_n);
   2142     n = _n;
   2143     memcpy(ImmediateDataAddress(this),
   2144            _textures, ComputeDataSize(_n));
   2145   }
   2146 
   2147   void* Set(void* cmd, GLsizei _n, const GLuint* _textures) {
   2148     static_cast<ValueType*>(cmd)->Init(_n, _textures);
   2149     const uint32 size = ComputeSize(_n);
   2150     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   2151   }
   2152 
   2153   gpu::CommandHeader header;
   2154   int32 n;
   2155 };
   2156 
   2157 COMPILE_ASSERT(sizeof(DeleteTexturesImmediate) == 8,
   2158                Sizeof_DeleteTexturesImmediate_is_not_8);
   2159 COMPILE_ASSERT(offsetof(DeleteTexturesImmediate, header) == 0,
   2160                OffsetOf_DeleteTexturesImmediate_header_not_0);
   2161 COMPILE_ASSERT(offsetof(DeleteTexturesImmediate, n) == 4,
   2162                OffsetOf_DeleteTexturesImmediate_n_not_4);
   2163 
   2164 struct DepthFunc {
   2165   typedef DepthFunc ValueType;
   2166   static const CommandId kCmdId = kDepthFunc;
   2167   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2168 
   2169   static uint32 ComputeSize() {
   2170     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2171   }
   2172 
   2173   void SetHeader() {
   2174     header.SetCmd<ValueType>();
   2175   }
   2176 
   2177   void Init(GLenum _func) {
   2178     SetHeader();
   2179     func = _func;
   2180   }
   2181 
   2182   void* Set(void* cmd, GLenum _func) {
   2183     static_cast<ValueType*>(cmd)->Init(_func);
   2184     return NextCmdAddress<ValueType>(cmd);
   2185   }
   2186 
   2187   gpu::CommandHeader header;
   2188   uint32 func;
   2189 };
   2190 
   2191 COMPILE_ASSERT(sizeof(DepthFunc) == 8,
   2192                Sizeof_DepthFunc_is_not_8);
   2193 COMPILE_ASSERT(offsetof(DepthFunc, header) == 0,
   2194                OffsetOf_DepthFunc_header_not_0);
   2195 COMPILE_ASSERT(offsetof(DepthFunc, func) == 4,
   2196                OffsetOf_DepthFunc_func_not_4);
   2197 
   2198 struct DepthMask {
   2199   typedef DepthMask ValueType;
   2200   static const CommandId kCmdId = kDepthMask;
   2201   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2202 
   2203   static uint32 ComputeSize() {
   2204     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2205   }
   2206 
   2207   void SetHeader() {
   2208     header.SetCmd<ValueType>();
   2209   }
   2210 
   2211   void Init(GLboolean _flag) {
   2212     SetHeader();
   2213     flag = _flag;
   2214   }
   2215 
   2216   void* Set(void* cmd, GLboolean _flag) {
   2217     static_cast<ValueType*>(cmd)->Init(_flag);
   2218     return NextCmdAddress<ValueType>(cmd);
   2219   }
   2220 
   2221   gpu::CommandHeader header;
   2222   uint32 flag;
   2223 };
   2224 
   2225 COMPILE_ASSERT(sizeof(DepthMask) == 8,
   2226                Sizeof_DepthMask_is_not_8);
   2227 COMPILE_ASSERT(offsetof(DepthMask, header) == 0,
   2228                OffsetOf_DepthMask_header_not_0);
   2229 COMPILE_ASSERT(offsetof(DepthMask, flag) == 4,
   2230                OffsetOf_DepthMask_flag_not_4);
   2231 
   2232 struct DepthRangef {
   2233   typedef DepthRangef ValueType;
   2234   static const CommandId kCmdId = kDepthRangef;
   2235   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2236 
   2237   static uint32 ComputeSize() {
   2238     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2239   }
   2240 
   2241   void SetHeader() {
   2242     header.SetCmd<ValueType>();
   2243   }
   2244 
   2245   void Init(GLclampf _zNear, GLclampf _zFar) {
   2246     SetHeader();
   2247     zNear = _zNear;
   2248     zFar = _zFar;
   2249   }
   2250 
   2251   void* Set(void* cmd, GLclampf _zNear, GLclampf _zFar) {
   2252     static_cast<ValueType*>(cmd)->Init(_zNear, _zFar);
   2253     return NextCmdAddress<ValueType>(cmd);
   2254   }
   2255 
   2256   gpu::CommandHeader header;
   2257   float zNear;
   2258   float zFar;
   2259 };
   2260 
   2261 COMPILE_ASSERT(sizeof(DepthRangef) == 12,
   2262                Sizeof_DepthRangef_is_not_12);
   2263 COMPILE_ASSERT(offsetof(DepthRangef, header) == 0,
   2264                OffsetOf_DepthRangef_header_not_0);
   2265 COMPILE_ASSERT(offsetof(DepthRangef, zNear) == 4,
   2266                OffsetOf_DepthRangef_zNear_not_4);
   2267 COMPILE_ASSERT(offsetof(DepthRangef, zFar) == 8,
   2268                OffsetOf_DepthRangef_zFar_not_8);
   2269 
   2270 struct DetachShader {
   2271   typedef DetachShader ValueType;
   2272   static const CommandId kCmdId = kDetachShader;
   2273   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2274 
   2275   static uint32 ComputeSize() {
   2276     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2277   }
   2278 
   2279   void SetHeader() {
   2280     header.SetCmd<ValueType>();
   2281   }
   2282 
   2283   void Init(GLuint _program, GLuint _shader) {
   2284     SetHeader();
   2285     program = _program;
   2286     shader = _shader;
   2287   }
   2288 
   2289   void* Set(void* cmd, GLuint _program, GLuint _shader) {
   2290     static_cast<ValueType*>(cmd)->Init(_program, _shader);
   2291     return NextCmdAddress<ValueType>(cmd);
   2292   }
   2293 
   2294   gpu::CommandHeader header;
   2295   uint32 program;
   2296   uint32 shader;
   2297 };
   2298 
   2299 COMPILE_ASSERT(sizeof(DetachShader) == 12,
   2300                Sizeof_DetachShader_is_not_12);
   2301 COMPILE_ASSERT(offsetof(DetachShader, header) == 0,
   2302                OffsetOf_DetachShader_header_not_0);
   2303 COMPILE_ASSERT(offsetof(DetachShader, program) == 4,
   2304                OffsetOf_DetachShader_program_not_4);
   2305 COMPILE_ASSERT(offsetof(DetachShader, shader) == 8,
   2306                OffsetOf_DetachShader_shader_not_8);
   2307 
   2308 struct Disable {
   2309   typedef Disable ValueType;
   2310   static const CommandId kCmdId = kDisable;
   2311   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2312 
   2313   static uint32 ComputeSize() {
   2314     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2315   }
   2316 
   2317   void SetHeader() {
   2318     header.SetCmd<ValueType>();
   2319   }
   2320 
   2321   void Init(GLenum _cap) {
   2322     SetHeader();
   2323     cap = _cap;
   2324   }
   2325 
   2326   void* Set(void* cmd, GLenum _cap) {
   2327     static_cast<ValueType*>(cmd)->Init(_cap);
   2328     return NextCmdAddress<ValueType>(cmd);
   2329   }
   2330 
   2331   gpu::CommandHeader header;
   2332   uint32 cap;
   2333 };
   2334 
   2335 COMPILE_ASSERT(sizeof(Disable) == 8,
   2336                Sizeof_Disable_is_not_8);
   2337 COMPILE_ASSERT(offsetof(Disable, header) == 0,
   2338                OffsetOf_Disable_header_not_0);
   2339 COMPILE_ASSERT(offsetof(Disable, cap) == 4,
   2340                OffsetOf_Disable_cap_not_4);
   2341 
   2342 struct DisableVertexAttribArray {
   2343   typedef DisableVertexAttribArray ValueType;
   2344   static const CommandId kCmdId = kDisableVertexAttribArray;
   2345   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2346 
   2347   static uint32 ComputeSize() {
   2348     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2349   }
   2350 
   2351   void SetHeader() {
   2352     header.SetCmd<ValueType>();
   2353   }
   2354 
   2355   void Init(GLuint _index) {
   2356     SetHeader();
   2357     index = _index;
   2358   }
   2359 
   2360   void* Set(void* cmd, GLuint _index) {
   2361     static_cast<ValueType*>(cmd)->Init(_index);
   2362     return NextCmdAddress<ValueType>(cmd);
   2363   }
   2364 
   2365   gpu::CommandHeader header;
   2366   uint32 index;
   2367 };
   2368 
   2369 COMPILE_ASSERT(sizeof(DisableVertexAttribArray) == 8,
   2370                Sizeof_DisableVertexAttribArray_is_not_8);
   2371 COMPILE_ASSERT(offsetof(DisableVertexAttribArray, header) == 0,
   2372                OffsetOf_DisableVertexAttribArray_header_not_0);
   2373 COMPILE_ASSERT(offsetof(DisableVertexAttribArray, index) == 4,
   2374                OffsetOf_DisableVertexAttribArray_index_not_4);
   2375 
   2376 struct DrawArrays {
   2377   typedef DrawArrays ValueType;
   2378   static const CommandId kCmdId = kDrawArrays;
   2379   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2380 
   2381   static uint32 ComputeSize() {
   2382     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2383   }
   2384 
   2385   void SetHeader() {
   2386     header.SetCmd<ValueType>();
   2387   }
   2388 
   2389   void Init(GLenum _mode, GLint _first, GLsizei _count) {
   2390     SetHeader();
   2391     mode = _mode;
   2392     first = _first;
   2393     count = _count;
   2394   }
   2395 
   2396   void* Set(void* cmd, GLenum _mode, GLint _first, GLsizei _count) {
   2397     static_cast<ValueType*>(cmd)->Init(_mode, _first, _count);
   2398     return NextCmdAddress<ValueType>(cmd);
   2399   }
   2400 
   2401   gpu::CommandHeader header;
   2402   uint32 mode;
   2403   int32 first;
   2404   int32 count;
   2405 };
   2406 
   2407 COMPILE_ASSERT(sizeof(DrawArrays) == 16,
   2408                Sizeof_DrawArrays_is_not_16);
   2409 COMPILE_ASSERT(offsetof(DrawArrays, header) == 0,
   2410                OffsetOf_DrawArrays_header_not_0);
   2411 COMPILE_ASSERT(offsetof(DrawArrays, mode) == 4,
   2412                OffsetOf_DrawArrays_mode_not_4);
   2413 COMPILE_ASSERT(offsetof(DrawArrays, first) == 8,
   2414                OffsetOf_DrawArrays_first_not_8);
   2415 COMPILE_ASSERT(offsetof(DrawArrays, count) == 12,
   2416                OffsetOf_DrawArrays_count_not_12);
   2417 
   2418 struct DrawElements {
   2419   typedef DrawElements ValueType;
   2420   static const CommandId kCmdId = kDrawElements;
   2421   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2422 
   2423   static uint32 ComputeSize() {
   2424     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2425   }
   2426 
   2427   void SetHeader() {
   2428     header.SetCmd<ValueType>();
   2429   }
   2430 
   2431   void Init(GLenum _mode, GLsizei _count, GLenum _type, GLuint _index_offset) {
   2432     SetHeader();
   2433     mode = _mode;
   2434     count = _count;
   2435     type = _type;
   2436     index_offset = _index_offset;
   2437   }
   2438 
   2439   void* Set(
   2440       void* cmd, GLenum _mode, GLsizei _count, GLenum _type,
   2441       GLuint _index_offset) {
   2442     static_cast<ValueType*>(cmd)->Init(_mode, _count, _type, _index_offset);
   2443     return NextCmdAddress<ValueType>(cmd);
   2444   }
   2445 
   2446   gpu::CommandHeader header;
   2447   uint32 mode;
   2448   int32 count;
   2449   uint32 type;
   2450   uint32 index_offset;
   2451 };
   2452 
   2453 COMPILE_ASSERT(sizeof(DrawElements) == 20,
   2454                Sizeof_DrawElements_is_not_20);
   2455 COMPILE_ASSERT(offsetof(DrawElements, header) == 0,
   2456                OffsetOf_DrawElements_header_not_0);
   2457 COMPILE_ASSERT(offsetof(DrawElements, mode) == 4,
   2458                OffsetOf_DrawElements_mode_not_4);
   2459 COMPILE_ASSERT(offsetof(DrawElements, count) == 8,
   2460                OffsetOf_DrawElements_count_not_8);
   2461 COMPILE_ASSERT(offsetof(DrawElements, type) == 12,
   2462                OffsetOf_DrawElements_type_not_12);
   2463 COMPILE_ASSERT(offsetof(DrawElements, index_offset) == 16,
   2464                OffsetOf_DrawElements_index_offset_not_16);
   2465 
   2466 struct Enable {
   2467   typedef Enable ValueType;
   2468   static const CommandId kCmdId = kEnable;
   2469   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2470 
   2471   static uint32 ComputeSize() {
   2472     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2473   }
   2474 
   2475   void SetHeader() {
   2476     header.SetCmd<ValueType>();
   2477   }
   2478 
   2479   void Init(GLenum _cap) {
   2480     SetHeader();
   2481     cap = _cap;
   2482   }
   2483 
   2484   void* Set(void* cmd, GLenum _cap) {
   2485     static_cast<ValueType*>(cmd)->Init(_cap);
   2486     return NextCmdAddress<ValueType>(cmd);
   2487   }
   2488 
   2489   gpu::CommandHeader header;
   2490   uint32 cap;
   2491 };
   2492 
   2493 COMPILE_ASSERT(sizeof(Enable) == 8,
   2494                Sizeof_Enable_is_not_8);
   2495 COMPILE_ASSERT(offsetof(Enable, header) == 0,
   2496                OffsetOf_Enable_header_not_0);
   2497 COMPILE_ASSERT(offsetof(Enable, cap) == 4,
   2498                OffsetOf_Enable_cap_not_4);
   2499 
   2500 struct EnableVertexAttribArray {
   2501   typedef EnableVertexAttribArray ValueType;
   2502   static const CommandId kCmdId = kEnableVertexAttribArray;
   2503   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2504 
   2505   static uint32 ComputeSize() {
   2506     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2507   }
   2508 
   2509   void SetHeader() {
   2510     header.SetCmd<ValueType>();
   2511   }
   2512 
   2513   void Init(GLuint _index) {
   2514     SetHeader();
   2515     index = _index;
   2516   }
   2517 
   2518   void* Set(void* cmd, GLuint _index) {
   2519     static_cast<ValueType*>(cmd)->Init(_index);
   2520     return NextCmdAddress<ValueType>(cmd);
   2521   }
   2522 
   2523   gpu::CommandHeader header;
   2524   uint32 index;
   2525 };
   2526 
   2527 COMPILE_ASSERT(sizeof(EnableVertexAttribArray) == 8,
   2528                Sizeof_EnableVertexAttribArray_is_not_8);
   2529 COMPILE_ASSERT(offsetof(EnableVertexAttribArray, header) == 0,
   2530                OffsetOf_EnableVertexAttribArray_header_not_0);
   2531 COMPILE_ASSERT(offsetof(EnableVertexAttribArray, index) == 4,
   2532                OffsetOf_EnableVertexAttribArray_index_not_4);
   2533 
   2534 struct Finish {
   2535   typedef Finish ValueType;
   2536   static const CommandId kCmdId = kFinish;
   2537   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2538 
   2539   static uint32 ComputeSize() {
   2540     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2541   }
   2542 
   2543   void SetHeader() {
   2544     header.SetCmd<ValueType>();
   2545   }
   2546 
   2547   void Init() {
   2548     SetHeader();
   2549   }
   2550 
   2551   void* Set(void* cmd) {
   2552     static_cast<ValueType*>(cmd)->Init();
   2553     return NextCmdAddress<ValueType>(cmd);
   2554   }
   2555 
   2556   gpu::CommandHeader header;
   2557 };
   2558 
   2559 COMPILE_ASSERT(sizeof(Finish) == 4,
   2560                Sizeof_Finish_is_not_4);
   2561 COMPILE_ASSERT(offsetof(Finish, header) == 0,
   2562                OffsetOf_Finish_header_not_0);
   2563 
   2564 struct Flush {
   2565   typedef Flush ValueType;
   2566   static const CommandId kCmdId = kFlush;
   2567   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2568 
   2569   static uint32 ComputeSize() {
   2570     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2571   }
   2572 
   2573   void SetHeader() {
   2574     header.SetCmd<ValueType>();
   2575   }
   2576 
   2577   void Init() {
   2578     SetHeader();
   2579   }
   2580 
   2581   void* Set(void* cmd) {
   2582     static_cast<ValueType*>(cmd)->Init();
   2583     return NextCmdAddress<ValueType>(cmd);
   2584   }
   2585 
   2586   gpu::CommandHeader header;
   2587 };
   2588 
   2589 COMPILE_ASSERT(sizeof(Flush) == 4,
   2590                Sizeof_Flush_is_not_4);
   2591 COMPILE_ASSERT(offsetof(Flush, header) == 0,
   2592                OffsetOf_Flush_header_not_0);
   2593 
   2594 struct FramebufferRenderbuffer {
   2595   typedef FramebufferRenderbuffer ValueType;
   2596   static const CommandId kCmdId = kFramebufferRenderbuffer;
   2597   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2598 
   2599   static uint32 ComputeSize() {
   2600     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2601   }
   2602 
   2603   void SetHeader() {
   2604     header.SetCmd<ValueType>();
   2605   }
   2606 
   2607   void Init(
   2608       GLenum _target, GLenum _attachment, GLenum _renderbuffertarget,
   2609       GLuint _renderbuffer) {
   2610     SetHeader();
   2611     target = _target;
   2612     attachment = _attachment;
   2613     renderbuffertarget = _renderbuffertarget;
   2614     renderbuffer = _renderbuffer;
   2615   }
   2616 
   2617   void* Set(
   2618       void* cmd, GLenum _target, GLenum _attachment, GLenum _renderbuffertarget,
   2619       GLuint _renderbuffer) {
   2620     static_cast<ValueType*>(
   2621         cmd)->Init(_target, _attachment, _renderbuffertarget, _renderbuffer);
   2622     return NextCmdAddress<ValueType>(cmd);
   2623   }
   2624 
   2625   gpu::CommandHeader header;
   2626   uint32 target;
   2627   uint32 attachment;
   2628   uint32 renderbuffertarget;
   2629   uint32 renderbuffer;
   2630 };
   2631 
   2632 COMPILE_ASSERT(sizeof(FramebufferRenderbuffer) == 20,
   2633                Sizeof_FramebufferRenderbuffer_is_not_20);
   2634 COMPILE_ASSERT(offsetof(FramebufferRenderbuffer, header) == 0,
   2635                OffsetOf_FramebufferRenderbuffer_header_not_0);
   2636 COMPILE_ASSERT(offsetof(FramebufferRenderbuffer, target) == 4,
   2637                OffsetOf_FramebufferRenderbuffer_target_not_4);
   2638 COMPILE_ASSERT(offsetof(FramebufferRenderbuffer, attachment) == 8,
   2639                OffsetOf_FramebufferRenderbuffer_attachment_not_8);
   2640 COMPILE_ASSERT(offsetof(FramebufferRenderbuffer, renderbuffertarget) == 12,
   2641                OffsetOf_FramebufferRenderbuffer_renderbuffertarget_not_12);
   2642 COMPILE_ASSERT(offsetof(FramebufferRenderbuffer, renderbuffer) == 16,
   2643                OffsetOf_FramebufferRenderbuffer_renderbuffer_not_16);
   2644 
   2645 struct FramebufferTexture2D {
   2646   typedef FramebufferTexture2D ValueType;
   2647   static const CommandId kCmdId = kFramebufferTexture2D;
   2648   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2649 
   2650   static uint32 ComputeSize() {
   2651     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2652   }
   2653 
   2654   void SetHeader() {
   2655     header.SetCmd<ValueType>();
   2656   }
   2657 
   2658   void Init(
   2659       GLenum _target, GLenum _attachment, GLenum _textarget, GLuint _texture,
   2660       GLint _level) {
   2661     SetHeader();
   2662     target = _target;
   2663     attachment = _attachment;
   2664     textarget = _textarget;
   2665     texture = _texture;
   2666     level = _level;
   2667   }
   2668 
   2669   void* Set(
   2670       void* cmd, GLenum _target, GLenum _attachment, GLenum _textarget,
   2671       GLuint _texture, GLint _level) {
   2672     static_cast<ValueType*>(
   2673         cmd)->Init(_target, _attachment, _textarget, _texture, _level);
   2674     return NextCmdAddress<ValueType>(cmd);
   2675   }
   2676 
   2677   gpu::CommandHeader header;
   2678   uint32 target;
   2679   uint32 attachment;
   2680   uint32 textarget;
   2681   uint32 texture;
   2682   int32 level;
   2683 };
   2684 
   2685 COMPILE_ASSERT(sizeof(FramebufferTexture2D) == 24,
   2686                Sizeof_FramebufferTexture2D_is_not_24);
   2687 COMPILE_ASSERT(offsetof(FramebufferTexture2D, header) == 0,
   2688                OffsetOf_FramebufferTexture2D_header_not_0);
   2689 COMPILE_ASSERT(offsetof(FramebufferTexture2D, target) == 4,
   2690                OffsetOf_FramebufferTexture2D_target_not_4);
   2691 COMPILE_ASSERT(offsetof(FramebufferTexture2D, attachment) == 8,
   2692                OffsetOf_FramebufferTexture2D_attachment_not_8);
   2693 COMPILE_ASSERT(offsetof(FramebufferTexture2D, textarget) == 12,
   2694                OffsetOf_FramebufferTexture2D_textarget_not_12);
   2695 COMPILE_ASSERT(offsetof(FramebufferTexture2D, texture) == 16,
   2696                OffsetOf_FramebufferTexture2D_texture_not_16);
   2697 COMPILE_ASSERT(offsetof(FramebufferTexture2D, level) == 20,
   2698                OffsetOf_FramebufferTexture2D_level_not_20);
   2699 
   2700 struct FrontFace {
   2701   typedef FrontFace ValueType;
   2702   static const CommandId kCmdId = kFrontFace;
   2703   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2704 
   2705   static uint32 ComputeSize() {
   2706     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2707   }
   2708 
   2709   void SetHeader() {
   2710     header.SetCmd<ValueType>();
   2711   }
   2712 
   2713   void Init(GLenum _mode) {
   2714     SetHeader();
   2715     mode = _mode;
   2716   }
   2717 
   2718   void* Set(void* cmd, GLenum _mode) {
   2719     static_cast<ValueType*>(cmd)->Init(_mode);
   2720     return NextCmdAddress<ValueType>(cmd);
   2721   }
   2722 
   2723   gpu::CommandHeader header;
   2724   uint32 mode;
   2725 };
   2726 
   2727 COMPILE_ASSERT(sizeof(FrontFace) == 8,
   2728                Sizeof_FrontFace_is_not_8);
   2729 COMPILE_ASSERT(offsetof(FrontFace, header) == 0,
   2730                OffsetOf_FrontFace_header_not_0);
   2731 COMPILE_ASSERT(offsetof(FrontFace, mode) == 4,
   2732                OffsetOf_FrontFace_mode_not_4);
   2733 
   2734 struct GenBuffers {
   2735   typedef GenBuffers ValueType;
   2736   static const CommandId kCmdId = kGenBuffers;
   2737   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2738 
   2739   static uint32 ComputeSize() {
   2740     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2741   }
   2742 
   2743   void SetHeader() {
   2744     header.SetCmd<ValueType>();
   2745   }
   2746 
   2747   void Init(GLsizei _n, uint32 _buffers_shm_id, uint32 _buffers_shm_offset) {
   2748     SetHeader();
   2749     n = _n;
   2750     buffers_shm_id = _buffers_shm_id;
   2751     buffers_shm_offset = _buffers_shm_offset;
   2752   }
   2753 
   2754   void* Set(
   2755       void* cmd, GLsizei _n, uint32 _buffers_shm_id,
   2756       uint32 _buffers_shm_offset) {
   2757     static_cast<ValueType*>(
   2758         cmd)->Init(_n, _buffers_shm_id, _buffers_shm_offset);
   2759     return NextCmdAddress<ValueType>(cmd);
   2760   }
   2761 
   2762   gpu::CommandHeader header;
   2763   int32 n;
   2764   uint32 buffers_shm_id;
   2765   uint32 buffers_shm_offset;
   2766 };
   2767 
   2768 COMPILE_ASSERT(sizeof(GenBuffers) == 16,
   2769                Sizeof_GenBuffers_is_not_16);
   2770 COMPILE_ASSERT(offsetof(GenBuffers, header) == 0,
   2771                OffsetOf_GenBuffers_header_not_0);
   2772 COMPILE_ASSERT(offsetof(GenBuffers, n) == 4,
   2773                OffsetOf_GenBuffers_n_not_4);
   2774 COMPILE_ASSERT(offsetof(GenBuffers, buffers_shm_id) == 8,
   2775                OffsetOf_GenBuffers_buffers_shm_id_not_8);
   2776 COMPILE_ASSERT(offsetof(GenBuffers, buffers_shm_offset) == 12,
   2777                OffsetOf_GenBuffers_buffers_shm_offset_not_12);
   2778 
   2779 struct GenBuffersImmediate {
   2780   typedef GenBuffersImmediate ValueType;
   2781   static const CommandId kCmdId = kGenBuffersImmediate;
   2782   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   2783 
   2784   static uint32 ComputeDataSize(GLsizei n) {
   2785     return static_cast<uint32>(sizeof(GLuint) * n);  // NOLINT
   2786   }
   2787 
   2788   static uint32 ComputeSize(GLsizei n) {
   2789     return static_cast<uint32>(
   2790         sizeof(ValueType) + ComputeDataSize(n));  // NOLINT
   2791   }
   2792 
   2793   void SetHeader(GLsizei n) {
   2794     header.SetCmdByTotalSize<ValueType>(ComputeSize(n));
   2795   }
   2796 
   2797   void Init(GLsizei _n, GLuint* _buffers) {
   2798     SetHeader(_n);
   2799     n = _n;
   2800     memcpy(ImmediateDataAddress(this),
   2801            _buffers, ComputeDataSize(_n));
   2802   }
   2803 
   2804   void* Set(void* cmd, GLsizei _n, GLuint* _buffers) {
   2805     static_cast<ValueType*>(cmd)->Init(_n, _buffers);
   2806     const uint32 size = ComputeSize(_n);
   2807     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   2808   }
   2809 
   2810   gpu::CommandHeader header;
   2811   int32 n;
   2812 };
   2813 
   2814 COMPILE_ASSERT(sizeof(GenBuffersImmediate) == 8,
   2815                Sizeof_GenBuffersImmediate_is_not_8);
   2816 COMPILE_ASSERT(offsetof(GenBuffersImmediate, header) == 0,
   2817                OffsetOf_GenBuffersImmediate_header_not_0);
   2818 COMPILE_ASSERT(offsetof(GenBuffersImmediate, n) == 4,
   2819                OffsetOf_GenBuffersImmediate_n_not_4);
   2820 
   2821 struct GenerateMipmap {
   2822   typedef GenerateMipmap ValueType;
   2823   static const CommandId kCmdId = kGenerateMipmap;
   2824   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2825 
   2826   static uint32 ComputeSize() {
   2827     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2828   }
   2829 
   2830   void SetHeader() {
   2831     header.SetCmd<ValueType>();
   2832   }
   2833 
   2834   void Init(GLenum _target) {
   2835     SetHeader();
   2836     target = _target;
   2837   }
   2838 
   2839   void* Set(void* cmd, GLenum _target) {
   2840     static_cast<ValueType*>(cmd)->Init(_target);
   2841     return NextCmdAddress<ValueType>(cmd);
   2842   }
   2843 
   2844   gpu::CommandHeader header;
   2845   uint32 target;
   2846 };
   2847 
   2848 COMPILE_ASSERT(sizeof(GenerateMipmap) == 8,
   2849                Sizeof_GenerateMipmap_is_not_8);
   2850 COMPILE_ASSERT(offsetof(GenerateMipmap, header) == 0,
   2851                OffsetOf_GenerateMipmap_header_not_0);
   2852 COMPILE_ASSERT(offsetof(GenerateMipmap, target) == 4,
   2853                OffsetOf_GenerateMipmap_target_not_4);
   2854 
   2855 struct GenFramebuffers {
   2856   typedef GenFramebuffers ValueType;
   2857   static const CommandId kCmdId = kGenFramebuffers;
   2858   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2859 
   2860   static uint32 ComputeSize() {
   2861     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2862   }
   2863 
   2864   void SetHeader() {
   2865     header.SetCmd<ValueType>();
   2866   }
   2867 
   2868   void Init(
   2869       GLsizei _n, uint32 _framebuffers_shm_id,
   2870       uint32 _framebuffers_shm_offset) {
   2871     SetHeader();
   2872     n = _n;
   2873     framebuffers_shm_id = _framebuffers_shm_id;
   2874     framebuffers_shm_offset = _framebuffers_shm_offset;
   2875   }
   2876 
   2877   void* Set(
   2878       void* cmd, GLsizei _n, uint32 _framebuffers_shm_id,
   2879       uint32 _framebuffers_shm_offset) {
   2880     static_cast<ValueType*>(
   2881         cmd)->Init(_n, _framebuffers_shm_id, _framebuffers_shm_offset);
   2882     return NextCmdAddress<ValueType>(cmd);
   2883   }
   2884 
   2885   gpu::CommandHeader header;
   2886   int32 n;
   2887   uint32 framebuffers_shm_id;
   2888   uint32 framebuffers_shm_offset;
   2889 };
   2890 
   2891 COMPILE_ASSERT(sizeof(GenFramebuffers) == 16,
   2892                Sizeof_GenFramebuffers_is_not_16);
   2893 COMPILE_ASSERT(offsetof(GenFramebuffers, header) == 0,
   2894                OffsetOf_GenFramebuffers_header_not_0);
   2895 COMPILE_ASSERT(offsetof(GenFramebuffers, n) == 4,
   2896                OffsetOf_GenFramebuffers_n_not_4);
   2897 COMPILE_ASSERT(offsetof(GenFramebuffers, framebuffers_shm_id) == 8,
   2898                OffsetOf_GenFramebuffers_framebuffers_shm_id_not_8);
   2899 COMPILE_ASSERT(offsetof(GenFramebuffers, framebuffers_shm_offset) == 12,
   2900                OffsetOf_GenFramebuffers_framebuffers_shm_offset_not_12);
   2901 
   2902 struct GenFramebuffersImmediate {
   2903   typedef GenFramebuffersImmediate ValueType;
   2904   static const CommandId kCmdId = kGenFramebuffersImmediate;
   2905   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   2906 
   2907   static uint32 ComputeDataSize(GLsizei n) {
   2908     return static_cast<uint32>(sizeof(GLuint) * n);  // NOLINT
   2909   }
   2910 
   2911   static uint32 ComputeSize(GLsizei n) {
   2912     return static_cast<uint32>(
   2913         sizeof(ValueType) + ComputeDataSize(n));  // NOLINT
   2914   }
   2915 
   2916   void SetHeader(GLsizei n) {
   2917     header.SetCmdByTotalSize<ValueType>(ComputeSize(n));
   2918   }
   2919 
   2920   void Init(GLsizei _n, GLuint* _framebuffers) {
   2921     SetHeader(_n);
   2922     n = _n;
   2923     memcpy(ImmediateDataAddress(this),
   2924            _framebuffers, ComputeDataSize(_n));
   2925   }
   2926 
   2927   void* Set(void* cmd, GLsizei _n, GLuint* _framebuffers) {
   2928     static_cast<ValueType*>(cmd)->Init(_n, _framebuffers);
   2929     const uint32 size = ComputeSize(_n);
   2930     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   2931   }
   2932 
   2933   gpu::CommandHeader header;
   2934   int32 n;
   2935 };
   2936 
   2937 COMPILE_ASSERT(sizeof(GenFramebuffersImmediate) == 8,
   2938                Sizeof_GenFramebuffersImmediate_is_not_8);
   2939 COMPILE_ASSERT(offsetof(GenFramebuffersImmediate, header) == 0,
   2940                OffsetOf_GenFramebuffersImmediate_header_not_0);
   2941 COMPILE_ASSERT(offsetof(GenFramebuffersImmediate, n) == 4,
   2942                OffsetOf_GenFramebuffersImmediate_n_not_4);
   2943 
   2944 struct GenRenderbuffers {
   2945   typedef GenRenderbuffers ValueType;
   2946   static const CommandId kCmdId = kGenRenderbuffers;
   2947   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   2948 
   2949   static uint32 ComputeSize() {
   2950     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   2951   }
   2952 
   2953   void SetHeader() {
   2954     header.SetCmd<ValueType>();
   2955   }
   2956 
   2957   void Init(
   2958       GLsizei _n, uint32 _renderbuffers_shm_id,
   2959       uint32 _renderbuffers_shm_offset) {
   2960     SetHeader();
   2961     n = _n;
   2962     renderbuffers_shm_id = _renderbuffers_shm_id;
   2963     renderbuffers_shm_offset = _renderbuffers_shm_offset;
   2964   }
   2965 
   2966   void* Set(
   2967       void* cmd, GLsizei _n, uint32 _renderbuffers_shm_id,
   2968       uint32 _renderbuffers_shm_offset) {
   2969     static_cast<ValueType*>(
   2970         cmd)->Init(_n, _renderbuffers_shm_id, _renderbuffers_shm_offset);
   2971     return NextCmdAddress<ValueType>(cmd);
   2972   }
   2973 
   2974   gpu::CommandHeader header;
   2975   int32 n;
   2976   uint32 renderbuffers_shm_id;
   2977   uint32 renderbuffers_shm_offset;
   2978 };
   2979 
   2980 COMPILE_ASSERT(sizeof(GenRenderbuffers) == 16,
   2981                Sizeof_GenRenderbuffers_is_not_16);
   2982 COMPILE_ASSERT(offsetof(GenRenderbuffers, header) == 0,
   2983                OffsetOf_GenRenderbuffers_header_not_0);
   2984 COMPILE_ASSERT(offsetof(GenRenderbuffers, n) == 4,
   2985                OffsetOf_GenRenderbuffers_n_not_4);
   2986 COMPILE_ASSERT(offsetof(GenRenderbuffers, renderbuffers_shm_id) == 8,
   2987                OffsetOf_GenRenderbuffers_renderbuffers_shm_id_not_8);
   2988 COMPILE_ASSERT(offsetof(GenRenderbuffers, renderbuffers_shm_offset) == 12,
   2989                OffsetOf_GenRenderbuffers_renderbuffers_shm_offset_not_12);
   2990 
   2991 struct GenRenderbuffersImmediate {
   2992   typedef GenRenderbuffersImmediate ValueType;
   2993   static const CommandId kCmdId = kGenRenderbuffersImmediate;
   2994   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   2995 
   2996   static uint32 ComputeDataSize(GLsizei n) {
   2997     return static_cast<uint32>(sizeof(GLuint) * n);  // NOLINT
   2998   }
   2999 
   3000   static uint32 ComputeSize(GLsizei n) {
   3001     return static_cast<uint32>(
   3002         sizeof(ValueType) + ComputeDataSize(n));  // NOLINT
   3003   }
   3004 
   3005   void SetHeader(GLsizei n) {
   3006     header.SetCmdByTotalSize<ValueType>(ComputeSize(n));
   3007   }
   3008 
   3009   void Init(GLsizei _n, GLuint* _renderbuffers) {
   3010     SetHeader(_n);
   3011     n = _n;
   3012     memcpy(ImmediateDataAddress(this),
   3013            _renderbuffers, ComputeDataSize(_n));
   3014   }
   3015 
   3016   void* Set(void* cmd, GLsizei _n, GLuint* _renderbuffers) {
   3017     static_cast<ValueType*>(cmd)->Init(_n, _renderbuffers);
   3018     const uint32 size = ComputeSize(_n);
   3019     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   3020   }
   3021 
   3022   gpu::CommandHeader header;
   3023   int32 n;
   3024 };
   3025 
   3026 COMPILE_ASSERT(sizeof(GenRenderbuffersImmediate) == 8,
   3027                Sizeof_GenRenderbuffersImmediate_is_not_8);
   3028 COMPILE_ASSERT(offsetof(GenRenderbuffersImmediate, header) == 0,
   3029                OffsetOf_GenRenderbuffersImmediate_header_not_0);
   3030 COMPILE_ASSERT(offsetof(GenRenderbuffersImmediate, n) == 4,
   3031                OffsetOf_GenRenderbuffersImmediate_n_not_4);
   3032 
   3033 struct GenTextures {
   3034   typedef GenTextures ValueType;
   3035   static const CommandId kCmdId = kGenTextures;
   3036   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3037 
   3038   static uint32 ComputeSize() {
   3039     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3040   }
   3041 
   3042   void SetHeader() {
   3043     header.SetCmd<ValueType>();
   3044   }
   3045 
   3046   void Init(GLsizei _n, uint32 _textures_shm_id, uint32 _textures_shm_offset) {
   3047     SetHeader();
   3048     n = _n;
   3049     textures_shm_id = _textures_shm_id;
   3050     textures_shm_offset = _textures_shm_offset;
   3051   }
   3052 
   3053   void* Set(
   3054       void* cmd, GLsizei _n, uint32 _textures_shm_id,
   3055       uint32 _textures_shm_offset) {
   3056     static_cast<ValueType*>(
   3057         cmd)->Init(_n, _textures_shm_id, _textures_shm_offset);
   3058     return NextCmdAddress<ValueType>(cmd);
   3059   }
   3060 
   3061   gpu::CommandHeader header;
   3062   int32 n;
   3063   uint32 textures_shm_id;
   3064   uint32 textures_shm_offset;
   3065 };
   3066 
   3067 COMPILE_ASSERT(sizeof(GenTextures) == 16,
   3068                Sizeof_GenTextures_is_not_16);
   3069 COMPILE_ASSERT(offsetof(GenTextures, header) == 0,
   3070                OffsetOf_GenTextures_header_not_0);
   3071 COMPILE_ASSERT(offsetof(GenTextures, n) == 4,
   3072                OffsetOf_GenTextures_n_not_4);
   3073 COMPILE_ASSERT(offsetof(GenTextures, textures_shm_id) == 8,
   3074                OffsetOf_GenTextures_textures_shm_id_not_8);
   3075 COMPILE_ASSERT(offsetof(GenTextures, textures_shm_offset) == 12,
   3076                OffsetOf_GenTextures_textures_shm_offset_not_12);
   3077 
   3078 struct GenTexturesImmediate {
   3079   typedef GenTexturesImmediate ValueType;
   3080   static const CommandId kCmdId = kGenTexturesImmediate;
   3081   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   3082 
   3083   static uint32 ComputeDataSize(GLsizei n) {
   3084     return static_cast<uint32>(sizeof(GLuint) * n);  // NOLINT
   3085   }
   3086 
   3087   static uint32 ComputeSize(GLsizei n) {
   3088     return static_cast<uint32>(
   3089         sizeof(ValueType) + ComputeDataSize(n));  // NOLINT
   3090   }
   3091 
   3092   void SetHeader(GLsizei n) {
   3093     header.SetCmdByTotalSize<ValueType>(ComputeSize(n));
   3094   }
   3095 
   3096   void Init(GLsizei _n, GLuint* _textures) {
   3097     SetHeader(_n);
   3098     n = _n;
   3099     memcpy(ImmediateDataAddress(this),
   3100            _textures, ComputeDataSize(_n));
   3101   }
   3102 
   3103   void* Set(void* cmd, GLsizei _n, GLuint* _textures) {
   3104     static_cast<ValueType*>(cmd)->Init(_n, _textures);
   3105     const uint32 size = ComputeSize(_n);
   3106     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   3107   }
   3108 
   3109   gpu::CommandHeader header;
   3110   int32 n;
   3111 };
   3112 
   3113 COMPILE_ASSERT(sizeof(GenTexturesImmediate) == 8,
   3114                Sizeof_GenTexturesImmediate_is_not_8);
   3115 COMPILE_ASSERT(offsetof(GenTexturesImmediate, header) == 0,
   3116                OffsetOf_GenTexturesImmediate_header_not_0);
   3117 COMPILE_ASSERT(offsetof(GenTexturesImmediate, n) == 4,
   3118                OffsetOf_GenTexturesImmediate_n_not_4);
   3119 
   3120 struct GetActiveAttrib {
   3121   typedef GetActiveAttrib ValueType;
   3122   static const CommandId kCmdId = kGetActiveAttrib;
   3123   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3124 
   3125   struct Result {
   3126     int32 success;
   3127     int32 size;
   3128     uint32 type;
   3129   };
   3130 
   3131   static uint32 ComputeSize() {
   3132     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3133   }
   3134 
   3135   void SetHeader() {
   3136     header.SetCmd<ValueType>();
   3137   }
   3138 
   3139   void Init(
   3140       GLuint _program, GLuint _index, uint32 _name_bucket_id,
   3141       uint32 _result_shm_id, uint32 _result_shm_offset) {
   3142     SetHeader();
   3143     program = _program;
   3144     index = _index;
   3145     name_bucket_id = _name_bucket_id;
   3146     result_shm_id = _result_shm_id;
   3147     result_shm_offset = _result_shm_offset;
   3148   }
   3149 
   3150   void* Set(
   3151       void* cmd, GLuint _program, GLuint _index, uint32 _name_bucket_id,
   3152       uint32 _result_shm_id, uint32 _result_shm_offset) {
   3153     static_cast<ValueType*>(
   3154         cmd)->Init(
   3155             _program, _index, _name_bucket_id, _result_shm_id,
   3156             _result_shm_offset);
   3157     return NextCmdAddress<ValueType>(cmd);
   3158   }
   3159 
   3160   gpu::CommandHeader header;
   3161   uint32 program;
   3162   uint32 index;
   3163   uint32 name_bucket_id;
   3164   uint32 result_shm_id;
   3165   uint32 result_shm_offset;
   3166 };
   3167 
   3168 COMPILE_ASSERT(sizeof(GetActiveAttrib) == 24,
   3169                Sizeof_GetActiveAttrib_is_not_24);
   3170 COMPILE_ASSERT(offsetof(GetActiveAttrib, header) == 0,
   3171                OffsetOf_GetActiveAttrib_header_not_0);
   3172 COMPILE_ASSERT(offsetof(GetActiveAttrib, program) == 4,
   3173                OffsetOf_GetActiveAttrib_program_not_4);
   3174 COMPILE_ASSERT(offsetof(GetActiveAttrib, index) == 8,
   3175                OffsetOf_GetActiveAttrib_index_not_8);
   3176 COMPILE_ASSERT(offsetof(GetActiveAttrib, name_bucket_id) == 12,
   3177                OffsetOf_GetActiveAttrib_name_bucket_id_not_12);
   3178 COMPILE_ASSERT(offsetof(GetActiveAttrib, result_shm_id) == 16,
   3179                OffsetOf_GetActiveAttrib_result_shm_id_not_16);
   3180 COMPILE_ASSERT(offsetof(GetActiveAttrib, result_shm_offset) == 20,
   3181                OffsetOf_GetActiveAttrib_result_shm_offset_not_20);
   3182 COMPILE_ASSERT(offsetof(GetActiveAttrib::Result, success) == 0,
   3183                OffsetOf_GetActiveAttrib_Result_success_not_0);
   3184 COMPILE_ASSERT(offsetof(GetActiveAttrib::Result, size) == 4,
   3185                OffsetOf_GetActiveAttrib_Result_size_not_4);
   3186 COMPILE_ASSERT(offsetof(GetActiveAttrib::Result, type) == 8,
   3187                OffsetOf_GetActiveAttrib_Result_type_not_8);
   3188 
   3189 struct GetActiveUniform {
   3190   typedef GetActiveUniform ValueType;
   3191   static const CommandId kCmdId = kGetActiveUniform;
   3192   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3193 
   3194   struct Result {
   3195     int32 success;
   3196     int32 size;
   3197     uint32 type;
   3198   };
   3199 
   3200   static uint32 ComputeSize() {
   3201     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3202   }
   3203 
   3204   void SetHeader() {
   3205     header.SetCmd<ValueType>();
   3206   }
   3207 
   3208   void Init(
   3209       GLuint _program, GLuint _index, uint32 _name_bucket_id,
   3210       uint32 _result_shm_id, uint32 _result_shm_offset) {
   3211     SetHeader();
   3212     program = _program;
   3213     index = _index;
   3214     name_bucket_id = _name_bucket_id;
   3215     result_shm_id = _result_shm_id;
   3216     result_shm_offset = _result_shm_offset;
   3217   }
   3218 
   3219   void* Set(
   3220       void* cmd, GLuint _program, GLuint _index, uint32 _name_bucket_id,
   3221       uint32 _result_shm_id, uint32 _result_shm_offset) {
   3222     static_cast<ValueType*>(
   3223         cmd)->Init(
   3224             _program, _index, _name_bucket_id, _result_shm_id,
   3225             _result_shm_offset);
   3226     return NextCmdAddress<ValueType>(cmd);
   3227   }
   3228 
   3229   gpu::CommandHeader header;
   3230   uint32 program;
   3231   uint32 index;
   3232   uint32 name_bucket_id;
   3233   uint32 result_shm_id;
   3234   uint32 result_shm_offset;
   3235 };
   3236 
   3237 COMPILE_ASSERT(sizeof(GetActiveUniform) == 24,
   3238                Sizeof_GetActiveUniform_is_not_24);
   3239 COMPILE_ASSERT(offsetof(GetActiveUniform, header) == 0,
   3240                OffsetOf_GetActiveUniform_header_not_0);
   3241 COMPILE_ASSERT(offsetof(GetActiveUniform, program) == 4,
   3242                OffsetOf_GetActiveUniform_program_not_4);
   3243 COMPILE_ASSERT(offsetof(GetActiveUniform, index) == 8,
   3244                OffsetOf_GetActiveUniform_index_not_8);
   3245 COMPILE_ASSERT(offsetof(GetActiveUniform, name_bucket_id) == 12,
   3246                OffsetOf_GetActiveUniform_name_bucket_id_not_12);
   3247 COMPILE_ASSERT(offsetof(GetActiveUniform, result_shm_id) == 16,
   3248                OffsetOf_GetActiveUniform_result_shm_id_not_16);
   3249 COMPILE_ASSERT(offsetof(GetActiveUniform, result_shm_offset) == 20,
   3250                OffsetOf_GetActiveUniform_result_shm_offset_not_20);
   3251 COMPILE_ASSERT(offsetof(GetActiveUniform::Result, success) == 0,
   3252                OffsetOf_GetActiveUniform_Result_success_not_0);
   3253 COMPILE_ASSERT(offsetof(GetActiveUniform::Result, size) == 4,
   3254                OffsetOf_GetActiveUniform_Result_size_not_4);
   3255 COMPILE_ASSERT(offsetof(GetActiveUniform::Result, type) == 8,
   3256                OffsetOf_GetActiveUniform_Result_type_not_8);
   3257 
   3258 struct GetAttachedShaders {
   3259   typedef GetAttachedShaders ValueType;
   3260   static const CommandId kCmdId = kGetAttachedShaders;
   3261   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3262 
   3263   typedef SizedResult<GLuint> Result;
   3264 
   3265   static uint32 ComputeSize() {
   3266     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3267   }
   3268 
   3269   void SetHeader() {
   3270     header.SetCmd<ValueType>();
   3271   }
   3272 
   3273   void Init(
   3274       GLuint _program, uint32 _result_shm_id, uint32 _result_shm_offset,
   3275       uint32 _result_size) {
   3276     SetHeader();
   3277     program = _program;
   3278     result_shm_id = _result_shm_id;
   3279     result_shm_offset = _result_shm_offset;
   3280     result_size = _result_size;
   3281   }
   3282 
   3283   void* Set(
   3284       void* cmd, GLuint _program, uint32 _result_shm_id,
   3285       uint32 _result_shm_offset, uint32 _result_size) {
   3286     static_cast<ValueType*>(
   3287         cmd)->Init(_program, _result_shm_id, _result_shm_offset, _result_size);
   3288     return NextCmdAddress<ValueType>(cmd);
   3289   }
   3290 
   3291   gpu::CommandHeader header;
   3292   uint32 program;
   3293   uint32 result_shm_id;
   3294   uint32 result_shm_offset;
   3295   uint32 result_size;
   3296 };
   3297 
   3298 COMPILE_ASSERT(sizeof(GetAttachedShaders) == 20,
   3299                Sizeof_GetAttachedShaders_is_not_20);
   3300 COMPILE_ASSERT(offsetof(GetAttachedShaders, header) == 0,
   3301                OffsetOf_GetAttachedShaders_header_not_0);
   3302 COMPILE_ASSERT(offsetof(GetAttachedShaders, program) == 4,
   3303                OffsetOf_GetAttachedShaders_program_not_4);
   3304 COMPILE_ASSERT(offsetof(GetAttachedShaders, result_shm_id) == 8,
   3305                OffsetOf_GetAttachedShaders_result_shm_id_not_8);
   3306 COMPILE_ASSERT(offsetof(GetAttachedShaders, result_shm_offset) == 12,
   3307                OffsetOf_GetAttachedShaders_result_shm_offset_not_12);
   3308 COMPILE_ASSERT(offsetof(GetAttachedShaders, result_size) == 16,
   3309                OffsetOf_GetAttachedShaders_result_size_not_16);
   3310 
   3311 struct GetBooleanv {
   3312   typedef GetBooleanv ValueType;
   3313   static const CommandId kCmdId = kGetBooleanv;
   3314   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3315 
   3316   typedef SizedResult<GLboolean> Result;
   3317 
   3318   static uint32 ComputeSize() {
   3319     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3320   }
   3321 
   3322   void SetHeader() {
   3323     header.SetCmd<ValueType>();
   3324   }
   3325 
   3326   void Init(GLenum _pname, uint32 _params_shm_id, uint32 _params_shm_offset) {
   3327     SetHeader();
   3328     pname = _pname;
   3329     params_shm_id = _params_shm_id;
   3330     params_shm_offset = _params_shm_offset;
   3331   }
   3332 
   3333   void* Set(
   3334       void* cmd, GLenum _pname, uint32 _params_shm_id,
   3335       uint32 _params_shm_offset) {
   3336     static_cast<ValueType*>(
   3337         cmd)->Init(_pname, _params_shm_id, _params_shm_offset);
   3338     return NextCmdAddress<ValueType>(cmd);
   3339   }
   3340 
   3341   gpu::CommandHeader header;
   3342   uint32 pname;
   3343   uint32 params_shm_id;
   3344   uint32 params_shm_offset;
   3345 };
   3346 
   3347 COMPILE_ASSERT(sizeof(GetBooleanv) == 16,
   3348                Sizeof_GetBooleanv_is_not_16);
   3349 COMPILE_ASSERT(offsetof(GetBooleanv, header) == 0,
   3350                OffsetOf_GetBooleanv_header_not_0);
   3351 COMPILE_ASSERT(offsetof(GetBooleanv, pname) == 4,
   3352                OffsetOf_GetBooleanv_pname_not_4);
   3353 COMPILE_ASSERT(offsetof(GetBooleanv, params_shm_id) == 8,
   3354                OffsetOf_GetBooleanv_params_shm_id_not_8);
   3355 COMPILE_ASSERT(offsetof(GetBooleanv, params_shm_offset) == 12,
   3356                OffsetOf_GetBooleanv_params_shm_offset_not_12);
   3357 
   3358 struct GetBufferParameteriv {
   3359   typedef GetBufferParameteriv ValueType;
   3360   static const CommandId kCmdId = kGetBufferParameteriv;
   3361   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3362 
   3363   typedef SizedResult<GLint> Result;
   3364 
   3365   static uint32 ComputeSize() {
   3366     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3367   }
   3368 
   3369   void SetHeader() {
   3370     header.SetCmd<ValueType>();
   3371   }
   3372 
   3373   void Init(
   3374       GLenum _target, GLenum _pname, uint32 _params_shm_id,
   3375       uint32 _params_shm_offset) {
   3376     SetHeader();
   3377     target = _target;
   3378     pname = _pname;
   3379     params_shm_id = _params_shm_id;
   3380     params_shm_offset = _params_shm_offset;
   3381   }
   3382 
   3383   void* Set(
   3384       void* cmd, GLenum _target, GLenum _pname, uint32 _params_shm_id,
   3385       uint32 _params_shm_offset) {
   3386     static_cast<ValueType*>(
   3387         cmd)->Init(_target, _pname, _params_shm_id, _params_shm_offset);
   3388     return NextCmdAddress<ValueType>(cmd);
   3389   }
   3390 
   3391   gpu::CommandHeader header;
   3392   uint32 target;
   3393   uint32 pname;
   3394   uint32 params_shm_id;
   3395   uint32 params_shm_offset;
   3396 };
   3397 
   3398 COMPILE_ASSERT(sizeof(GetBufferParameteriv) == 20,
   3399                Sizeof_GetBufferParameteriv_is_not_20);
   3400 COMPILE_ASSERT(offsetof(GetBufferParameteriv, header) == 0,
   3401                OffsetOf_GetBufferParameteriv_header_not_0);
   3402 COMPILE_ASSERT(offsetof(GetBufferParameteriv, target) == 4,
   3403                OffsetOf_GetBufferParameteriv_target_not_4);
   3404 COMPILE_ASSERT(offsetof(GetBufferParameteriv, pname) == 8,
   3405                OffsetOf_GetBufferParameteriv_pname_not_8);
   3406 COMPILE_ASSERT(offsetof(GetBufferParameteriv, params_shm_id) == 12,
   3407                OffsetOf_GetBufferParameteriv_params_shm_id_not_12);
   3408 COMPILE_ASSERT(offsetof(GetBufferParameteriv, params_shm_offset) == 16,
   3409                OffsetOf_GetBufferParameteriv_params_shm_offset_not_16);
   3410 
   3411 struct GetError {
   3412   typedef GetError ValueType;
   3413   static const CommandId kCmdId = kGetError;
   3414   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3415 
   3416   typedef GLenum Result;
   3417 
   3418   static uint32 ComputeSize() {
   3419     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3420   }
   3421 
   3422   void SetHeader() {
   3423     header.SetCmd<ValueType>();
   3424   }
   3425 
   3426   void Init(uint32 _result_shm_id, uint32 _result_shm_offset) {
   3427     SetHeader();
   3428     result_shm_id = _result_shm_id;
   3429     result_shm_offset = _result_shm_offset;
   3430   }
   3431 
   3432   void* Set(void* cmd, uint32 _result_shm_id, uint32 _result_shm_offset) {
   3433     static_cast<ValueType*>(cmd)->Init(_result_shm_id, _result_shm_offset);
   3434     return NextCmdAddress<ValueType>(cmd);
   3435   }
   3436 
   3437   gpu::CommandHeader header;
   3438   uint32 result_shm_id;
   3439   uint32 result_shm_offset;
   3440 };
   3441 
   3442 COMPILE_ASSERT(sizeof(GetError) == 12,
   3443                Sizeof_GetError_is_not_12);
   3444 COMPILE_ASSERT(offsetof(GetError, header) == 0,
   3445                OffsetOf_GetError_header_not_0);
   3446 COMPILE_ASSERT(offsetof(GetError, result_shm_id) == 4,
   3447                OffsetOf_GetError_result_shm_id_not_4);
   3448 COMPILE_ASSERT(offsetof(GetError, result_shm_offset) == 8,
   3449                OffsetOf_GetError_result_shm_offset_not_8);
   3450 
   3451 struct GetFloatv {
   3452   typedef GetFloatv ValueType;
   3453   static const CommandId kCmdId = kGetFloatv;
   3454   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3455 
   3456   typedef SizedResult<GLfloat> Result;
   3457 
   3458   static uint32 ComputeSize() {
   3459     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3460   }
   3461 
   3462   void SetHeader() {
   3463     header.SetCmd<ValueType>();
   3464   }
   3465 
   3466   void Init(GLenum _pname, uint32 _params_shm_id, uint32 _params_shm_offset) {
   3467     SetHeader();
   3468     pname = _pname;
   3469     params_shm_id = _params_shm_id;
   3470     params_shm_offset = _params_shm_offset;
   3471   }
   3472 
   3473   void* Set(
   3474       void* cmd, GLenum _pname, uint32 _params_shm_id,
   3475       uint32 _params_shm_offset) {
   3476     static_cast<ValueType*>(
   3477         cmd)->Init(_pname, _params_shm_id, _params_shm_offset);
   3478     return NextCmdAddress<ValueType>(cmd);
   3479   }
   3480 
   3481   gpu::CommandHeader header;
   3482   uint32 pname;
   3483   uint32 params_shm_id;
   3484   uint32 params_shm_offset;
   3485 };
   3486 
   3487 COMPILE_ASSERT(sizeof(GetFloatv) == 16,
   3488                Sizeof_GetFloatv_is_not_16);
   3489 COMPILE_ASSERT(offsetof(GetFloatv, header) == 0,
   3490                OffsetOf_GetFloatv_header_not_0);
   3491 COMPILE_ASSERT(offsetof(GetFloatv, pname) == 4,
   3492                OffsetOf_GetFloatv_pname_not_4);
   3493 COMPILE_ASSERT(offsetof(GetFloatv, params_shm_id) == 8,
   3494                OffsetOf_GetFloatv_params_shm_id_not_8);
   3495 COMPILE_ASSERT(offsetof(GetFloatv, params_shm_offset) == 12,
   3496                OffsetOf_GetFloatv_params_shm_offset_not_12);
   3497 
   3498 struct GetFramebufferAttachmentParameteriv {
   3499   typedef GetFramebufferAttachmentParameteriv ValueType;
   3500   static const CommandId kCmdId = kGetFramebufferAttachmentParameteriv;
   3501   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3502 
   3503   typedef SizedResult<GLint> Result;
   3504 
   3505   static uint32 ComputeSize() {
   3506     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3507   }
   3508 
   3509   void SetHeader() {
   3510     header.SetCmd<ValueType>();
   3511   }
   3512 
   3513   void Init(
   3514       GLenum _target, GLenum _attachment, GLenum _pname, uint32 _params_shm_id,
   3515       uint32 _params_shm_offset) {
   3516     SetHeader();
   3517     target = _target;
   3518     attachment = _attachment;
   3519     pname = _pname;
   3520     params_shm_id = _params_shm_id;
   3521     params_shm_offset = _params_shm_offset;
   3522   }
   3523 
   3524   void* Set(
   3525       void* cmd, GLenum _target, GLenum _attachment, GLenum _pname,
   3526       uint32 _params_shm_id, uint32 _params_shm_offset) {
   3527     static_cast<ValueType*>(
   3528         cmd)->Init(
   3529             _target, _attachment, _pname, _params_shm_id, _params_shm_offset);
   3530     return NextCmdAddress<ValueType>(cmd);
   3531   }
   3532 
   3533   gpu::CommandHeader header;
   3534   uint32 target;
   3535   uint32 attachment;
   3536   uint32 pname;
   3537   uint32 params_shm_id;
   3538   uint32 params_shm_offset;
   3539 };
   3540 
   3541 COMPILE_ASSERT(sizeof(GetFramebufferAttachmentParameteriv) == 24,
   3542                Sizeof_GetFramebufferAttachmentParameteriv_is_not_24);
   3543 COMPILE_ASSERT(offsetof(GetFramebufferAttachmentParameteriv, header) == 0,
   3544                OffsetOf_GetFramebufferAttachmentParameteriv_header_not_0);
   3545 COMPILE_ASSERT(offsetof(GetFramebufferAttachmentParameteriv, target) == 4,
   3546                OffsetOf_GetFramebufferAttachmentParameteriv_target_not_4);
   3547 COMPILE_ASSERT(offsetof(GetFramebufferAttachmentParameteriv, attachment) == 8,
   3548                OffsetOf_GetFramebufferAttachmentParameteriv_attachment_not_8);
   3549 COMPILE_ASSERT(offsetof(GetFramebufferAttachmentParameteriv, pname) == 12,
   3550                OffsetOf_GetFramebufferAttachmentParameteriv_pname_not_12);
   3551 COMPILE_ASSERT(
   3552     offsetof(GetFramebufferAttachmentParameteriv, params_shm_id) == 16,
   3553                OffsetOf_GetFramebufferAttachmentParameteriv_params_shm_id_not_16);  // NOLINT
   3554 COMPILE_ASSERT(
   3555     offsetof(GetFramebufferAttachmentParameteriv, params_shm_offset) == 20,
   3556                OffsetOf_GetFramebufferAttachmentParameteriv_params_shm_offset_not_20);  // NOLINT
   3557 
   3558 struct GetIntegerv {
   3559   typedef GetIntegerv ValueType;
   3560   static const CommandId kCmdId = kGetIntegerv;
   3561   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3562 
   3563   typedef SizedResult<GLint> Result;
   3564 
   3565   static uint32 ComputeSize() {
   3566     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3567   }
   3568 
   3569   void SetHeader() {
   3570     header.SetCmd<ValueType>();
   3571   }
   3572 
   3573   void Init(GLenum _pname, uint32 _params_shm_id, uint32 _params_shm_offset) {
   3574     SetHeader();
   3575     pname = _pname;
   3576     params_shm_id = _params_shm_id;
   3577     params_shm_offset = _params_shm_offset;
   3578   }
   3579 
   3580   void* Set(
   3581       void* cmd, GLenum _pname, uint32 _params_shm_id,
   3582       uint32 _params_shm_offset) {
   3583     static_cast<ValueType*>(
   3584         cmd)->Init(_pname, _params_shm_id, _params_shm_offset);
   3585     return NextCmdAddress<ValueType>(cmd);
   3586   }
   3587 
   3588   gpu::CommandHeader header;
   3589   uint32 pname;
   3590   uint32 params_shm_id;
   3591   uint32 params_shm_offset;
   3592 };
   3593 
   3594 COMPILE_ASSERT(sizeof(GetIntegerv) == 16,
   3595                Sizeof_GetIntegerv_is_not_16);
   3596 COMPILE_ASSERT(offsetof(GetIntegerv, header) == 0,
   3597                OffsetOf_GetIntegerv_header_not_0);
   3598 COMPILE_ASSERT(offsetof(GetIntegerv, pname) == 4,
   3599                OffsetOf_GetIntegerv_pname_not_4);
   3600 COMPILE_ASSERT(offsetof(GetIntegerv, params_shm_id) == 8,
   3601                OffsetOf_GetIntegerv_params_shm_id_not_8);
   3602 COMPILE_ASSERT(offsetof(GetIntegerv, params_shm_offset) == 12,
   3603                OffsetOf_GetIntegerv_params_shm_offset_not_12);
   3604 
   3605 struct GetProgramiv {
   3606   typedef GetProgramiv ValueType;
   3607   static const CommandId kCmdId = kGetProgramiv;
   3608   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3609 
   3610   typedef SizedResult<GLint> Result;
   3611 
   3612   static uint32 ComputeSize() {
   3613     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3614   }
   3615 
   3616   void SetHeader() {
   3617     header.SetCmd<ValueType>();
   3618   }
   3619 
   3620   void Init(
   3621       GLuint _program, GLenum _pname, uint32 _params_shm_id,
   3622       uint32 _params_shm_offset) {
   3623     SetHeader();
   3624     program = _program;
   3625     pname = _pname;
   3626     params_shm_id = _params_shm_id;
   3627     params_shm_offset = _params_shm_offset;
   3628   }
   3629 
   3630   void* Set(
   3631       void* cmd, GLuint _program, GLenum _pname, uint32 _params_shm_id,
   3632       uint32 _params_shm_offset) {
   3633     static_cast<ValueType*>(
   3634         cmd)->Init(_program, _pname, _params_shm_id, _params_shm_offset);
   3635     return NextCmdAddress<ValueType>(cmd);
   3636   }
   3637 
   3638   gpu::CommandHeader header;
   3639   uint32 program;
   3640   uint32 pname;
   3641   uint32 params_shm_id;
   3642   uint32 params_shm_offset;
   3643 };
   3644 
   3645 COMPILE_ASSERT(sizeof(GetProgramiv) == 20,
   3646                Sizeof_GetProgramiv_is_not_20);
   3647 COMPILE_ASSERT(offsetof(GetProgramiv, header) == 0,
   3648                OffsetOf_GetProgramiv_header_not_0);
   3649 COMPILE_ASSERT(offsetof(GetProgramiv, program) == 4,
   3650                OffsetOf_GetProgramiv_program_not_4);
   3651 COMPILE_ASSERT(offsetof(GetProgramiv, pname) == 8,
   3652                OffsetOf_GetProgramiv_pname_not_8);
   3653 COMPILE_ASSERT(offsetof(GetProgramiv, params_shm_id) == 12,
   3654                OffsetOf_GetProgramiv_params_shm_id_not_12);
   3655 COMPILE_ASSERT(offsetof(GetProgramiv, params_shm_offset) == 16,
   3656                OffsetOf_GetProgramiv_params_shm_offset_not_16);
   3657 
   3658 struct GetProgramInfoLog {
   3659   typedef GetProgramInfoLog ValueType;
   3660   static const CommandId kCmdId = kGetProgramInfoLog;
   3661   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3662 
   3663   static uint32 ComputeSize() {
   3664     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3665   }
   3666 
   3667   void SetHeader() {
   3668     header.SetCmd<ValueType>();
   3669   }
   3670 
   3671   void Init(GLuint _program, uint32 _bucket_id) {
   3672     SetHeader();
   3673     program = _program;
   3674     bucket_id = _bucket_id;
   3675   }
   3676 
   3677   void* Set(void* cmd, GLuint _program, uint32 _bucket_id) {
   3678     static_cast<ValueType*>(cmd)->Init(_program, _bucket_id);
   3679     return NextCmdAddress<ValueType>(cmd);
   3680   }
   3681 
   3682   gpu::CommandHeader header;
   3683   uint32 program;
   3684   uint32 bucket_id;
   3685 };
   3686 
   3687 COMPILE_ASSERT(sizeof(GetProgramInfoLog) == 12,
   3688                Sizeof_GetProgramInfoLog_is_not_12);
   3689 COMPILE_ASSERT(offsetof(GetProgramInfoLog, header) == 0,
   3690                OffsetOf_GetProgramInfoLog_header_not_0);
   3691 COMPILE_ASSERT(offsetof(GetProgramInfoLog, program) == 4,
   3692                OffsetOf_GetProgramInfoLog_program_not_4);
   3693 COMPILE_ASSERT(offsetof(GetProgramInfoLog, bucket_id) == 8,
   3694                OffsetOf_GetProgramInfoLog_bucket_id_not_8);
   3695 
   3696 struct GetRenderbufferParameteriv {
   3697   typedef GetRenderbufferParameteriv ValueType;
   3698   static const CommandId kCmdId = kGetRenderbufferParameteriv;
   3699   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3700 
   3701   typedef SizedResult<GLint> Result;
   3702 
   3703   static uint32 ComputeSize() {
   3704     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3705   }
   3706 
   3707   void SetHeader() {
   3708     header.SetCmd<ValueType>();
   3709   }
   3710 
   3711   void Init(
   3712       GLenum _target, GLenum _pname, uint32 _params_shm_id,
   3713       uint32 _params_shm_offset) {
   3714     SetHeader();
   3715     target = _target;
   3716     pname = _pname;
   3717     params_shm_id = _params_shm_id;
   3718     params_shm_offset = _params_shm_offset;
   3719   }
   3720 
   3721   void* Set(
   3722       void* cmd, GLenum _target, GLenum _pname, uint32 _params_shm_id,
   3723       uint32 _params_shm_offset) {
   3724     static_cast<ValueType*>(
   3725         cmd)->Init(_target, _pname, _params_shm_id, _params_shm_offset);
   3726     return NextCmdAddress<ValueType>(cmd);
   3727   }
   3728 
   3729   gpu::CommandHeader header;
   3730   uint32 target;
   3731   uint32 pname;
   3732   uint32 params_shm_id;
   3733   uint32 params_shm_offset;
   3734 };
   3735 
   3736 COMPILE_ASSERT(sizeof(GetRenderbufferParameteriv) == 20,
   3737                Sizeof_GetRenderbufferParameteriv_is_not_20);
   3738 COMPILE_ASSERT(offsetof(GetRenderbufferParameteriv, header) == 0,
   3739                OffsetOf_GetRenderbufferParameteriv_header_not_0);
   3740 COMPILE_ASSERT(offsetof(GetRenderbufferParameteriv, target) == 4,
   3741                OffsetOf_GetRenderbufferParameteriv_target_not_4);
   3742 COMPILE_ASSERT(offsetof(GetRenderbufferParameteriv, pname) == 8,
   3743                OffsetOf_GetRenderbufferParameteriv_pname_not_8);
   3744 COMPILE_ASSERT(offsetof(GetRenderbufferParameteriv, params_shm_id) == 12,
   3745                OffsetOf_GetRenderbufferParameteriv_params_shm_id_not_12);
   3746 COMPILE_ASSERT(offsetof(GetRenderbufferParameteriv, params_shm_offset) == 16,
   3747                OffsetOf_GetRenderbufferParameteriv_params_shm_offset_not_16);
   3748 
   3749 struct GetShaderiv {
   3750   typedef GetShaderiv ValueType;
   3751   static const CommandId kCmdId = kGetShaderiv;
   3752   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3753 
   3754   typedef SizedResult<GLint> Result;
   3755 
   3756   static uint32 ComputeSize() {
   3757     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3758   }
   3759 
   3760   void SetHeader() {
   3761     header.SetCmd<ValueType>();
   3762   }
   3763 
   3764   void Init(
   3765       GLuint _shader, GLenum _pname, uint32 _params_shm_id,
   3766       uint32 _params_shm_offset) {
   3767     SetHeader();
   3768     shader = _shader;
   3769     pname = _pname;
   3770     params_shm_id = _params_shm_id;
   3771     params_shm_offset = _params_shm_offset;
   3772   }
   3773 
   3774   void* Set(
   3775       void* cmd, GLuint _shader, GLenum _pname, uint32 _params_shm_id,
   3776       uint32 _params_shm_offset) {
   3777     static_cast<ValueType*>(
   3778         cmd)->Init(_shader, _pname, _params_shm_id, _params_shm_offset);
   3779     return NextCmdAddress<ValueType>(cmd);
   3780   }
   3781 
   3782   gpu::CommandHeader header;
   3783   uint32 shader;
   3784   uint32 pname;
   3785   uint32 params_shm_id;
   3786   uint32 params_shm_offset;
   3787 };
   3788 
   3789 COMPILE_ASSERT(sizeof(GetShaderiv) == 20,
   3790                Sizeof_GetShaderiv_is_not_20);
   3791 COMPILE_ASSERT(offsetof(GetShaderiv, header) == 0,
   3792                OffsetOf_GetShaderiv_header_not_0);
   3793 COMPILE_ASSERT(offsetof(GetShaderiv, shader) == 4,
   3794                OffsetOf_GetShaderiv_shader_not_4);
   3795 COMPILE_ASSERT(offsetof(GetShaderiv, pname) == 8,
   3796                OffsetOf_GetShaderiv_pname_not_8);
   3797 COMPILE_ASSERT(offsetof(GetShaderiv, params_shm_id) == 12,
   3798                OffsetOf_GetShaderiv_params_shm_id_not_12);
   3799 COMPILE_ASSERT(offsetof(GetShaderiv, params_shm_offset) == 16,
   3800                OffsetOf_GetShaderiv_params_shm_offset_not_16);
   3801 
   3802 struct GetShaderInfoLog {
   3803   typedef GetShaderInfoLog ValueType;
   3804   static const CommandId kCmdId = kGetShaderInfoLog;
   3805   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3806 
   3807   static uint32 ComputeSize() {
   3808     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3809   }
   3810 
   3811   void SetHeader() {
   3812     header.SetCmd<ValueType>();
   3813   }
   3814 
   3815   void Init(GLuint _shader, uint32 _bucket_id) {
   3816     SetHeader();
   3817     shader = _shader;
   3818     bucket_id = _bucket_id;
   3819   }
   3820 
   3821   void* Set(void* cmd, GLuint _shader, uint32 _bucket_id) {
   3822     static_cast<ValueType*>(cmd)->Init(_shader, _bucket_id);
   3823     return NextCmdAddress<ValueType>(cmd);
   3824   }
   3825 
   3826   gpu::CommandHeader header;
   3827   uint32 shader;
   3828   uint32 bucket_id;
   3829 };
   3830 
   3831 COMPILE_ASSERT(sizeof(GetShaderInfoLog) == 12,
   3832                Sizeof_GetShaderInfoLog_is_not_12);
   3833 COMPILE_ASSERT(offsetof(GetShaderInfoLog, header) == 0,
   3834                OffsetOf_GetShaderInfoLog_header_not_0);
   3835 COMPILE_ASSERT(offsetof(GetShaderInfoLog, shader) == 4,
   3836                OffsetOf_GetShaderInfoLog_shader_not_4);
   3837 COMPILE_ASSERT(offsetof(GetShaderInfoLog, bucket_id) == 8,
   3838                OffsetOf_GetShaderInfoLog_bucket_id_not_8);
   3839 
   3840 struct GetShaderPrecisionFormat {
   3841   typedef GetShaderPrecisionFormat ValueType;
   3842   static const CommandId kCmdId = kGetShaderPrecisionFormat;
   3843   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3844 
   3845   struct Result {
   3846     int32 success;
   3847     int32 min_range;
   3848     int32 max_range;
   3849     int32 precision;
   3850   };
   3851 
   3852   static uint32 ComputeSize() {
   3853     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3854   }
   3855 
   3856   void SetHeader() {
   3857     header.SetCmd<ValueType>();
   3858   }
   3859 
   3860   void Init(
   3861       GLenum _shadertype, GLenum _precisiontype, uint32 _result_shm_id,
   3862       uint32 _result_shm_offset) {
   3863     SetHeader();
   3864     shadertype = _shadertype;
   3865     precisiontype = _precisiontype;
   3866     result_shm_id = _result_shm_id;
   3867     result_shm_offset = _result_shm_offset;
   3868   }
   3869 
   3870   void* Set(
   3871       void* cmd, GLenum _shadertype, GLenum _precisiontype,
   3872       uint32 _result_shm_id, uint32 _result_shm_offset) {
   3873     static_cast<ValueType*>(
   3874         cmd)->Init(
   3875             _shadertype, _precisiontype, _result_shm_id, _result_shm_offset);
   3876     return NextCmdAddress<ValueType>(cmd);
   3877   }
   3878 
   3879   gpu::CommandHeader header;
   3880   uint32 shadertype;
   3881   uint32 precisiontype;
   3882   uint32 result_shm_id;
   3883   uint32 result_shm_offset;
   3884 };
   3885 
   3886 COMPILE_ASSERT(sizeof(GetShaderPrecisionFormat) == 20,
   3887                Sizeof_GetShaderPrecisionFormat_is_not_20);
   3888 COMPILE_ASSERT(offsetof(GetShaderPrecisionFormat, header) == 0,
   3889                OffsetOf_GetShaderPrecisionFormat_header_not_0);
   3890 COMPILE_ASSERT(offsetof(GetShaderPrecisionFormat, shadertype) == 4,
   3891                OffsetOf_GetShaderPrecisionFormat_shadertype_not_4);
   3892 COMPILE_ASSERT(offsetof(GetShaderPrecisionFormat, precisiontype) == 8,
   3893                OffsetOf_GetShaderPrecisionFormat_precisiontype_not_8);
   3894 COMPILE_ASSERT(offsetof(GetShaderPrecisionFormat, result_shm_id) == 12,
   3895                OffsetOf_GetShaderPrecisionFormat_result_shm_id_not_12);
   3896 COMPILE_ASSERT(offsetof(GetShaderPrecisionFormat, result_shm_offset) == 16,
   3897                OffsetOf_GetShaderPrecisionFormat_result_shm_offset_not_16);
   3898 COMPILE_ASSERT(offsetof(GetShaderPrecisionFormat::Result, success) == 0,
   3899                OffsetOf_GetShaderPrecisionFormat_Result_success_not_0);
   3900 COMPILE_ASSERT(offsetof(GetShaderPrecisionFormat::Result, min_range) == 4,
   3901                OffsetOf_GetShaderPrecisionFormat_Result_min_range_not_4);
   3902 COMPILE_ASSERT(offsetof(GetShaderPrecisionFormat::Result, max_range) == 8,
   3903                OffsetOf_GetShaderPrecisionFormat_Result_max_range_not_8);
   3904 COMPILE_ASSERT(offsetof(GetShaderPrecisionFormat::Result, precision) == 12,
   3905                OffsetOf_GetShaderPrecisionFormat_Result_precision_not_12);
   3906 
   3907 struct GetShaderSource {
   3908   typedef GetShaderSource ValueType;
   3909   static const CommandId kCmdId = kGetShaderSource;
   3910   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3911 
   3912   static uint32 ComputeSize() {
   3913     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3914   }
   3915 
   3916   void SetHeader() {
   3917     header.SetCmd<ValueType>();
   3918   }
   3919 
   3920   void Init(GLuint _shader, uint32 _bucket_id) {
   3921     SetHeader();
   3922     shader = _shader;
   3923     bucket_id = _bucket_id;
   3924   }
   3925 
   3926   void* Set(void* cmd, GLuint _shader, uint32 _bucket_id) {
   3927     static_cast<ValueType*>(cmd)->Init(_shader, _bucket_id);
   3928     return NextCmdAddress<ValueType>(cmd);
   3929   }
   3930 
   3931   gpu::CommandHeader header;
   3932   uint32 shader;
   3933   uint32 bucket_id;
   3934 };
   3935 
   3936 COMPILE_ASSERT(sizeof(GetShaderSource) == 12,
   3937                Sizeof_GetShaderSource_is_not_12);
   3938 COMPILE_ASSERT(offsetof(GetShaderSource, header) == 0,
   3939                OffsetOf_GetShaderSource_header_not_0);
   3940 COMPILE_ASSERT(offsetof(GetShaderSource, shader) == 4,
   3941                OffsetOf_GetShaderSource_shader_not_4);
   3942 COMPILE_ASSERT(offsetof(GetShaderSource, bucket_id) == 8,
   3943                OffsetOf_GetShaderSource_bucket_id_not_8);
   3944 
   3945 struct GetString {
   3946   typedef GetString ValueType;
   3947   static const CommandId kCmdId = kGetString;
   3948   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3949 
   3950   static uint32 ComputeSize() {
   3951     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3952   }
   3953 
   3954   void SetHeader() {
   3955     header.SetCmd<ValueType>();
   3956   }
   3957 
   3958   void Init(GLenum _name, uint32 _bucket_id) {
   3959     SetHeader();
   3960     name = _name;
   3961     bucket_id = _bucket_id;
   3962   }
   3963 
   3964   void* Set(void* cmd, GLenum _name, uint32 _bucket_id) {
   3965     static_cast<ValueType*>(cmd)->Init(_name, _bucket_id);
   3966     return NextCmdAddress<ValueType>(cmd);
   3967   }
   3968 
   3969   gpu::CommandHeader header;
   3970   uint32 name;
   3971   uint32 bucket_id;
   3972 };
   3973 
   3974 COMPILE_ASSERT(sizeof(GetString) == 12,
   3975                Sizeof_GetString_is_not_12);
   3976 COMPILE_ASSERT(offsetof(GetString, header) == 0,
   3977                OffsetOf_GetString_header_not_0);
   3978 COMPILE_ASSERT(offsetof(GetString, name) == 4,
   3979                OffsetOf_GetString_name_not_4);
   3980 COMPILE_ASSERT(offsetof(GetString, bucket_id) == 8,
   3981                OffsetOf_GetString_bucket_id_not_8);
   3982 
   3983 struct GetTexParameterfv {
   3984   typedef GetTexParameterfv ValueType;
   3985   static const CommandId kCmdId = kGetTexParameterfv;
   3986   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   3987 
   3988   typedef SizedResult<GLfloat> Result;
   3989 
   3990   static uint32 ComputeSize() {
   3991     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   3992   }
   3993 
   3994   void SetHeader() {
   3995     header.SetCmd<ValueType>();
   3996   }
   3997 
   3998   void Init(
   3999       GLenum _target, GLenum _pname, uint32 _params_shm_id,
   4000       uint32 _params_shm_offset) {
   4001     SetHeader();
   4002     target = _target;
   4003     pname = _pname;
   4004     params_shm_id = _params_shm_id;
   4005     params_shm_offset = _params_shm_offset;
   4006   }
   4007 
   4008   void* Set(
   4009       void* cmd, GLenum _target, GLenum _pname, uint32 _params_shm_id,
   4010       uint32 _params_shm_offset) {
   4011     static_cast<ValueType*>(
   4012         cmd)->Init(_target, _pname, _params_shm_id, _params_shm_offset);
   4013     return NextCmdAddress<ValueType>(cmd);
   4014   }
   4015 
   4016   gpu::CommandHeader header;
   4017   uint32 target;
   4018   uint32 pname;
   4019   uint32 params_shm_id;
   4020   uint32 params_shm_offset;
   4021 };
   4022 
   4023 COMPILE_ASSERT(sizeof(GetTexParameterfv) == 20,
   4024                Sizeof_GetTexParameterfv_is_not_20);
   4025 COMPILE_ASSERT(offsetof(GetTexParameterfv, header) == 0,
   4026                OffsetOf_GetTexParameterfv_header_not_0);
   4027 COMPILE_ASSERT(offsetof(GetTexParameterfv, target) == 4,
   4028                OffsetOf_GetTexParameterfv_target_not_4);
   4029 COMPILE_ASSERT(offsetof(GetTexParameterfv, pname) == 8,
   4030                OffsetOf_GetTexParameterfv_pname_not_8);
   4031 COMPILE_ASSERT(offsetof(GetTexParameterfv, params_shm_id) == 12,
   4032                OffsetOf_GetTexParameterfv_params_shm_id_not_12);
   4033 COMPILE_ASSERT(offsetof(GetTexParameterfv, params_shm_offset) == 16,
   4034                OffsetOf_GetTexParameterfv_params_shm_offset_not_16);
   4035 
   4036 struct GetTexParameteriv {
   4037   typedef GetTexParameteriv ValueType;
   4038   static const CommandId kCmdId = kGetTexParameteriv;
   4039   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4040 
   4041   typedef SizedResult<GLint> Result;
   4042 
   4043   static uint32 ComputeSize() {
   4044     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4045   }
   4046 
   4047   void SetHeader() {
   4048     header.SetCmd<ValueType>();
   4049   }
   4050 
   4051   void Init(
   4052       GLenum _target, GLenum _pname, uint32 _params_shm_id,
   4053       uint32 _params_shm_offset) {
   4054     SetHeader();
   4055     target = _target;
   4056     pname = _pname;
   4057     params_shm_id = _params_shm_id;
   4058     params_shm_offset = _params_shm_offset;
   4059   }
   4060 
   4061   void* Set(
   4062       void* cmd, GLenum _target, GLenum _pname, uint32 _params_shm_id,
   4063       uint32 _params_shm_offset) {
   4064     static_cast<ValueType*>(
   4065         cmd)->Init(_target, _pname, _params_shm_id, _params_shm_offset);
   4066     return NextCmdAddress<ValueType>(cmd);
   4067   }
   4068 
   4069   gpu::CommandHeader header;
   4070   uint32 target;
   4071   uint32 pname;
   4072   uint32 params_shm_id;
   4073   uint32 params_shm_offset;
   4074 };
   4075 
   4076 COMPILE_ASSERT(sizeof(GetTexParameteriv) == 20,
   4077                Sizeof_GetTexParameteriv_is_not_20);
   4078 COMPILE_ASSERT(offsetof(GetTexParameteriv, header) == 0,
   4079                OffsetOf_GetTexParameteriv_header_not_0);
   4080 COMPILE_ASSERT(offsetof(GetTexParameteriv, target) == 4,
   4081                OffsetOf_GetTexParameteriv_target_not_4);
   4082 COMPILE_ASSERT(offsetof(GetTexParameteriv, pname) == 8,
   4083                OffsetOf_GetTexParameteriv_pname_not_8);
   4084 COMPILE_ASSERT(offsetof(GetTexParameteriv, params_shm_id) == 12,
   4085                OffsetOf_GetTexParameteriv_params_shm_id_not_12);
   4086 COMPILE_ASSERT(offsetof(GetTexParameteriv, params_shm_offset) == 16,
   4087                OffsetOf_GetTexParameteriv_params_shm_offset_not_16);
   4088 
   4089 struct GetUniformfv {
   4090   typedef GetUniformfv ValueType;
   4091   static const CommandId kCmdId = kGetUniformfv;
   4092   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4093 
   4094   typedef SizedResult<GLfloat> Result;
   4095 
   4096   static uint32 ComputeSize() {
   4097     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4098   }
   4099 
   4100   void SetHeader() {
   4101     header.SetCmd<ValueType>();
   4102   }
   4103 
   4104   void Init(
   4105       GLuint _program, GLint _location, uint32 _params_shm_id,
   4106       uint32 _params_shm_offset) {
   4107     SetHeader();
   4108     program = _program;
   4109     location = _location;
   4110     params_shm_id = _params_shm_id;
   4111     params_shm_offset = _params_shm_offset;
   4112   }
   4113 
   4114   void* Set(
   4115       void* cmd, GLuint _program, GLint _location, uint32 _params_shm_id,
   4116       uint32 _params_shm_offset) {
   4117     static_cast<ValueType*>(
   4118         cmd)->Init(_program, _location, _params_shm_id, _params_shm_offset);
   4119     return NextCmdAddress<ValueType>(cmd);
   4120   }
   4121 
   4122   gpu::CommandHeader header;
   4123   uint32 program;
   4124   int32 location;
   4125   uint32 params_shm_id;
   4126   uint32 params_shm_offset;
   4127 };
   4128 
   4129 COMPILE_ASSERT(sizeof(GetUniformfv) == 20,
   4130                Sizeof_GetUniformfv_is_not_20);
   4131 COMPILE_ASSERT(offsetof(GetUniformfv, header) == 0,
   4132                OffsetOf_GetUniformfv_header_not_0);
   4133 COMPILE_ASSERT(offsetof(GetUniformfv, program) == 4,
   4134                OffsetOf_GetUniformfv_program_not_4);
   4135 COMPILE_ASSERT(offsetof(GetUniformfv, location) == 8,
   4136                OffsetOf_GetUniformfv_location_not_8);
   4137 COMPILE_ASSERT(offsetof(GetUniformfv, params_shm_id) == 12,
   4138                OffsetOf_GetUniformfv_params_shm_id_not_12);
   4139 COMPILE_ASSERT(offsetof(GetUniformfv, params_shm_offset) == 16,
   4140                OffsetOf_GetUniformfv_params_shm_offset_not_16);
   4141 
   4142 struct GetUniformiv {
   4143   typedef GetUniformiv ValueType;
   4144   static const CommandId kCmdId = kGetUniformiv;
   4145   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4146 
   4147   typedef SizedResult<GLint> Result;
   4148 
   4149   static uint32 ComputeSize() {
   4150     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4151   }
   4152 
   4153   void SetHeader() {
   4154     header.SetCmd<ValueType>();
   4155   }
   4156 
   4157   void Init(
   4158       GLuint _program, GLint _location, uint32 _params_shm_id,
   4159       uint32 _params_shm_offset) {
   4160     SetHeader();
   4161     program = _program;
   4162     location = _location;
   4163     params_shm_id = _params_shm_id;
   4164     params_shm_offset = _params_shm_offset;
   4165   }
   4166 
   4167   void* Set(
   4168       void* cmd, GLuint _program, GLint _location, uint32 _params_shm_id,
   4169       uint32 _params_shm_offset) {
   4170     static_cast<ValueType*>(
   4171         cmd)->Init(_program, _location, _params_shm_id, _params_shm_offset);
   4172     return NextCmdAddress<ValueType>(cmd);
   4173   }
   4174 
   4175   gpu::CommandHeader header;
   4176   uint32 program;
   4177   int32 location;
   4178   uint32 params_shm_id;
   4179   uint32 params_shm_offset;
   4180 };
   4181 
   4182 COMPILE_ASSERT(sizeof(GetUniformiv) == 20,
   4183                Sizeof_GetUniformiv_is_not_20);
   4184 COMPILE_ASSERT(offsetof(GetUniformiv, header) == 0,
   4185                OffsetOf_GetUniformiv_header_not_0);
   4186 COMPILE_ASSERT(offsetof(GetUniformiv, program) == 4,
   4187                OffsetOf_GetUniformiv_program_not_4);
   4188 COMPILE_ASSERT(offsetof(GetUniformiv, location) == 8,
   4189                OffsetOf_GetUniformiv_location_not_8);
   4190 COMPILE_ASSERT(offsetof(GetUniformiv, params_shm_id) == 12,
   4191                OffsetOf_GetUniformiv_params_shm_id_not_12);
   4192 COMPILE_ASSERT(offsetof(GetUniformiv, params_shm_offset) == 16,
   4193                OffsetOf_GetUniformiv_params_shm_offset_not_16);
   4194 
   4195 struct GetVertexAttribfv {
   4196   typedef GetVertexAttribfv ValueType;
   4197   static const CommandId kCmdId = kGetVertexAttribfv;
   4198   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4199 
   4200   typedef SizedResult<GLfloat> Result;
   4201 
   4202   static uint32 ComputeSize() {
   4203     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4204   }
   4205 
   4206   void SetHeader() {
   4207     header.SetCmd<ValueType>();
   4208   }
   4209 
   4210   void Init(
   4211       GLuint _index, GLenum _pname, uint32 _params_shm_id,
   4212       uint32 _params_shm_offset) {
   4213     SetHeader();
   4214     index = _index;
   4215     pname = _pname;
   4216     params_shm_id = _params_shm_id;
   4217     params_shm_offset = _params_shm_offset;
   4218   }
   4219 
   4220   void* Set(
   4221       void* cmd, GLuint _index, GLenum _pname, uint32 _params_shm_id,
   4222       uint32 _params_shm_offset) {
   4223     static_cast<ValueType*>(
   4224         cmd)->Init(_index, _pname, _params_shm_id, _params_shm_offset);
   4225     return NextCmdAddress<ValueType>(cmd);
   4226   }
   4227 
   4228   gpu::CommandHeader header;
   4229   uint32 index;
   4230   uint32 pname;
   4231   uint32 params_shm_id;
   4232   uint32 params_shm_offset;
   4233 };
   4234 
   4235 COMPILE_ASSERT(sizeof(GetVertexAttribfv) == 20,
   4236                Sizeof_GetVertexAttribfv_is_not_20);
   4237 COMPILE_ASSERT(offsetof(GetVertexAttribfv, header) == 0,
   4238                OffsetOf_GetVertexAttribfv_header_not_0);
   4239 COMPILE_ASSERT(offsetof(GetVertexAttribfv, index) == 4,
   4240                OffsetOf_GetVertexAttribfv_index_not_4);
   4241 COMPILE_ASSERT(offsetof(GetVertexAttribfv, pname) == 8,
   4242                OffsetOf_GetVertexAttribfv_pname_not_8);
   4243 COMPILE_ASSERT(offsetof(GetVertexAttribfv, params_shm_id) == 12,
   4244                OffsetOf_GetVertexAttribfv_params_shm_id_not_12);
   4245 COMPILE_ASSERT(offsetof(GetVertexAttribfv, params_shm_offset) == 16,
   4246                OffsetOf_GetVertexAttribfv_params_shm_offset_not_16);
   4247 
   4248 struct GetVertexAttribiv {
   4249   typedef GetVertexAttribiv ValueType;
   4250   static const CommandId kCmdId = kGetVertexAttribiv;
   4251   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4252 
   4253   typedef SizedResult<GLint> Result;
   4254 
   4255   static uint32 ComputeSize() {
   4256     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4257   }
   4258 
   4259   void SetHeader() {
   4260     header.SetCmd<ValueType>();
   4261   }
   4262 
   4263   void Init(
   4264       GLuint _index, GLenum _pname, uint32 _params_shm_id,
   4265       uint32 _params_shm_offset) {
   4266     SetHeader();
   4267     index = _index;
   4268     pname = _pname;
   4269     params_shm_id = _params_shm_id;
   4270     params_shm_offset = _params_shm_offset;
   4271   }
   4272 
   4273   void* Set(
   4274       void* cmd, GLuint _index, GLenum _pname, uint32 _params_shm_id,
   4275       uint32 _params_shm_offset) {
   4276     static_cast<ValueType*>(
   4277         cmd)->Init(_index, _pname, _params_shm_id, _params_shm_offset);
   4278     return NextCmdAddress<ValueType>(cmd);
   4279   }
   4280 
   4281   gpu::CommandHeader header;
   4282   uint32 index;
   4283   uint32 pname;
   4284   uint32 params_shm_id;
   4285   uint32 params_shm_offset;
   4286 };
   4287 
   4288 COMPILE_ASSERT(sizeof(GetVertexAttribiv) == 20,
   4289                Sizeof_GetVertexAttribiv_is_not_20);
   4290 COMPILE_ASSERT(offsetof(GetVertexAttribiv, header) == 0,
   4291                OffsetOf_GetVertexAttribiv_header_not_0);
   4292 COMPILE_ASSERT(offsetof(GetVertexAttribiv, index) == 4,
   4293                OffsetOf_GetVertexAttribiv_index_not_4);
   4294 COMPILE_ASSERT(offsetof(GetVertexAttribiv, pname) == 8,
   4295                OffsetOf_GetVertexAttribiv_pname_not_8);
   4296 COMPILE_ASSERT(offsetof(GetVertexAttribiv, params_shm_id) == 12,
   4297                OffsetOf_GetVertexAttribiv_params_shm_id_not_12);
   4298 COMPILE_ASSERT(offsetof(GetVertexAttribiv, params_shm_offset) == 16,
   4299                OffsetOf_GetVertexAttribiv_params_shm_offset_not_16);
   4300 
   4301 struct GetVertexAttribPointerv {
   4302   typedef GetVertexAttribPointerv ValueType;
   4303   static const CommandId kCmdId = kGetVertexAttribPointerv;
   4304   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4305 
   4306   typedef SizedResult<GLuint> Result;
   4307 
   4308   static uint32 ComputeSize() {
   4309     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4310   }
   4311 
   4312   void SetHeader() {
   4313     header.SetCmd<ValueType>();
   4314   }
   4315 
   4316   void Init(
   4317       GLuint _index, GLenum _pname, uint32 _pointer_shm_id,
   4318       uint32 _pointer_shm_offset) {
   4319     SetHeader();
   4320     index = _index;
   4321     pname = _pname;
   4322     pointer_shm_id = _pointer_shm_id;
   4323     pointer_shm_offset = _pointer_shm_offset;
   4324   }
   4325 
   4326   void* Set(
   4327       void* cmd, GLuint _index, GLenum _pname, uint32 _pointer_shm_id,
   4328       uint32 _pointer_shm_offset) {
   4329     static_cast<ValueType*>(
   4330         cmd)->Init(_index, _pname, _pointer_shm_id, _pointer_shm_offset);
   4331     return NextCmdAddress<ValueType>(cmd);
   4332   }
   4333 
   4334   gpu::CommandHeader header;
   4335   uint32 index;
   4336   uint32 pname;
   4337   uint32 pointer_shm_id;
   4338   uint32 pointer_shm_offset;
   4339 };
   4340 
   4341 COMPILE_ASSERT(sizeof(GetVertexAttribPointerv) == 20,
   4342                Sizeof_GetVertexAttribPointerv_is_not_20);
   4343 COMPILE_ASSERT(offsetof(GetVertexAttribPointerv, header) == 0,
   4344                OffsetOf_GetVertexAttribPointerv_header_not_0);
   4345 COMPILE_ASSERT(offsetof(GetVertexAttribPointerv, index) == 4,
   4346                OffsetOf_GetVertexAttribPointerv_index_not_4);
   4347 COMPILE_ASSERT(offsetof(GetVertexAttribPointerv, pname) == 8,
   4348                OffsetOf_GetVertexAttribPointerv_pname_not_8);
   4349 COMPILE_ASSERT(offsetof(GetVertexAttribPointerv, pointer_shm_id) == 12,
   4350                OffsetOf_GetVertexAttribPointerv_pointer_shm_id_not_12);
   4351 COMPILE_ASSERT(offsetof(GetVertexAttribPointerv, pointer_shm_offset) == 16,
   4352                OffsetOf_GetVertexAttribPointerv_pointer_shm_offset_not_16);
   4353 
   4354 struct Hint {
   4355   typedef Hint ValueType;
   4356   static const CommandId kCmdId = kHint;
   4357   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4358 
   4359   static uint32 ComputeSize() {
   4360     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4361   }
   4362 
   4363   void SetHeader() {
   4364     header.SetCmd<ValueType>();
   4365   }
   4366 
   4367   void Init(GLenum _target, GLenum _mode) {
   4368     SetHeader();
   4369     target = _target;
   4370     mode = _mode;
   4371   }
   4372 
   4373   void* Set(void* cmd, GLenum _target, GLenum _mode) {
   4374     static_cast<ValueType*>(cmd)->Init(_target, _mode);
   4375     return NextCmdAddress<ValueType>(cmd);
   4376   }
   4377 
   4378   gpu::CommandHeader header;
   4379   uint32 target;
   4380   uint32 mode;
   4381 };
   4382 
   4383 COMPILE_ASSERT(sizeof(Hint) == 12,
   4384                Sizeof_Hint_is_not_12);
   4385 COMPILE_ASSERT(offsetof(Hint, header) == 0,
   4386                OffsetOf_Hint_header_not_0);
   4387 COMPILE_ASSERT(offsetof(Hint, target) == 4,
   4388                OffsetOf_Hint_target_not_4);
   4389 COMPILE_ASSERT(offsetof(Hint, mode) == 8,
   4390                OffsetOf_Hint_mode_not_8);
   4391 
   4392 struct IsBuffer {
   4393   typedef IsBuffer ValueType;
   4394   static const CommandId kCmdId = kIsBuffer;
   4395   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4396 
   4397   typedef uint32 Result;
   4398 
   4399   static uint32 ComputeSize() {
   4400     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4401   }
   4402 
   4403   void SetHeader() {
   4404     header.SetCmd<ValueType>();
   4405   }
   4406 
   4407   void Init(GLuint _buffer, uint32 _result_shm_id, uint32 _result_shm_offset) {
   4408     SetHeader();
   4409     buffer = _buffer;
   4410     result_shm_id = _result_shm_id;
   4411     result_shm_offset = _result_shm_offset;
   4412   }
   4413 
   4414   void* Set(
   4415       void* cmd, GLuint _buffer, uint32 _result_shm_id,
   4416       uint32 _result_shm_offset) {
   4417     static_cast<ValueType*>(
   4418         cmd)->Init(_buffer, _result_shm_id, _result_shm_offset);
   4419     return NextCmdAddress<ValueType>(cmd);
   4420   }
   4421 
   4422   gpu::CommandHeader header;
   4423   uint32 buffer;
   4424   uint32 result_shm_id;
   4425   uint32 result_shm_offset;
   4426 };
   4427 
   4428 COMPILE_ASSERT(sizeof(IsBuffer) == 16,
   4429                Sizeof_IsBuffer_is_not_16);
   4430 COMPILE_ASSERT(offsetof(IsBuffer, header) == 0,
   4431                OffsetOf_IsBuffer_header_not_0);
   4432 COMPILE_ASSERT(offsetof(IsBuffer, buffer) == 4,
   4433                OffsetOf_IsBuffer_buffer_not_4);
   4434 COMPILE_ASSERT(offsetof(IsBuffer, result_shm_id) == 8,
   4435                OffsetOf_IsBuffer_result_shm_id_not_8);
   4436 COMPILE_ASSERT(offsetof(IsBuffer, result_shm_offset) == 12,
   4437                OffsetOf_IsBuffer_result_shm_offset_not_12);
   4438 
   4439 struct IsEnabled {
   4440   typedef IsEnabled ValueType;
   4441   static const CommandId kCmdId = kIsEnabled;
   4442   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4443 
   4444   typedef uint32 Result;
   4445 
   4446   static uint32 ComputeSize() {
   4447     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4448   }
   4449 
   4450   void SetHeader() {
   4451     header.SetCmd<ValueType>();
   4452   }
   4453 
   4454   void Init(GLenum _cap, uint32 _result_shm_id, uint32 _result_shm_offset) {
   4455     SetHeader();
   4456     cap = _cap;
   4457     result_shm_id = _result_shm_id;
   4458     result_shm_offset = _result_shm_offset;
   4459   }
   4460 
   4461   void* Set(
   4462       void* cmd, GLenum _cap, uint32 _result_shm_id,
   4463       uint32 _result_shm_offset) {
   4464     static_cast<ValueType*>(
   4465         cmd)->Init(_cap, _result_shm_id, _result_shm_offset);
   4466     return NextCmdAddress<ValueType>(cmd);
   4467   }
   4468 
   4469   gpu::CommandHeader header;
   4470   uint32 cap;
   4471   uint32 result_shm_id;
   4472   uint32 result_shm_offset;
   4473 };
   4474 
   4475 COMPILE_ASSERT(sizeof(IsEnabled) == 16,
   4476                Sizeof_IsEnabled_is_not_16);
   4477 COMPILE_ASSERT(offsetof(IsEnabled, header) == 0,
   4478                OffsetOf_IsEnabled_header_not_0);
   4479 COMPILE_ASSERT(offsetof(IsEnabled, cap) == 4,
   4480                OffsetOf_IsEnabled_cap_not_4);
   4481 COMPILE_ASSERT(offsetof(IsEnabled, result_shm_id) == 8,
   4482                OffsetOf_IsEnabled_result_shm_id_not_8);
   4483 COMPILE_ASSERT(offsetof(IsEnabled, result_shm_offset) == 12,
   4484                OffsetOf_IsEnabled_result_shm_offset_not_12);
   4485 
   4486 struct IsFramebuffer {
   4487   typedef IsFramebuffer ValueType;
   4488   static const CommandId kCmdId = kIsFramebuffer;
   4489   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4490 
   4491   typedef uint32 Result;
   4492 
   4493   static uint32 ComputeSize() {
   4494     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4495   }
   4496 
   4497   void SetHeader() {
   4498     header.SetCmd<ValueType>();
   4499   }
   4500 
   4501   void Init(
   4502       GLuint _framebuffer, uint32 _result_shm_id, uint32 _result_shm_offset) {
   4503     SetHeader();
   4504     framebuffer = _framebuffer;
   4505     result_shm_id = _result_shm_id;
   4506     result_shm_offset = _result_shm_offset;
   4507   }
   4508 
   4509   void* Set(
   4510       void* cmd, GLuint _framebuffer, uint32 _result_shm_id,
   4511       uint32 _result_shm_offset) {
   4512     static_cast<ValueType*>(
   4513         cmd)->Init(_framebuffer, _result_shm_id, _result_shm_offset);
   4514     return NextCmdAddress<ValueType>(cmd);
   4515   }
   4516 
   4517   gpu::CommandHeader header;
   4518   uint32 framebuffer;
   4519   uint32 result_shm_id;
   4520   uint32 result_shm_offset;
   4521 };
   4522 
   4523 COMPILE_ASSERT(sizeof(IsFramebuffer) == 16,
   4524                Sizeof_IsFramebuffer_is_not_16);
   4525 COMPILE_ASSERT(offsetof(IsFramebuffer, header) == 0,
   4526                OffsetOf_IsFramebuffer_header_not_0);
   4527 COMPILE_ASSERT(offsetof(IsFramebuffer, framebuffer) == 4,
   4528                OffsetOf_IsFramebuffer_framebuffer_not_4);
   4529 COMPILE_ASSERT(offsetof(IsFramebuffer, result_shm_id) == 8,
   4530                OffsetOf_IsFramebuffer_result_shm_id_not_8);
   4531 COMPILE_ASSERT(offsetof(IsFramebuffer, result_shm_offset) == 12,
   4532                OffsetOf_IsFramebuffer_result_shm_offset_not_12);
   4533 
   4534 struct IsProgram {
   4535   typedef IsProgram ValueType;
   4536   static const CommandId kCmdId = kIsProgram;
   4537   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4538 
   4539   typedef uint32 Result;
   4540 
   4541   static uint32 ComputeSize() {
   4542     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4543   }
   4544 
   4545   void SetHeader() {
   4546     header.SetCmd<ValueType>();
   4547   }
   4548 
   4549   void Init(
   4550       GLuint _program, uint32 _result_shm_id, uint32 _result_shm_offset) {
   4551     SetHeader();
   4552     program = _program;
   4553     result_shm_id = _result_shm_id;
   4554     result_shm_offset = _result_shm_offset;
   4555   }
   4556 
   4557   void* Set(
   4558       void* cmd, GLuint _program, uint32 _result_shm_id,
   4559       uint32 _result_shm_offset) {
   4560     static_cast<ValueType*>(
   4561         cmd)->Init(_program, _result_shm_id, _result_shm_offset);
   4562     return NextCmdAddress<ValueType>(cmd);
   4563   }
   4564 
   4565   gpu::CommandHeader header;
   4566   uint32 program;
   4567   uint32 result_shm_id;
   4568   uint32 result_shm_offset;
   4569 };
   4570 
   4571 COMPILE_ASSERT(sizeof(IsProgram) == 16,
   4572                Sizeof_IsProgram_is_not_16);
   4573 COMPILE_ASSERT(offsetof(IsProgram, header) == 0,
   4574                OffsetOf_IsProgram_header_not_0);
   4575 COMPILE_ASSERT(offsetof(IsProgram, program) == 4,
   4576                OffsetOf_IsProgram_program_not_4);
   4577 COMPILE_ASSERT(offsetof(IsProgram, result_shm_id) == 8,
   4578                OffsetOf_IsProgram_result_shm_id_not_8);
   4579 COMPILE_ASSERT(offsetof(IsProgram, result_shm_offset) == 12,
   4580                OffsetOf_IsProgram_result_shm_offset_not_12);
   4581 
   4582 struct IsRenderbuffer {
   4583   typedef IsRenderbuffer ValueType;
   4584   static const CommandId kCmdId = kIsRenderbuffer;
   4585   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4586 
   4587   typedef uint32 Result;
   4588 
   4589   static uint32 ComputeSize() {
   4590     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4591   }
   4592 
   4593   void SetHeader() {
   4594     header.SetCmd<ValueType>();
   4595   }
   4596 
   4597   void Init(
   4598       GLuint _renderbuffer, uint32 _result_shm_id, uint32 _result_shm_offset) {
   4599     SetHeader();
   4600     renderbuffer = _renderbuffer;
   4601     result_shm_id = _result_shm_id;
   4602     result_shm_offset = _result_shm_offset;
   4603   }
   4604 
   4605   void* Set(
   4606       void* cmd, GLuint _renderbuffer, uint32 _result_shm_id,
   4607       uint32 _result_shm_offset) {
   4608     static_cast<ValueType*>(
   4609         cmd)->Init(_renderbuffer, _result_shm_id, _result_shm_offset);
   4610     return NextCmdAddress<ValueType>(cmd);
   4611   }
   4612 
   4613   gpu::CommandHeader header;
   4614   uint32 renderbuffer;
   4615   uint32 result_shm_id;
   4616   uint32 result_shm_offset;
   4617 };
   4618 
   4619 COMPILE_ASSERT(sizeof(IsRenderbuffer) == 16,
   4620                Sizeof_IsRenderbuffer_is_not_16);
   4621 COMPILE_ASSERT(offsetof(IsRenderbuffer, header) == 0,
   4622                OffsetOf_IsRenderbuffer_header_not_0);
   4623 COMPILE_ASSERT(offsetof(IsRenderbuffer, renderbuffer) == 4,
   4624                OffsetOf_IsRenderbuffer_renderbuffer_not_4);
   4625 COMPILE_ASSERT(offsetof(IsRenderbuffer, result_shm_id) == 8,
   4626                OffsetOf_IsRenderbuffer_result_shm_id_not_8);
   4627 COMPILE_ASSERT(offsetof(IsRenderbuffer, result_shm_offset) == 12,
   4628                OffsetOf_IsRenderbuffer_result_shm_offset_not_12);
   4629 
   4630 struct IsShader {
   4631   typedef IsShader ValueType;
   4632   static const CommandId kCmdId = kIsShader;
   4633   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4634 
   4635   typedef uint32 Result;
   4636 
   4637   static uint32 ComputeSize() {
   4638     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4639   }
   4640 
   4641   void SetHeader() {
   4642     header.SetCmd<ValueType>();
   4643   }
   4644 
   4645   void Init(GLuint _shader, uint32 _result_shm_id, uint32 _result_shm_offset) {
   4646     SetHeader();
   4647     shader = _shader;
   4648     result_shm_id = _result_shm_id;
   4649     result_shm_offset = _result_shm_offset;
   4650   }
   4651 
   4652   void* Set(
   4653       void* cmd, GLuint _shader, uint32 _result_shm_id,
   4654       uint32 _result_shm_offset) {
   4655     static_cast<ValueType*>(
   4656         cmd)->Init(_shader, _result_shm_id, _result_shm_offset);
   4657     return NextCmdAddress<ValueType>(cmd);
   4658   }
   4659 
   4660   gpu::CommandHeader header;
   4661   uint32 shader;
   4662   uint32 result_shm_id;
   4663   uint32 result_shm_offset;
   4664 };
   4665 
   4666 COMPILE_ASSERT(sizeof(IsShader) == 16,
   4667                Sizeof_IsShader_is_not_16);
   4668 COMPILE_ASSERT(offsetof(IsShader, header) == 0,
   4669                OffsetOf_IsShader_header_not_0);
   4670 COMPILE_ASSERT(offsetof(IsShader, shader) == 4,
   4671                OffsetOf_IsShader_shader_not_4);
   4672 COMPILE_ASSERT(offsetof(IsShader, result_shm_id) == 8,
   4673                OffsetOf_IsShader_result_shm_id_not_8);
   4674 COMPILE_ASSERT(offsetof(IsShader, result_shm_offset) == 12,
   4675                OffsetOf_IsShader_result_shm_offset_not_12);
   4676 
   4677 struct IsTexture {
   4678   typedef IsTexture ValueType;
   4679   static const CommandId kCmdId = kIsTexture;
   4680   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4681 
   4682   typedef uint32 Result;
   4683 
   4684   static uint32 ComputeSize() {
   4685     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4686   }
   4687 
   4688   void SetHeader() {
   4689     header.SetCmd<ValueType>();
   4690   }
   4691 
   4692   void Init(
   4693       GLuint _texture, uint32 _result_shm_id, uint32 _result_shm_offset) {
   4694     SetHeader();
   4695     texture = _texture;
   4696     result_shm_id = _result_shm_id;
   4697     result_shm_offset = _result_shm_offset;
   4698   }
   4699 
   4700   void* Set(
   4701       void* cmd, GLuint _texture, uint32 _result_shm_id,
   4702       uint32 _result_shm_offset) {
   4703     static_cast<ValueType*>(
   4704         cmd)->Init(_texture, _result_shm_id, _result_shm_offset);
   4705     return NextCmdAddress<ValueType>(cmd);
   4706   }
   4707 
   4708   gpu::CommandHeader header;
   4709   uint32 texture;
   4710   uint32 result_shm_id;
   4711   uint32 result_shm_offset;
   4712 };
   4713 
   4714 COMPILE_ASSERT(sizeof(IsTexture) == 16,
   4715                Sizeof_IsTexture_is_not_16);
   4716 COMPILE_ASSERT(offsetof(IsTexture, header) == 0,
   4717                OffsetOf_IsTexture_header_not_0);
   4718 COMPILE_ASSERT(offsetof(IsTexture, texture) == 4,
   4719                OffsetOf_IsTexture_texture_not_4);
   4720 COMPILE_ASSERT(offsetof(IsTexture, result_shm_id) == 8,
   4721                OffsetOf_IsTexture_result_shm_id_not_8);
   4722 COMPILE_ASSERT(offsetof(IsTexture, result_shm_offset) == 12,
   4723                OffsetOf_IsTexture_result_shm_offset_not_12);
   4724 
   4725 struct LineWidth {
   4726   typedef LineWidth ValueType;
   4727   static const CommandId kCmdId = kLineWidth;
   4728   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4729 
   4730   static uint32 ComputeSize() {
   4731     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4732   }
   4733 
   4734   void SetHeader() {
   4735     header.SetCmd<ValueType>();
   4736   }
   4737 
   4738   void Init(GLfloat _width) {
   4739     SetHeader();
   4740     width = _width;
   4741   }
   4742 
   4743   void* Set(void* cmd, GLfloat _width) {
   4744     static_cast<ValueType*>(cmd)->Init(_width);
   4745     return NextCmdAddress<ValueType>(cmd);
   4746   }
   4747 
   4748   gpu::CommandHeader header;
   4749   float width;
   4750 };
   4751 
   4752 COMPILE_ASSERT(sizeof(LineWidth) == 8,
   4753                Sizeof_LineWidth_is_not_8);
   4754 COMPILE_ASSERT(offsetof(LineWidth, header) == 0,
   4755                OffsetOf_LineWidth_header_not_0);
   4756 COMPILE_ASSERT(offsetof(LineWidth, width) == 4,
   4757                OffsetOf_LineWidth_width_not_4);
   4758 
   4759 struct LinkProgram {
   4760   typedef LinkProgram ValueType;
   4761   static const CommandId kCmdId = kLinkProgram;
   4762   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4763 
   4764   static uint32 ComputeSize() {
   4765     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4766   }
   4767 
   4768   void SetHeader() {
   4769     header.SetCmd<ValueType>();
   4770   }
   4771 
   4772   void Init(GLuint _program) {
   4773     SetHeader();
   4774     program = _program;
   4775   }
   4776 
   4777   void* Set(void* cmd, GLuint _program) {
   4778     static_cast<ValueType*>(cmd)->Init(_program);
   4779     return NextCmdAddress<ValueType>(cmd);
   4780   }
   4781 
   4782   gpu::CommandHeader header;
   4783   uint32 program;
   4784 };
   4785 
   4786 COMPILE_ASSERT(sizeof(LinkProgram) == 8,
   4787                Sizeof_LinkProgram_is_not_8);
   4788 COMPILE_ASSERT(offsetof(LinkProgram, header) == 0,
   4789                OffsetOf_LinkProgram_header_not_0);
   4790 COMPILE_ASSERT(offsetof(LinkProgram, program) == 4,
   4791                OffsetOf_LinkProgram_program_not_4);
   4792 
   4793 struct PixelStorei {
   4794   typedef PixelStorei ValueType;
   4795   static const CommandId kCmdId = kPixelStorei;
   4796   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4797 
   4798   static uint32 ComputeSize() {
   4799     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4800   }
   4801 
   4802   void SetHeader() {
   4803     header.SetCmd<ValueType>();
   4804   }
   4805 
   4806   void Init(GLenum _pname, GLint _param) {
   4807     SetHeader();
   4808     pname = _pname;
   4809     param = _param;
   4810   }
   4811 
   4812   void* Set(void* cmd, GLenum _pname, GLint _param) {
   4813     static_cast<ValueType*>(cmd)->Init(_pname, _param);
   4814     return NextCmdAddress<ValueType>(cmd);
   4815   }
   4816 
   4817   gpu::CommandHeader header;
   4818   uint32 pname;
   4819   int32 param;
   4820 };
   4821 
   4822 COMPILE_ASSERT(sizeof(PixelStorei) == 12,
   4823                Sizeof_PixelStorei_is_not_12);
   4824 COMPILE_ASSERT(offsetof(PixelStorei, header) == 0,
   4825                OffsetOf_PixelStorei_header_not_0);
   4826 COMPILE_ASSERT(offsetof(PixelStorei, pname) == 4,
   4827                OffsetOf_PixelStorei_pname_not_4);
   4828 COMPILE_ASSERT(offsetof(PixelStorei, param) == 8,
   4829                OffsetOf_PixelStorei_param_not_8);
   4830 
   4831 struct PolygonOffset {
   4832   typedef PolygonOffset ValueType;
   4833   static const CommandId kCmdId = kPolygonOffset;
   4834   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4835 
   4836   static uint32 ComputeSize() {
   4837     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4838   }
   4839 
   4840   void SetHeader() {
   4841     header.SetCmd<ValueType>();
   4842   }
   4843 
   4844   void Init(GLfloat _factor, GLfloat _units) {
   4845     SetHeader();
   4846     factor = _factor;
   4847     units = _units;
   4848   }
   4849 
   4850   void* Set(void* cmd, GLfloat _factor, GLfloat _units) {
   4851     static_cast<ValueType*>(cmd)->Init(_factor, _units);
   4852     return NextCmdAddress<ValueType>(cmd);
   4853   }
   4854 
   4855   gpu::CommandHeader header;
   4856   float factor;
   4857   float units;
   4858 };
   4859 
   4860 COMPILE_ASSERT(sizeof(PolygonOffset) == 12,
   4861                Sizeof_PolygonOffset_is_not_12);
   4862 COMPILE_ASSERT(offsetof(PolygonOffset, header) == 0,
   4863                OffsetOf_PolygonOffset_header_not_0);
   4864 COMPILE_ASSERT(offsetof(PolygonOffset, factor) == 4,
   4865                OffsetOf_PolygonOffset_factor_not_4);
   4866 COMPILE_ASSERT(offsetof(PolygonOffset, units) == 8,
   4867                OffsetOf_PolygonOffset_units_not_8);
   4868 
   4869 // ReadPixels has the result separated from the pixel buffer so that
   4870 // it is easier to specify the result going to some specific place
   4871 // that exactly fits the rectangle of pixels.
   4872 struct ReadPixels {
   4873   typedef ReadPixels ValueType;
   4874   static const CommandId kCmdId = kReadPixels;
   4875   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4876 
   4877   typedef uint32 Result;
   4878 
   4879   static uint32 ComputeSize() {
   4880     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4881   }
   4882 
   4883   void SetHeader() {
   4884     header.SetCmd<ValueType>();
   4885   }
   4886 
   4887   void Init(
   4888       GLint _x, GLint _y, GLsizei _width, GLsizei _height, GLenum _format,
   4889       GLenum _type, uint32 _pixels_shm_id, uint32 _pixels_shm_offset,
   4890       uint32 _result_shm_id, uint32 _result_shm_offset, GLboolean _async) {
   4891     SetHeader();
   4892     x = _x;
   4893     y = _y;
   4894     width = _width;
   4895     height = _height;
   4896     format = _format;
   4897     type = _type;
   4898     pixels_shm_id = _pixels_shm_id;
   4899     pixels_shm_offset = _pixels_shm_offset;
   4900     result_shm_id = _result_shm_id;
   4901     result_shm_offset = _result_shm_offset;
   4902     async = _async;
   4903   }
   4904 
   4905   void* Set(
   4906       void* cmd, GLint _x, GLint _y, GLsizei _width, GLsizei _height,
   4907       GLenum _format, GLenum _type, uint32 _pixels_shm_id,
   4908       uint32 _pixels_shm_offset, uint32 _result_shm_id,
   4909       uint32 _result_shm_offset, GLboolean _async) {
   4910     static_cast<ValueType*>(
   4911         cmd)->Init(
   4912             _x, _y, _width, _height, _format, _type, _pixels_shm_id,
   4913             _pixels_shm_offset, _result_shm_id, _result_shm_offset, _async);
   4914     return NextCmdAddress<ValueType>(cmd);
   4915   }
   4916 
   4917   gpu::CommandHeader header;
   4918   int32 x;
   4919   int32 y;
   4920   int32 width;
   4921   int32 height;
   4922   uint32 format;
   4923   uint32 type;
   4924   uint32 pixels_shm_id;
   4925   uint32 pixels_shm_offset;
   4926   uint32 result_shm_id;
   4927   uint32 result_shm_offset;
   4928   uint32 async;
   4929 };
   4930 
   4931 COMPILE_ASSERT(sizeof(ReadPixels) == 48,
   4932                Sizeof_ReadPixels_is_not_48);
   4933 COMPILE_ASSERT(offsetof(ReadPixels, header) == 0,
   4934                OffsetOf_ReadPixels_header_not_0);
   4935 COMPILE_ASSERT(offsetof(ReadPixels, x) == 4,
   4936                OffsetOf_ReadPixels_x_not_4);
   4937 COMPILE_ASSERT(offsetof(ReadPixels, y) == 8,
   4938                OffsetOf_ReadPixels_y_not_8);
   4939 COMPILE_ASSERT(offsetof(ReadPixels, width) == 12,
   4940                OffsetOf_ReadPixels_width_not_12);
   4941 COMPILE_ASSERT(offsetof(ReadPixels, height) == 16,
   4942                OffsetOf_ReadPixels_height_not_16);
   4943 COMPILE_ASSERT(offsetof(ReadPixels, format) == 20,
   4944                OffsetOf_ReadPixels_format_not_20);
   4945 COMPILE_ASSERT(offsetof(ReadPixels, type) == 24,
   4946                OffsetOf_ReadPixels_type_not_24);
   4947 COMPILE_ASSERT(offsetof(ReadPixels, pixels_shm_id) == 28,
   4948                OffsetOf_ReadPixels_pixels_shm_id_not_28);
   4949 COMPILE_ASSERT(offsetof(ReadPixels, pixels_shm_offset) == 32,
   4950                OffsetOf_ReadPixels_pixels_shm_offset_not_32);
   4951 COMPILE_ASSERT(offsetof(ReadPixels, result_shm_id) == 36,
   4952                OffsetOf_ReadPixels_result_shm_id_not_36);
   4953 COMPILE_ASSERT(offsetof(ReadPixels, result_shm_offset) == 40,
   4954                OffsetOf_ReadPixels_result_shm_offset_not_40);
   4955 COMPILE_ASSERT(offsetof(ReadPixels, async) == 44,
   4956                OffsetOf_ReadPixels_async_not_44);
   4957 
   4958 struct ReleaseShaderCompiler {
   4959   typedef ReleaseShaderCompiler ValueType;
   4960   static const CommandId kCmdId = kReleaseShaderCompiler;
   4961   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4962 
   4963   static uint32 ComputeSize() {
   4964     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4965   }
   4966 
   4967   void SetHeader() {
   4968     header.SetCmd<ValueType>();
   4969   }
   4970 
   4971   void Init() {
   4972     SetHeader();
   4973   }
   4974 
   4975   void* Set(void* cmd) {
   4976     static_cast<ValueType*>(cmd)->Init();
   4977     return NextCmdAddress<ValueType>(cmd);
   4978   }
   4979 
   4980   gpu::CommandHeader header;
   4981 };
   4982 
   4983 COMPILE_ASSERT(sizeof(ReleaseShaderCompiler) == 4,
   4984                Sizeof_ReleaseShaderCompiler_is_not_4);
   4985 COMPILE_ASSERT(offsetof(ReleaseShaderCompiler, header) == 0,
   4986                OffsetOf_ReleaseShaderCompiler_header_not_0);
   4987 
   4988 struct RenderbufferStorage {
   4989   typedef RenderbufferStorage ValueType;
   4990   static const CommandId kCmdId = kRenderbufferStorage;
   4991   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   4992 
   4993   static uint32 ComputeSize() {
   4994     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   4995   }
   4996 
   4997   void SetHeader() {
   4998     header.SetCmd<ValueType>();
   4999   }
   5000 
   5001   void Init(
   5002       GLenum _target, GLenum _internalformat, GLsizei _width,
   5003       GLsizei _height) {
   5004     SetHeader();
   5005     target = _target;
   5006     internalformat = _internalformat;
   5007     width = _width;
   5008     height = _height;
   5009   }
   5010 
   5011   void* Set(
   5012       void* cmd, GLenum _target, GLenum _internalformat, GLsizei _width,
   5013       GLsizei _height) {
   5014     static_cast<ValueType*>(
   5015         cmd)->Init(_target, _internalformat, _width, _height);
   5016     return NextCmdAddress<ValueType>(cmd);
   5017   }
   5018 
   5019   gpu::CommandHeader header;
   5020   uint32 target;
   5021   uint32 internalformat;
   5022   int32 width;
   5023   int32 height;
   5024 };
   5025 
   5026 COMPILE_ASSERT(sizeof(RenderbufferStorage) == 20,
   5027                Sizeof_RenderbufferStorage_is_not_20);
   5028 COMPILE_ASSERT(offsetof(RenderbufferStorage, header) == 0,
   5029                OffsetOf_RenderbufferStorage_header_not_0);
   5030 COMPILE_ASSERT(offsetof(RenderbufferStorage, target) == 4,
   5031                OffsetOf_RenderbufferStorage_target_not_4);
   5032 COMPILE_ASSERT(offsetof(RenderbufferStorage, internalformat) == 8,
   5033                OffsetOf_RenderbufferStorage_internalformat_not_8);
   5034 COMPILE_ASSERT(offsetof(RenderbufferStorage, width) == 12,
   5035                OffsetOf_RenderbufferStorage_width_not_12);
   5036 COMPILE_ASSERT(offsetof(RenderbufferStorage, height) == 16,
   5037                OffsetOf_RenderbufferStorage_height_not_16);
   5038 
   5039 struct SampleCoverage {
   5040   typedef SampleCoverage ValueType;
   5041   static const CommandId kCmdId = kSampleCoverage;
   5042   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   5043 
   5044   static uint32 ComputeSize() {
   5045     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   5046   }
   5047 
   5048   void SetHeader() {
   5049     header.SetCmd<ValueType>();
   5050   }
   5051 
   5052   void Init(GLclampf _value, GLboolean _invert) {
   5053     SetHeader();
   5054     value = _value;
   5055     invert = _invert;
   5056   }
   5057 
   5058   void* Set(void* cmd, GLclampf _value, GLboolean _invert) {
   5059     static_cast<ValueType*>(cmd)->Init(_value, _invert);
   5060     return NextCmdAddress<ValueType>(cmd);
   5061   }
   5062 
   5063   gpu::CommandHeader header;
   5064   float value;
   5065   uint32 invert;
   5066 };
   5067 
   5068 COMPILE_ASSERT(sizeof(SampleCoverage) == 12,
   5069                Sizeof_SampleCoverage_is_not_12);
   5070 COMPILE_ASSERT(offsetof(SampleCoverage, header) == 0,
   5071                OffsetOf_SampleCoverage_header_not_0);
   5072 COMPILE_ASSERT(offsetof(SampleCoverage, value) == 4,
   5073                OffsetOf_SampleCoverage_value_not_4);
   5074 COMPILE_ASSERT(offsetof(SampleCoverage, invert) == 8,
   5075                OffsetOf_SampleCoverage_invert_not_8);
   5076 
   5077 struct Scissor {
   5078   typedef Scissor ValueType;
   5079   static const CommandId kCmdId = kScissor;
   5080   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   5081 
   5082   static uint32 ComputeSize() {
   5083     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   5084   }
   5085 
   5086   void SetHeader() {
   5087     header.SetCmd<ValueType>();
   5088   }
   5089 
   5090   void Init(GLint _x, GLint _y, GLsizei _width, GLsizei _height) {
   5091     SetHeader();
   5092     x = _x;
   5093     y = _y;
   5094     width = _width;
   5095     height = _height;
   5096   }
   5097 
   5098   void* Set(void* cmd, GLint _x, GLint _y, GLsizei _width, GLsizei _height) {
   5099     static_cast<ValueType*>(cmd)->Init(_x, _y, _width, _height);
   5100     return NextCmdAddress<ValueType>(cmd);
   5101   }
   5102 
   5103   gpu::CommandHeader header;
   5104   int32 x;
   5105   int32 y;
   5106   int32 width;
   5107   int32 height;
   5108 };
   5109 
   5110 COMPILE_ASSERT(sizeof(Scissor) == 20,
   5111                Sizeof_Scissor_is_not_20);
   5112 COMPILE_ASSERT(offsetof(Scissor, header) == 0,
   5113                OffsetOf_Scissor_header_not_0);
   5114 COMPILE_ASSERT(offsetof(Scissor, x) == 4,
   5115                OffsetOf_Scissor_x_not_4);
   5116 COMPILE_ASSERT(offsetof(Scissor, y) == 8,
   5117                OffsetOf_Scissor_y_not_8);
   5118 COMPILE_ASSERT(offsetof(Scissor, width) == 12,
   5119                OffsetOf_Scissor_width_not_12);
   5120 COMPILE_ASSERT(offsetof(Scissor, height) == 16,
   5121                OffsetOf_Scissor_height_not_16);
   5122 
   5123 struct ShaderBinary {
   5124   typedef ShaderBinary ValueType;
   5125   static const CommandId kCmdId = kShaderBinary;
   5126   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   5127 
   5128   static uint32 ComputeSize() {
   5129     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   5130   }
   5131 
   5132   void SetHeader() {
   5133     header.SetCmd<ValueType>();
   5134   }
   5135 
   5136   void Init(
   5137       GLsizei _n, uint32 _shaders_shm_id, uint32 _shaders_shm_offset,
   5138       GLenum _binaryformat, uint32 _binary_shm_id, uint32 _binary_shm_offset,
   5139       GLsizei _length) {
   5140     SetHeader();
   5141     n = _n;
   5142     shaders_shm_id = _shaders_shm_id;
   5143     shaders_shm_offset = _shaders_shm_offset;
   5144     binaryformat = _binaryformat;
   5145     binary_shm_id = _binary_shm_id;
   5146     binary_shm_offset = _binary_shm_offset;
   5147     length = _length;
   5148   }
   5149 
   5150   void* Set(
   5151       void* cmd, GLsizei _n, uint32 _shaders_shm_id, uint32 _shaders_shm_offset,
   5152       GLenum _binaryformat, uint32 _binary_shm_id, uint32 _binary_shm_offset,
   5153       GLsizei _length) {
   5154     static_cast<ValueType*>(
   5155         cmd)->Init(
   5156             _n, _shaders_shm_id, _shaders_shm_offset, _binaryformat,
   5157             _binary_shm_id, _binary_shm_offset, _length);
   5158     return NextCmdAddress<ValueType>(cmd);
   5159   }
   5160 
   5161   gpu::CommandHeader header;
   5162   int32 n;
   5163   uint32 shaders_shm_id;
   5164   uint32 shaders_shm_offset;
   5165   uint32 binaryformat;
   5166   uint32 binary_shm_id;
   5167   uint32 binary_shm_offset;
   5168   int32 length;
   5169 };
   5170 
   5171 COMPILE_ASSERT(sizeof(ShaderBinary) == 32,
   5172                Sizeof_ShaderBinary_is_not_32);
   5173 COMPILE_ASSERT(offsetof(ShaderBinary, header) == 0,
   5174                OffsetOf_ShaderBinary_header_not_0);
   5175 COMPILE_ASSERT(offsetof(ShaderBinary, n) == 4,
   5176                OffsetOf_ShaderBinary_n_not_4);
   5177 COMPILE_ASSERT(offsetof(ShaderBinary, shaders_shm_id) == 8,
   5178                OffsetOf_ShaderBinary_shaders_shm_id_not_8);
   5179 COMPILE_ASSERT(offsetof(ShaderBinary, shaders_shm_offset) == 12,
   5180                OffsetOf_ShaderBinary_shaders_shm_offset_not_12);
   5181 COMPILE_ASSERT(offsetof(ShaderBinary, binaryformat) == 16,
   5182                OffsetOf_ShaderBinary_binaryformat_not_16);
   5183 COMPILE_ASSERT(offsetof(ShaderBinary, binary_shm_id) == 20,
   5184                OffsetOf_ShaderBinary_binary_shm_id_not_20);
   5185 COMPILE_ASSERT(offsetof(ShaderBinary, binary_shm_offset) == 24,
   5186                OffsetOf_ShaderBinary_binary_shm_offset_not_24);
   5187 COMPILE_ASSERT(offsetof(ShaderBinary, length) == 28,
   5188                OffsetOf_ShaderBinary_length_not_28);
   5189 
   5190 struct ShaderSource {
   5191   typedef ShaderSource ValueType;
   5192   static const CommandId kCmdId = kShaderSource;
   5193   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   5194 
   5195   static uint32 ComputeSize() {
   5196     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   5197   }
   5198 
   5199   void SetHeader() {
   5200     header.SetCmd<ValueType>();
   5201   }
   5202 
   5203   void Init(
   5204       GLuint _shader, uint32 _data_shm_id, uint32 _data_shm_offset,
   5205       uint32 _data_size) {
   5206     SetHeader();
   5207     shader = _shader;
   5208     data_shm_id = _data_shm_id;
   5209     data_shm_offset = _data_shm_offset;
   5210     data_size = _data_size;
   5211   }
   5212 
   5213   void* Set(
   5214       void* cmd, GLuint _shader, uint32 _data_shm_id, uint32 _data_shm_offset,
   5215       uint32 _data_size) {
   5216     static_cast<ValueType*>(
   5217         cmd)->Init(_shader, _data_shm_id, _data_shm_offset, _data_size);
   5218     return NextCmdAddress<ValueType>(cmd);
   5219   }
   5220 
   5221   gpu::CommandHeader header;
   5222   uint32 shader;
   5223   uint32 data_shm_id;
   5224   uint32 data_shm_offset;
   5225   uint32 data_size;
   5226 };
   5227 
   5228 COMPILE_ASSERT(sizeof(ShaderSource) == 20,
   5229                Sizeof_ShaderSource_is_not_20);
   5230 COMPILE_ASSERT(offsetof(ShaderSource, header) == 0,
   5231                OffsetOf_ShaderSource_header_not_0);
   5232 COMPILE_ASSERT(offsetof(ShaderSource, shader) == 4,
   5233                OffsetOf_ShaderSource_shader_not_4);
   5234 COMPILE_ASSERT(offsetof(ShaderSource, data_shm_id) == 8,
   5235                OffsetOf_ShaderSource_data_shm_id_not_8);
   5236 COMPILE_ASSERT(offsetof(ShaderSource, data_shm_offset) == 12,
   5237                OffsetOf_ShaderSource_data_shm_offset_not_12);
   5238 COMPILE_ASSERT(offsetof(ShaderSource, data_size) == 16,
   5239                OffsetOf_ShaderSource_data_size_not_16);
   5240 
   5241 struct ShaderSourceImmediate {
   5242   typedef ShaderSourceImmediate ValueType;
   5243   static const CommandId kCmdId = kShaderSourceImmediate;
   5244   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   5245 
   5246   static uint32 ComputeSize(uint32 size_in_bytes) {
   5247     return static_cast<uint32>(
   5248         sizeof(ValueType) +  // NOLINT
   5249         RoundSizeToMultipleOfEntries(size_in_bytes));
   5250   }
   5251 
   5252   void SetHeader(uint32 size_in_bytes) {
   5253     header.SetCmdByTotalSize<ValueType>(size_in_bytes);
   5254   }
   5255 
   5256   void Init(GLuint _shader, uint32 _data_size) {
   5257     uint32 total_size = ComputeSize(_data_size);
   5258     SetHeader(total_size);
   5259     shader = _shader;
   5260     data_size = _data_size;
   5261   }
   5262 
   5263   void* Set(void* cmd, GLuint _shader, uint32 _data_size) {
   5264     uint32 total_size = ComputeSize(_data_size);
   5265     static_cast<ValueType*>(cmd)->Init(_shader, _data_size);
   5266     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, total_size);
   5267   }
   5268 
   5269   gpu::CommandHeader header;
   5270   uint32 shader;
   5271   uint32 data_size;
   5272 };
   5273 
   5274 COMPILE_ASSERT(sizeof(ShaderSourceImmediate) == 12,
   5275                Sizeof_ShaderSourceImmediate_is_not_12);
   5276 COMPILE_ASSERT(offsetof(ShaderSourceImmediate, header) == 0,
   5277                OffsetOf_ShaderSourceImmediate_header_not_0);
   5278 COMPILE_ASSERT(offsetof(ShaderSourceImmediate, shader) == 4,
   5279                OffsetOf_ShaderSourceImmediate_shader_not_4);
   5280 COMPILE_ASSERT(offsetof(ShaderSourceImmediate, data_size) == 8,
   5281                OffsetOf_ShaderSourceImmediate_data_size_not_8);
   5282 
   5283 struct ShaderSourceBucket {
   5284   typedef ShaderSourceBucket ValueType;
   5285   static const CommandId kCmdId = kShaderSourceBucket;
   5286   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   5287 
   5288   static uint32 ComputeSize() {
   5289     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   5290   }
   5291 
   5292   void SetHeader() {
   5293     header.SetCmd<ValueType>();
   5294   }
   5295 
   5296   void Init(GLuint _shader, uint32 _data_bucket_id) {
   5297     SetHeader();
   5298     shader = _shader;
   5299     data_bucket_id = _data_bucket_id;
   5300   }
   5301 
   5302   void* Set(void* cmd, GLuint _shader, uint32 _data_bucket_id) {
   5303     static_cast<ValueType*>(cmd)->Init(_shader, _data_bucket_id);
   5304     return NextCmdAddress<ValueType>(cmd);
   5305   }
   5306 
   5307   gpu::CommandHeader header;
   5308   uint32 shader;
   5309   uint32 data_bucket_id;
   5310 };
   5311 
   5312 COMPILE_ASSERT(sizeof(ShaderSourceBucket) == 12,
   5313                Sizeof_ShaderSourceBucket_is_not_12);
   5314 COMPILE_ASSERT(offsetof(ShaderSourceBucket, header) == 0,
   5315                OffsetOf_ShaderSourceBucket_header_not_0);
   5316 COMPILE_ASSERT(offsetof(ShaderSourceBucket, shader) == 4,
   5317                OffsetOf_ShaderSourceBucket_shader_not_4);
   5318 COMPILE_ASSERT(offsetof(ShaderSourceBucket, data_bucket_id) == 8,
   5319                OffsetOf_ShaderSourceBucket_data_bucket_id_not_8);
   5320 
   5321 struct StencilFunc {
   5322   typedef StencilFunc ValueType;
   5323   static const CommandId kCmdId = kStencilFunc;
   5324   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   5325 
   5326   static uint32 ComputeSize() {
   5327     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   5328   }
   5329 
   5330   void SetHeader() {
   5331     header.SetCmd<ValueType>();
   5332   }
   5333 
   5334   void Init(GLenum _func, GLint _ref, GLuint _mask) {
   5335     SetHeader();
   5336     func = _func;
   5337     ref = _ref;
   5338     mask = _mask;
   5339   }
   5340 
   5341   void* Set(void* cmd, GLenum _func, GLint _ref, GLuint _mask) {
   5342     static_cast<ValueType*>(cmd)->Init(_func, _ref, _mask);
   5343     return NextCmdAddress<ValueType>(cmd);
   5344   }
   5345 
   5346   gpu::CommandHeader header;
   5347   uint32 func;
   5348   int32 ref;
   5349   uint32 mask;
   5350 };
   5351 
   5352 COMPILE_ASSERT(sizeof(StencilFunc) == 16,
   5353                Sizeof_StencilFunc_is_not_16);
   5354 COMPILE_ASSERT(offsetof(StencilFunc, header) == 0,
   5355                OffsetOf_StencilFunc_header_not_0);
   5356 COMPILE_ASSERT(offsetof(StencilFunc, func) == 4,
   5357                OffsetOf_StencilFunc_func_not_4);
   5358 COMPILE_ASSERT(offsetof(StencilFunc, ref) == 8,
   5359                OffsetOf_StencilFunc_ref_not_8);
   5360 COMPILE_ASSERT(offsetof(StencilFunc, mask) == 12,
   5361                OffsetOf_StencilFunc_mask_not_12);
   5362 
   5363 struct StencilFuncSeparate {
   5364   typedef StencilFuncSeparate ValueType;
   5365   static const CommandId kCmdId = kStencilFuncSeparate;
   5366   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   5367 
   5368   static uint32 ComputeSize() {
   5369     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   5370   }
   5371 
   5372   void SetHeader() {
   5373     header.SetCmd<ValueType>();
   5374   }
   5375 
   5376   void Init(GLenum _face, GLenum _func, GLint _ref, GLuint _mask) {
   5377     SetHeader();
   5378     face = _face;
   5379     func = _func;
   5380     ref = _ref;
   5381     mask = _mask;
   5382   }
   5383 
   5384   void* Set(void* cmd, GLenum _face, GLenum _func, GLint _ref, GLuint _mask) {
   5385     static_cast<ValueType*>(cmd)->Init(_face, _func, _ref, _mask);
   5386     return NextCmdAddress<ValueType>(cmd);
   5387   }
   5388 
   5389   gpu::CommandHeader header;
   5390   uint32 face;
   5391   uint32 func;
   5392   int32 ref;
   5393   uint32 mask;
   5394 };
   5395 
   5396 COMPILE_ASSERT(sizeof(StencilFuncSeparate) == 20,
   5397                Sizeof_StencilFuncSeparate_is_not_20);
   5398 COMPILE_ASSERT(offsetof(StencilFuncSeparate, header) == 0,
   5399                OffsetOf_StencilFuncSeparate_header_not_0);
   5400 COMPILE_ASSERT(offsetof(StencilFuncSeparate, face) == 4,
   5401                OffsetOf_StencilFuncSeparate_face_not_4);
   5402 COMPILE_ASSERT(offsetof(StencilFuncSeparate, func) == 8,
   5403                OffsetOf_StencilFuncSeparate_func_not_8);
   5404 COMPILE_ASSERT(offsetof(StencilFuncSeparate, ref) == 12,
   5405                OffsetOf_StencilFuncSeparate_ref_not_12);
   5406 COMPILE_ASSERT(offsetof(StencilFuncSeparate, mask) == 16,
   5407                OffsetOf_StencilFuncSeparate_mask_not_16);
   5408 
   5409 struct StencilMask {
   5410   typedef StencilMask ValueType;
   5411   static const CommandId kCmdId = kStencilMask;
   5412   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   5413 
   5414   static uint32 ComputeSize() {
   5415     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   5416   }
   5417 
   5418   void SetHeader() {
   5419     header.SetCmd<ValueType>();
   5420   }
   5421 
   5422   void Init(GLuint _mask) {
   5423     SetHeader();
   5424     mask = _mask;
   5425   }
   5426 
   5427   void* Set(void* cmd, GLuint _mask) {
   5428     static_cast<ValueType*>(cmd)->Init(_mask);
   5429     return NextCmdAddress<ValueType>(cmd);
   5430   }
   5431 
   5432   gpu::CommandHeader header;
   5433   uint32 mask;
   5434 };
   5435 
   5436 COMPILE_ASSERT(sizeof(StencilMask) == 8,
   5437                Sizeof_StencilMask_is_not_8);
   5438 COMPILE_ASSERT(offsetof(StencilMask, header) == 0,
   5439                OffsetOf_StencilMask_header_not_0);
   5440 COMPILE_ASSERT(offsetof(StencilMask, mask) == 4,
   5441                OffsetOf_StencilMask_mask_not_4);
   5442 
   5443 struct StencilMaskSeparate {
   5444   typedef StencilMaskSeparate ValueType;
   5445   static const CommandId kCmdId = kStencilMaskSeparate;
   5446   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   5447 
   5448   static uint32 ComputeSize() {
   5449     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   5450   }
   5451 
   5452   void SetHeader() {
   5453     header.SetCmd<ValueType>();
   5454   }
   5455 
   5456   void Init(GLenum _face, GLuint _mask) {
   5457     SetHeader();
   5458     face = _face;
   5459     mask = _mask;
   5460   }
   5461 
   5462   void* Set(void* cmd, GLenum _face, GLuint _mask) {
   5463     static_cast<ValueType*>(cmd)->Init(_face, _mask);
   5464     return NextCmdAddress<ValueType>(cmd);
   5465   }
   5466 
   5467   gpu::CommandHeader header;
   5468   uint32 face;
   5469   uint32 mask;
   5470 };
   5471 
   5472 COMPILE_ASSERT(sizeof(StencilMaskSeparate) == 12,
   5473                Sizeof_StencilMaskSeparate_is_not_12);
   5474 COMPILE_ASSERT(offsetof(StencilMaskSeparate, header) == 0,
   5475                OffsetOf_StencilMaskSeparate_header_not_0);
   5476 COMPILE_ASSERT(offsetof(StencilMaskSeparate, face) == 4,
   5477                OffsetOf_StencilMaskSeparate_face_not_4);
   5478 COMPILE_ASSERT(offsetof(StencilMaskSeparate, mask) == 8,
   5479                OffsetOf_StencilMaskSeparate_mask_not_8);
   5480 
   5481 struct StencilOp {
   5482   typedef StencilOp ValueType;
   5483   static const CommandId kCmdId = kStencilOp;
   5484   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   5485 
   5486   static uint32 ComputeSize() {
   5487     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   5488   }
   5489 
   5490   void SetHeader() {
   5491     header.SetCmd<ValueType>();
   5492   }
   5493 
   5494   void Init(GLenum _fail, GLenum _zfail, GLenum _zpass) {
   5495     SetHeader();
   5496     fail = _fail;
   5497     zfail = _zfail;
   5498     zpass = _zpass;
   5499   }
   5500 
   5501   void* Set(void* cmd, GLenum _fail, GLenum _zfail, GLenum _zpass) {
   5502     static_cast<ValueType*>(cmd)->Init(_fail, _zfail, _zpass);
   5503     return NextCmdAddress<ValueType>(cmd);
   5504   }
   5505 
   5506   gpu::CommandHeader header;
   5507   uint32 fail;
   5508   uint32 zfail;
   5509   uint32 zpass;
   5510 };
   5511 
   5512 COMPILE_ASSERT(sizeof(StencilOp) == 16,
   5513                Sizeof_StencilOp_is_not_16);
   5514 COMPILE_ASSERT(offsetof(StencilOp, header) == 0,
   5515                OffsetOf_StencilOp_header_not_0);
   5516 COMPILE_ASSERT(offsetof(StencilOp, fail) == 4,
   5517                OffsetOf_StencilOp_fail_not_4);
   5518 COMPILE_ASSERT(offsetof(StencilOp, zfail) == 8,
   5519                OffsetOf_StencilOp_zfail_not_8);
   5520 COMPILE_ASSERT(offsetof(StencilOp, zpass) == 12,
   5521                OffsetOf_StencilOp_zpass_not_12);
   5522 
   5523 struct StencilOpSeparate {
   5524   typedef StencilOpSeparate ValueType;
   5525   static const CommandId kCmdId = kStencilOpSeparate;
   5526   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   5527 
   5528   static uint32 ComputeSize() {
   5529     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   5530   }
   5531 
   5532   void SetHeader() {
   5533     header.SetCmd<ValueType>();
   5534   }
   5535 
   5536   void Init(GLenum _face, GLenum _fail, GLenum _zfail, GLenum _zpass) {
   5537     SetHeader();
   5538     face = _face;
   5539     fail = _fail;
   5540     zfail = _zfail;
   5541     zpass = _zpass;
   5542   }
   5543 
   5544   void* Set(
   5545       void* cmd, GLenum _face, GLenum _fail, GLenum _zfail, GLenum _zpass) {
   5546     static_cast<ValueType*>(cmd)->Init(_face, _fail, _zfail, _zpass);
   5547     return NextCmdAddress<ValueType>(cmd);
   5548   }
   5549 
   5550   gpu::CommandHeader header;
   5551   uint32 face;
   5552   uint32 fail;
   5553   uint32 zfail;
   5554   uint32 zpass;
   5555 };
   5556 
   5557 COMPILE_ASSERT(sizeof(StencilOpSeparate) == 20,
   5558                Sizeof_StencilOpSeparate_is_not_20);
   5559 COMPILE_ASSERT(offsetof(StencilOpSeparate, header) == 0,
   5560                OffsetOf_StencilOpSeparate_header_not_0);
   5561 COMPILE_ASSERT(offsetof(StencilOpSeparate, face) == 4,
   5562                OffsetOf_StencilOpSeparate_face_not_4);
   5563 COMPILE_ASSERT(offsetof(StencilOpSeparate, fail) == 8,
   5564                OffsetOf_StencilOpSeparate_fail_not_8);
   5565 COMPILE_ASSERT(offsetof(StencilOpSeparate, zfail) == 12,
   5566                OffsetOf_StencilOpSeparate_zfail_not_12);
   5567 COMPILE_ASSERT(offsetof(StencilOpSeparate, zpass) == 16,
   5568                OffsetOf_StencilOpSeparate_zpass_not_16);
   5569 
   5570 struct TexImage2D {
   5571   typedef TexImage2D ValueType;
   5572   static const CommandId kCmdId = kTexImage2D;
   5573   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   5574 
   5575   static uint32 ComputeSize() {
   5576     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   5577   }
   5578 
   5579   void SetHeader() {
   5580     header.SetCmd<ValueType>();
   5581   }
   5582 
   5583   void Init(
   5584       GLenum _target, GLint _level, GLint _internalformat, GLsizei _width,
   5585       GLsizei _height, GLint _border, GLenum _format, GLenum _type,
   5586       uint32 _pixels_shm_id, uint32 _pixels_shm_offset) {
   5587     SetHeader();
   5588     target = _target;
   5589     level = _level;
   5590     internalformat = _internalformat;
   5591     width = _width;
   5592     height = _height;
   5593     border = _border;
   5594     format = _format;
   5595     type = _type;
   5596     pixels_shm_id = _pixels_shm_id;
   5597     pixels_shm_offset = _pixels_shm_offset;
   5598   }
   5599 
   5600   void* Set(
   5601       void* cmd, GLenum _target, GLint _level, GLint _internalformat,
   5602       GLsizei _width, GLsizei _height, GLint _border, GLenum _format,
   5603       GLenum _type, uint32 _pixels_shm_id, uint32 _pixels_shm_offset) {
   5604     static_cast<ValueType*>(
   5605         cmd)->Init(
   5606             _target, _level, _internalformat, _width, _height, _border, _format,
   5607             _type, _pixels_shm_id, _pixels_shm_offset);
   5608     return NextCmdAddress<ValueType>(cmd);
   5609   }
   5610 
   5611   gpu::CommandHeader header;
   5612   uint32 target;
   5613   int32 level;
   5614   int32 internalformat;
   5615   int32 width;
   5616   int32 height;
   5617   int32 border;
   5618   uint32 format;
   5619   uint32 type;
   5620   uint32 pixels_shm_id;
   5621   uint32 pixels_shm_offset;
   5622 };
   5623 
   5624 COMPILE_ASSERT(sizeof(TexImage2D) == 44,
   5625                Sizeof_TexImage2D_is_not_44);
   5626 COMPILE_ASSERT(offsetof(TexImage2D, header) == 0,
   5627                OffsetOf_TexImage2D_header_not_0);
   5628 COMPILE_ASSERT(offsetof(TexImage2D, target) == 4,
   5629                OffsetOf_TexImage2D_target_not_4);
   5630 COMPILE_ASSERT(offsetof(TexImage2D, level) == 8,
   5631                OffsetOf_TexImage2D_level_not_8);
   5632 COMPILE_ASSERT(offsetof(TexImage2D, internalformat) == 12,
   5633                OffsetOf_TexImage2D_internalformat_not_12);
   5634 COMPILE_ASSERT(offsetof(TexImage2D, width) == 16,
   5635                OffsetOf_TexImage2D_width_not_16);
   5636 COMPILE_ASSERT(offsetof(TexImage2D, height) == 20,
   5637                OffsetOf_TexImage2D_height_not_20);
   5638 COMPILE_ASSERT(offsetof(TexImage2D, border) == 24,
   5639                OffsetOf_TexImage2D_border_not_24);
   5640 COMPILE_ASSERT(offsetof(TexImage2D, format) == 28,
   5641                OffsetOf_TexImage2D_format_not_28);
   5642 COMPILE_ASSERT(offsetof(TexImage2D, type) == 32,
   5643                OffsetOf_TexImage2D_type_not_32);
   5644 COMPILE_ASSERT(offsetof(TexImage2D, pixels_shm_id) == 36,
   5645                OffsetOf_TexImage2D_pixels_shm_id_not_36);
   5646 COMPILE_ASSERT(offsetof(TexImage2D, pixels_shm_offset) == 40,
   5647                OffsetOf_TexImage2D_pixels_shm_offset_not_40);
   5648 
   5649 struct TexImage2DImmediate {
   5650   typedef TexImage2DImmediate ValueType;
   5651   static const CommandId kCmdId = kTexImage2DImmediate;
   5652   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   5653 
   5654   static uint32 ComputeSize(uint32 size_in_bytes) {
   5655     return static_cast<uint32>(
   5656         sizeof(ValueType) +  // NOLINT
   5657         RoundSizeToMultipleOfEntries(size_in_bytes));
   5658   }
   5659 
   5660   void SetHeader(uint32 size_in_bytes) {
   5661     header.SetCmdByTotalSize<ValueType>(size_in_bytes);
   5662   }
   5663 
   5664   void Init(
   5665       GLenum _target, GLint _level, GLint _internalformat, GLsizei _width,
   5666       GLsizei _height, GLint _border, GLenum _format, GLenum _type) {
   5667     uint32 total_size = 0;  // TODO(gman): get correct size.
   5668     SetHeader(total_size);
   5669     target = _target;
   5670     level = _level;
   5671     internalformat = _internalformat;
   5672     width = _width;
   5673     height = _height;
   5674     border = _border;
   5675     format = _format;
   5676     type = _type;
   5677   }
   5678 
   5679   void* Set(
   5680       void* cmd, GLenum _target, GLint _level, GLint _internalformat,
   5681       GLsizei _width, GLsizei _height, GLint _border, GLenum _format,
   5682       GLenum _type) {
   5683     uint32 total_size = 0;  // TODO(gman): get correct size.
   5684     static_cast<ValueType*>(
   5685         cmd)->Init(
   5686             _target, _level, _internalformat, _width, _height, _border, _format,
   5687             _type);
   5688     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, total_size);
   5689   }
   5690 
   5691   gpu::CommandHeader header;
   5692   uint32 target;
   5693   int32 level;
   5694   int32 internalformat;
   5695   int32 width;
   5696   int32 height;
   5697   int32 border;
   5698   uint32 format;
   5699   uint32 type;
   5700 };
   5701 
   5702 COMPILE_ASSERT(sizeof(TexImage2DImmediate) == 36,
   5703                Sizeof_TexImage2DImmediate_is_not_36);
   5704 COMPILE_ASSERT(offsetof(TexImage2DImmediate, header) == 0,
   5705                OffsetOf_TexImage2DImmediate_header_not_0);
   5706 COMPILE_ASSERT(offsetof(TexImage2DImmediate, target) == 4,
   5707                OffsetOf_TexImage2DImmediate_target_not_4);
   5708 COMPILE_ASSERT(offsetof(TexImage2DImmediate, level) == 8,
   5709                OffsetOf_TexImage2DImmediate_level_not_8);
   5710 COMPILE_ASSERT(offsetof(TexImage2DImmediate, internalformat) == 12,
   5711                OffsetOf_TexImage2DImmediate_internalformat_not_12);
   5712 COMPILE_ASSERT(offsetof(TexImage2DImmediate, width) == 16,
   5713                OffsetOf_TexImage2DImmediate_width_not_16);
   5714 COMPILE_ASSERT(offsetof(TexImage2DImmediate, height) == 20,
   5715                OffsetOf_TexImage2DImmediate_height_not_20);
   5716 COMPILE_ASSERT(offsetof(TexImage2DImmediate, border) == 24,
   5717                OffsetOf_TexImage2DImmediate_border_not_24);
   5718 COMPILE_ASSERT(offsetof(TexImage2DImmediate, format) == 28,
   5719                OffsetOf_TexImage2DImmediate_format_not_28);
   5720 COMPILE_ASSERT(offsetof(TexImage2DImmediate, type) == 32,
   5721                OffsetOf_TexImage2DImmediate_type_not_32);
   5722 
   5723 struct TexParameterf {
   5724   typedef TexParameterf ValueType;
   5725   static const CommandId kCmdId = kTexParameterf;
   5726   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   5727 
   5728   static uint32 ComputeSize() {
   5729     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   5730   }
   5731 
   5732   void SetHeader() {
   5733     header.SetCmd<ValueType>();
   5734   }
   5735 
   5736   void Init(GLenum _target, GLenum _pname, GLfloat _param) {
   5737     SetHeader();
   5738     target = _target;
   5739     pname = _pname;
   5740     param = _param;
   5741   }
   5742 
   5743   void* Set(void* cmd, GLenum _target, GLenum _pname, GLfloat _param) {
   5744     static_cast<ValueType*>(cmd)->Init(_target, _pname, _param);
   5745     return NextCmdAddress<ValueType>(cmd);
   5746   }
   5747 
   5748   gpu::CommandHeader header;
   5749   uint32 target;
   5750   uint32 pname;
   5751   float param;
   5752 };
   5753 
   5754 COMPILE_ASSERT(sizeof(TexParameterf) == 16,
   5755                Sizeof_TexParameterf_is_not_16);
   5756 COMPILE_ASSERT(offsetof(TexParameterf, header) == 0,
   5757                OffsetOf_TexParameterf_header_not_0);
   5758 COMPILE_ASSERT(offsetof(TexParameterf, target) == 4,
   5759                OffsetOf_TexParameterf_target_not_4);
   5760 COMPILE_ASSERT(offsetof(TexParameterf, pname) == 8,
   5761                OffsetOf_TexParameterf_pname_not_8);
   5762 COMPILE_ASSERT(offsetof(TexParameterf, param) == 12,
   5763                OffsetOf_TexParameterf_param_not_12);
   5764 
   5765 struct TexParameterfv {
   5766   typedef TexParameterfv ValueType;
   5767   static const CommandId kCmdId = kTexParameterfv;
   5768   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   5769 
   5770   static uint32 ComputeSize() {
   5771     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   5772   }
   5773 
   5774   void SetHeader() {
   5775     header.SetCmd<ValueType>();
   5776   }
   5777 
   5778   void Init(
   5779       GLenum _target, GLenum _pname, uint32 _params_shm_id,
   5780       uint32 _params_shm_offset) {
   5781     SetHeader();
   5782     target = _target;
   5783     pname = _pname;
   5784     params_shm_id = _params_shm_id;
   5785     params_shm_offset = _params_shm_offset;
   5786   }
   5787 
   5788   void* Set(
   5789       void* cmd, GLenum _target, GLenum _pname, uint32 _params_shm_id,
   5790       uint32 _params_shm_offset) {
   5791     static_cast<ValueType*>(
   5792         cmd)->Init(_target, _pname, _params_shm_id, _params_shm_offset);
   5793     return NextCmdAddress<ValueType>(cmd);
   5794   }
   5795 
   5796   gpu::CommandHeader header;
   5797   uint32 target;
   5798   uint32 pname;
   5799   uint32 params_shm_id;
   5800   uint32 params_shm_offset;
   5801 };
   5802 
   5803 COMPILE_ASSERT(sizeof(TexParameterfv) == 20,
   5804                Sizeof_TexParameterfv_is_not_20);
   5805 COMPILE_ASSERT(offsetof(TexParameterfv, header) == 0,
   5806                OffsetOf_TexParameterfv_header_not_0);
   5807 COMPILE_ASSERT(offsetof(TexParameterfv, target) == 4,
   5808                OffsetOf_TexParameterfv_target_not_4);
   5809 COMPILE_ASSERT(offsetof(TexParameterfv, pname) == 8,
   5810                OffsetOf_TexParameterfv_pname_not_8);
   5811 COMPILE_ASSERT(offsetof(TexParameterfv, params_shm_id) == 12,
   5812                OffsetOf_TexParameterfv_params_shm_id_not_12);
   5813 COMPILE_ASSERT(offsetof(TexParameterfv, params_shm_offset) == 16,
   5814                OffsetOf_TexParameterfv_params_shm_offset_not_16);
   5815 
   5816 struct TexParameterfvImmediate {
   5817   typedef TexParameterfvImmediate ValueType;
   5818   static const CommandId kCmdId = kTexParameterfvImmediate;
   5819   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   5820 
   5821   static uint32 ComputeDataSize() {
   5822     return static_cast<uint32>(
   5823         sizeof(GLfloat) * 1);  // NOLINT
   5824   }
   5825 
   5826   static uint32 ComputeSize() {
   5827     return static_cast<uint32>(
   5828         sizeof(ValueType) + ComputeDataSize());  // NOLINT
   5829   }
   5830 
   5831   void SetHeader() {
   5832     header.SetCmdByTotalSize<ValueType>(ComputeSize());
   5833   }
   5834 
   5835   void Init(GLenum _target, GLenum _pname, const GLfloat* _params) {
   5836     SetHeader();
   5837     target = _target;
   5838     pname = _pname;
   5839     memcpy(ImmediateDataAddress(this),
   5840            _params, ComputeDataSize());
   5841   }
   5842 
   5843   void* Set(void* cmd, GLenum _target, GLenum _pname, const GLfloat* _params) {
   5844     static_cast<ValueType*>(cmd)->Init(_target, _pname, _params);
   5845     const uint32 size = ComputeSize();
   5846     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   5847   }
   5848 
   5849   gpu::CommandHeader header;
   5850   uint32 target;
   5851   uint32 pname;
   5852 };
   5853 
   5854 COMPILE_ASSERT(sizeof(TexParameterfvImmediate) == 12,
   5855                Sizeof_TexParameterfvImmediate_is_not_12);
   5856 COMPILE_ASSERT(offsetof(TexParameterfvImmediate, header) == 0,
   5857                OffsetOf_TexParameterfvImmediate_header_not_0);
   5858 COMPILE_ASSERT(offsetof(TexParameterfvImmediate, target) == 4,
   5859                OffsetOf_TexParameterfvImmediate_target_not_4);
   5860 COMPILE_ASSERT(offsetof(TexParameterfvImmediate, pname) == 8,
   5861                OffsetOf_TexParameterfvImmediate_pname_not_8);
   5862 
   5863 struct TexParameteri {
   5864   typedef TexParameteri ValueType;
   5865   static const CommandId kCmdId = kTexParameteri;
   5866   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   5867 
   5868   static uint32 ComputeSize() {
   5869     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   5870   }
   5871 
   5872   void SetHeader() {
   5873     header.SetCmd<ValueType>();
   5874   }
   5875 
   5876   void Init(GLenum _target, GLenum _pname, GLint _param) {
   5877     SetHeader();
   5878     target = _target;
   5879     pname = _pname;
   5880     param = _param;
   5881   }
   5882 
   5883   void* Set(void* cmd, GLenum _target, GLenum _pname, GLint _param) {
   5884     static_cast<ValueType*>(cmd)->Init(_target, _pname, _param);
   5885     return NextCmdAddress<ValueType>(cmd);
   5886   }
   5887 
   5888   gpu::CommandHeader header;
   5889   uint32 target;
   5890   uint32 pname;
   5891   int32 param;
   5892 };
   5893 
   5894 COMPILE_ASSERT(sizeof(TexParameteri) == 16,
   5895                Sizeof_TexParameteri_is_not_16);
   5896 COMPILE_ASSERT(offsetof(TexParameteri, header) == 0,
   5897                OffsetOf_TexParameteri_header_not_0);
   5898 COMPILE_ASSERT(offsetof(TexParameteri, target) == 4,
   5899                OffsetOf_TexParameteri_target_not_4);
   5900 COMPILE_ASSERT(offsetof(TexParameteri, pname) == 8,
   5901                OffsetOf_TexParameteri_pname_not_8);
   5902 COMPILE_ASSERT(offsetof(TexParameteri, param) == 12,
   5903                OffsetOf_TexParameteri_param_not_12);
   5904 
   5905 struct TexParameteriv {
   5906   typedef TexParameteriv ValueType;
   5907   static const CommandId kCmdId = kTexParameteriv;
   5908   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   5909 
   5910   static uint32 ComputeSize() {
   5911     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   5912   }
   5913 
   5914   void SetHeader() {
   5915     header.SetCmd<ValueType>();
   5916   }
   5917 
   5918   void Init(
   5919       GLenum _target, GLenum _pname, uint32 _params_shm_id,
   5920       uint32 _params_shm_offset) {
   5921     SetHeader();
   5922     target = _target;
   5923     pname = _pname;
   5924     params_shm_id = _params_shm_id;
   5925     params_shm_offset = _params_shm_offset;
   5926   }
   5927 
   5928   void* Set(
   5929       void* cmd, GLenum _target, GLenum _pname, uint32 _params_shm_id,
   5930       uint32 _params_shm_offset) {
   5931     static_cast<ValueType*>(
   5932         cmd)->Init(_target, _pname, _params_shm_id, _params_shm_offset);
   5933     return NextCmdAddress<ValueType>(cmd);
   5934   }
   5935 
   5936   gpu::CommandHeader header;
   5937   uint32 target;
   5938   uint32 pname;
   5939   uint32 params_shm_id;
   5940   uint32 params_shm_offset;
   5941 };
   5942 
   5943 COMPILE_ASSERT(sizeof(TexParameteriv) == 20,
   5944                Sizeof_TexParameteriv_is_not_20);
   5945 COMPILE_ASSERT(offsetof(TexParameteriv, header) == 0,
   5946                OffsetOf_TexParameteriv_header_not_0);
   5947 COMPILE_ASSERT(offsetof(TexParameteriv, target) == 4,
   5948                OffsetOf_TexParameteriv_target_not_4);
   5949 COMPILE_ASSERT(offsetof(TexParameteriv, pname) == 8,
   5950                OffsetOf_TexParameteriv_pname_not_8);
   5951 COMPILE_ASSERT(offsetof(TexParameteriv, params_shm_id) == 12,
   5952                OffsetOf_TexParameteriv_params_shm_id_not_12);
   5953 COMPILE_ASSERT(offsetof(TexParameteriv, params_shm_offset) == 16,
   5954                OffsetOf_TexParameteriv_params_shm_offset_not_16);
   5955 
   5956 struct TexParameterivImmediate {
   5957   typedef TexParameterivImmediate ValueType;
   5958   static const CommandId kCmdId = kTexParameterivImmediate;
   5959   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   5960 
   5961   static uint32 ComputeDataSize() {
   5962     return static_cast<uint32>(
   5963         sizeof(GLint) * 1);  // NOLINT
   5964   }
   5965 
   5966   static uint32 ComputeSize() {
   5967     return static_cast<uint32>(
   5968         sizeof(ValueType) + ComputeDataSize());  // NOLINT
   5969   }
   5970 
   5971   void SetHeader() {
   5972     header.SetCmdByTotalSize<ValueType>(ComputeSize());
   5973   }
   5974 
   5975   void Init(GLenum _target, GLenum _pname, const GLint* _params) {
   5976     SetHeader();
   5977     target = _target;
   5978     pname = _pname;
   5979     memcpy(ImmediateDataAddress(this),
   5980            _params, ComputeDataSize());
   5981   }
   5982 
   5983   void* Set(void* cmd, GLenum _target, GLenum _pname, const GLint* _params) {
   5984     static_cast<ValueType*>(cmd)->Init(_target, _pname, _params);
   5985     const uint32 size = ComputeSize();
   5986     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   5987   }
   5988 
   5989   gpu::CommandHeader header;
   5990   uint32 target;
   5991   uint32 pname;
   5992 };
   5993 
   5994 COMPILE_ASSERT(sizeof(TexParameterivImmediate) == 12,
   5995                Sizeof_TexParameterivImmediate_is_not_12);
   5996 COMPILE_ASSERT(offsetof(TexParameterivImmediate, header) == 0,
   5997                OffsetOf_TexParameterivImmediate_header_not_0);
   5998 COMPILE_ASSERT(offsetof(TexParameterivImmediate, target) == 4,
   5999                OffsetOf_TexParameterivImmediate_target_not_4);
   6000 COMPILE_ASSERT(offsetof(TexParameterivImmediate, pname) == 8,
   6001                OffsetOf_TexParameterivImmediate_pname_not_8);
   6002 
   6003 struct TexSubImage2D {
   6004   typedef TexSubImage2D ValueType;
   6005   static const CommandId kCmdId = kTexSubImage2D;
   6006   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   6007 
   6008   static uint32 ComputeSize() {
   6009     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   6010   }
   6011 
   6012   void SetHeader() {
   6013     header.SetCmd<ValueType>();
   6014   }
   6015 
   6016   void Init(
   6017       GLenum _target, GLint _level, GLint _xoffset, GLint _yoffset,
   6018       GLsizei _width, GLsizei _height, GLenum _format, GLenum _type,
   6019       uint32 _pixels_shm_id, uint32 _pixels_shm_offset, GLboolean _internal) {
   6020     SetHeader();
   6021     target = _target;
   6022     level = _level;
   6023     xoffset = _xoffset;
   6024     yoffset = _yoffset;
   6025     width = _width;
   6026     height = _height;
   6027     format = _format;
   6028     type = _type;
   6029     pixels_shm_id = _pixels_shm_id;
   6030     pixels_shm_offset = _pixels_shm_offset;
   6031     internal = _internal;
   6032   }
   6033 
   6034   void* Set(
   6035       void* cmd, GLenum _target, GLint _level, GLint _xoffset, GLint _yoffset,
   6036       GLsizei _width, GLsizei _height, GLenum _format, GLenum _type,
   6037       uint32 _pixels_shm_id, uint32 _pixels_shm_offset, GLboolean _internal) {
   6038     static_cast<ValueType*>(
   6039         cmd)->Init(
   6040             _target, _level, _xoffset, _yoffset, _width, _height, _format,
   6041             _type, _pixels_shm_id, _pixels_shm_offset, _internal);
   6042     return NextCmdAddress<ValueType>(cmd);
   6043   }
   6044 
   6045   gpu::CommandHeader header;
   6046   uint32 target;
   6047   int32 level;
   6048   int32 xoffset;
   6049   int32 yoffset;
   6050   int32 width;
   6051   int32 height;
   6052   uint32 format;
   6053   uint32 type;
   6054   uint32 pixels_shm_id;
   6055   uint32 pixels_shm_offset;
   6056   uint32 internal;
   6057 };
   6058 
   6059 COMPILE_ASSERT(sizeof(TexSubImage2D) == 48,
   6060                Sizeof_TexSubImage2D_is_not_48);
   6061 COMPILE_ASSERT(offsetof(TexSubImage2D, header) == 0,
   6062                OffsetOf_TexSubImage2D_header_not_0);
   6063 COMPILE_ASSERT(offsetof(TexSubImage2D, target) == 4,
   6064                OffsetOf_TexSubImage2D_target_not_4);
   6065 COMPILE_ASSERT(offsetof(TexSubImage2D, level) == 8,
   6066                OffsetOf_TexSubImage2D_level_not_8);
   6067 COMPILE_ASSERT(offsetof(TexSubImage2D, xoffset) == 12,
   6068                OffsetOf_TexSubImage2D_xoffset_not_12);
   6069 COMPILE_ASSERT(offsetof(TexSubImage2D, yoffset) == 16,
   6070                OffsetOf_TexSubImage2D_yoffset_not_16);
   6071 COMPILE_ASSERT(offsetof(TexSubImage2D, width) == 20,
   6072                OffsetOf_TexSubImage2D_width_not_20);
   6073 COMPILE_ASSERT(offsetof(TexSubImage2D, height) == 24,
   6074                OffsetOf_TexSubImage2D_height_not_24);
   6075 COMPILE_ASSERT(offsetof(TexSubImage2D, format) == 28,
   6076                OffsetOf_TexSubImage2D_format_not_28);
   6077 COMPILE_ASSERT(offsetof(TexSubImage2D, type) == 32,
   6078                OffsetOf_TexSubImage2D_type_not_32);
   6079 COMPILE_ASSERT(offsetof(TexSubImage2D, pixels_shm_id) == 36,
   6080                OffsetOf_TexSubImage2D_pixels_shm_id_not_36);
   6081 COMPILE_ASSERT(offsetof(TexSubImage2D, pixels_shm_offset) == 40,
   6082                OffsetOf_TexSubImage2D_pixels_shm_offset_not_40);
   6083 COMPILE_ASSERT(offsetof(TexSubImage2D, internal) == 44,
   6084                OffsetOf_TexSubImage2D_internal_not_44);
   6085 
   6086 struct TexSubImage2DImmediate {
   6087   typedef TexSubImage2DImmediate ValueType;
   6088   static const CommandId kCmdId = kTexSubImage2DImmediate;
   6089   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   6090 
   6091   static uint32 ComputeSize(uint32 size_in_bytes) {
   6092     return static_cast<uint32>(
   6093         sizeof(ValueType) +  // NOLINT
   6094         RoundSizeToMultipleOfEntries(size_in_bytes));
   6095   }
   6096 
   6097   void SetHeader(uint32 size_in_bytes) {
   6098     header.SetCmdByTotalSize<ValueType>(size_in_bytes);
   6099   }
   6100 
   6101   void Init(
   6102       GLenum _target, GLint _level, GLint _xoffset, GLint _yoffset,
   6103       GLsizei _width, GLsizei _height, GLenum _format, GLenum _type,
   6104       GLboolean _internal) {
   6105     uint32 total_size = 0;  // TODO(gman): get correct size.
   6106     SetHeader(total_size);
   6107     target = _target;
   6108     level = _level;
   6109     xoffset = _xoffset;
   6110     yoffset = _yoffset;
   6111     width = _width;
   6112     height = _height;
   6113     format = _format;
   6114     type = _type;
   6115     internal = _internal;
   6116   }
   6117 
   6118   void* Set(
   6119       void* cmd, GLenum _target, GLint _level, GLint _xoffset, GLint _yoffset,
   6120       GLsizei _width, GLsizei _height, GLenum _format, GLenum _type,
   6121       GLboolean _internal) {
   6122     uint32 total_size = 0;  // TODO(gman): get correct size.
   6123     static_cast<ValueType*>(
   6124         cmd)->Init(
   6125             _target, _level, _xoffset, _yoffset, _width, _height, _format,
   6126             _type, _internal);
   6127     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, total_size);
   6128   }
   6129 
   6130   gpu::CommandHeader header;
   6131   uint32 target;
   6132   int32 level;
   6133   int32 xoffset;
   6134   int32 yoffset;
   6135   int32 width;
   6136   int32 height;
   6137   uint32 format;
   6138   uint32 type;
   6139   uint32 internal;
   6140 };
   6141 
   6142 COMPILE_ASSERT(sizeof(TexSubImage2DImmediate) == 40,
   6143                Sizeof_TexSubImage2DImmediate_is_not_40);
   6144 COMPILE_ASSERT(offsetof(TexSubImage2DImmediate, header) == 0,
   6145                OffsetOf_TexSubImage2DImmediate_header_not_0);
   6146 COMPILE_ASSERT(offsetof(TexSubImage2DImmediate, target) == 4,
   6147                OffsetOf_TexSubImage2DImmediate_target_not_4);
   6148 COMPILE_ASSERT(offsetof(TexSubImage2DImmediate, level) == 8,
   6149                OffsetOf_TexSubImage2DImmediate_level_not_8);
   6150 COMPILE_ASSERT(offsetof(TexSubImage2DImmediate, xoffset) == 12,
   6151                OffsetOf_TexSubImage2DImmediate_xoffset_not_12);
   6152 COMPILE_ASSERT(offsetof(TexSubImage2DImmediate, yoffset) == 16,
   6153                OffsetOf_TexSubImage2DImmediate_yoffset_not_16);
   6154 COMPILE_ASSERT(offsetof(TexSubImage2DImmediate, width) == 20,
   6155                OffsetOf_TexSubImage2DImmediate_width_not_20);
   6156 COMPILE_ASSERT(offsetof(TexSubImage2DImmediate, height) == 24,
   6157                OffsetOf_TexSubImage2DImmediate_height_not_24);
   6158 COMPILE_ASSERT(offsetof(TexSubImage2DImmediate, format) == 28,
   6159                OffsetOf_TexSubImage2DImmediate_format_not_28);
   6160 COMPILE_ASSERT(offsetof(TexSubImage2DImmediate, type) == 32,
   6161                OffsetOf_TexSubImage2DImmediate_type_not_32);
   6162 COMPILE_ASSERT(offsetof(TexSubImage2DImmediate, internal) == 36,
   6163                OffsetOf_TexSubImage2DImmediate_internal_not_36);
   6164 
   6165 struct Uniform1f {
   6166   typedef Uniform1f ValueType;
   6167   static const CommandId kCmdId = kUniform1f;
   6168   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   6169 
   6170   static uint32 ComputeSize() {
   6171     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   6172   }
   6173 
   6174   void SetHeader() {
   6175     header.SetCmd<ValueType>();
   6176   }
   6177 
   6178   void Init(GLint _location, GLfloat _x) {
   6179     SetHeader();
   6180     location = _location;
   6181     x = _x;
   6182   }
   6183 
   6184   void* Set(void* cmd, GLint _location, GLfloat _x) {
   6185     static_cast<ValueType*>(cmd)->Init(_location, _x);
   6186     return NextCmdAddress<ValueType>(cmd);
   6187   }
   6188 
   6189   gpu::CommandHeader header;
   6190   int32 location;
   6191   float x;
   6192 };
   6193 
   6194 COMPILE_ASSERT(sizeof(Uniform1f) == 12,
   6195                Sizeof_Uniform1f_is_not_12);
   6196 COMPILE_ASSERT(offsetof(Uniform1f, header) == 0,
   6197                OffsetOf_Uniform1f_header_not_0);
   6198 COMPILE_ASSERT(offsetof(Uniform1f, location) == 4,
   6199                OffsetOf_Uniform1f_location_not_4);
   6200 COMPILE_ASSERT(offsetof(Uniform1f, x) == 8,
   6201                OffsetOf_Uniform1f_x_not_8);
   6202 
   6203 struct Uniform1fv {
   6204   typedef Uniform1fv ValueType;
   6205   static const CommandId kCmdId = kUniform1fv;
   6206   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   6207 
   6208   static uint32 ComputeSize() {
   6209     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   6210   }
   6211 
   6212   void SetHeader() {
   6213     header.SetCmd<ValueType>();
   6214   }
   6215 
   6216   void Init(
   6217       GLint _location, GLsizei _count, uint32 _v_shm_id,
   6218       uint32 _v_shm_offset) {
   6219     SetHeader();
   6220     location = _location;
   6221     count = _count;
   6222     v_shm_id = _v_shm_id;
   6223     v_shm_offset = _v_shm_offset;
   6224   }
   6225 
   6226   void* Set(
   6227       void* cmd, GLint _location, GLsizei _count, uint32 _v_shm_id,
   6228       uint32 _v_shm_offset) {
   6229     static_cast<ValueType*>(
   6230         cmd)->Init(_location, _count, _v_shm_id, _v_shm_offset);
   6231     return NextCmdAddress<ValueType>(cmd);
   6232   }
   6233 
   6234   gpu::CommandHeader header;
   6235   int32 location;
   6236   int32 count;
   6237   uint32 v_shm_id;
   6238   uint32 v_shm_offset;
   6239 };
   6240 
   6241 COMPILE_ASSERT(sizeof(Uniform1fv) == 20,
   6242                Sizeof_Uniform1fv_is_not_20);
   6243 COMPILE_ASSERT(offsetof(Uniform1fv, header) == 0,
   6244                OffsetOf_Uniform1fv_header_not_0);
   6245 COMPILE_ASSERT(offsetof(Uniform1fv, location) == 4,
   6246                OffsetOf_Uniform1fv_location_not_4);
   6247 COMPILE_ASSERT(offsetof(Uniform1fv, count) == 8,
   6248                OffsetOf_Uniform1fv_count_not_8);
   6249 COMPILE_ASSERT(offsetof(Uniform1fv, v_shm_id) == 12,
   6250                OffsetOf_Uniform1fv_v_shm_id_not_12);
   6251 COMPILE_ASSERT(offsetof(Uniform1fv, v_shm_offset) == 16,
   6252                OffsetOf_Uniform1fv_v_shm_offset_not_16);
   6253 
   6254 struct Uniform1fvImmediate {
   6255   typedef Uniform1fvImmediate ValueType;
   6256   static const CommandId kCmdId = kUniform1fvImmediate;
   6257   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   6258 
   6259   static uint32 ComputeDataSize(GLsizei count) {
   6260     return static_cast<uint32>(
   6261         sizeof(GLfloat) * 1 * count);  // NOLINT
   6262   }
   6263 
   6264   static uint32 ComputeSize(GLsizei count) {
   6265     return static_cast<uint32>(
   6266         sizeof(ValueType) + ComputeDataSize(count));  // NOLINT
   6267   }
   6268 
   6269   void SetHeader(GLsizei count) {
   6270     header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
   6271   }
   6272 
   6273   void Init(GLint _location, GLsizei _count, const GLfloat* _v) {
   6274     SetHeader(_count);
   6275     location = _location;
   6276     count = _count;
   6277     memcpy(ImmediateDataAddress(this),
   6278            _v, ComputeDataSize(_count));
   6279   }
   6280 
   6281   void* Set(void* cmd, GLint _location, GLsizei _count, const GLfloat* _v) {
   6282     static_cast<ValueType*>(cmd)->Init(_location, _count, _v);
   6283     const uint32 size = ComputeSize(_count);
   6284     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   6285   }
   6286 
   6287   gpu::CommandHeader header;
   6288   int32 location;
   6289   int32 count;
   6290 };
   6291 
   6292 COMPILE_ASSERT(sizeof(Uniform1fvImmediate) == 12,
   6293                Sizeof_Uniform1fvImmediate_is_not_12);
   6294 COMPILE_ASSERT(offsetof(Uniform1fvImmediate, header) == 0,
   6295                OffsetOf_Uniform1fvImmediate_header_not_0);
   6296 COMPILE_ASSERT(offsetof(Uniform1fvImmediate, location) == 4,
   6297                OffsetOf_Uniform1fvImmediate_location_not_4);
   6298 COMPILE_ASSERT(offsetof(Uniform1fvImmediate, count) == 8,
   6299                OffsetOf_Uniform1fvImmediate_count_not_8);
   6300 
   6301 struct Uniform1i {
   6302   typedef Uniform1i ValueType;
   6303   static const CommandId kCmdId = kUniform1i;
   6304   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   6305 
   6306   static uint32 ComputeSize() {
   6307     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   6308   }
   6309 
   6310   void SetHeader() {
   6311     header.SetCmd<ValueType>();
   6312   }
   6313 
   6314   void Init(GLint _location, GLint _x) {
   6315     SetHeader();
   6316     location = _location;
   6317     x = _x;
   6318   }
   6319 
   6320   void* Set(void* cmd, GLint _location, GLint _x) {
   6321     static_cast<ValueType*>(cmd)->Init(_location, _x);
   6322     return NextCmdAddress<ValueType>(cmd);
   6323   }
   6324 
   6325   gpu::CommandHeader header;
   6326   int32 location;
   6327   int32 x;
   6328 };
   6329 
   6330 COMPILE_ASSERT(sizeof(Uniform1i) == 12,
   6331                Sizeof_Uniform1i_is_not_12);
   6332 COMPILE_ASSERT(offsetof(Uniform1i, header) == 0,
   6333                OffsetOf_Uniform1i_header_not_0);
   6334 COMPILE_ASSERT(offsetof(Uniform1i, location) == 4,
   6335                OffsetOf_Uniform1i_location_not_4);
   6336 COMPILE_ASSERT(offsetof(Uniform1i, x) == 8,
   6337                OffsetOf_Uniform1i_x_not_8);
   6338 
   6339 struct Uniform1iv {
   6340   typedef Uniform1iv ValueType;
   6341   static const CommandId kCmdId = kUniform1iv;
   6342   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   6343 
   6344   static uint32 ComputeSize() {
   6345     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   6346   }
   6347 
   6348   void SetHeader() {
   6349     header.SetCmd<ValueType>();
   6350   }
   6351 
   6352   void Init(
   6353       GLint _location, GLsizei _count, uint32 _v_shm_id,
   6354       uint32 _v_shm_offset) {
   6355     SetHeader();
   6356     location = _location;
   6357     count = _count;
   6358     v_shm_id = _v_shm_id;
   6359     v_shm_offset = _v_shm_offset;
   6360   }
   6361 
   6362   void* Set(
   6363       void* cmd, GLint _location, GLsizei _count, uint32 _v_shm_id,
   6364       uint32 _v_shm_offset) {
   6365     static_cast<ValueType*>(
   6366         cmd)->Init(_location, _count, _v_shm_id, _v_shm_offset);
   6367     return NextCmdAddress<ValueType>(cmd);
   6368   }
   6369 
   6370   gpu::CommandHeader header;
   6371   int32 location;
   6372   int32 count;
   6373   uint32 v_shm_id;
   6374   uint32 v_shm_offset;
   6375 };
   6376 
   6377 COMPILE_ASSERT(sizeof(Uniform1iv) == 20,
   6378                Sizeof_Uniform1iv_is_not_20);
   6379 COMPILE_ASSERT(offsetof(Uniform1iv, header) == 0,
   6380                OffsetOf_Uniform1iv_header_not_0);
   6381 COMPILE_ASSERT(offsetof(Uniform1iv, location) == 4,
   6382                OffsetOf_Uniform1iv_location_not_4);
   6383 COMPILE_ASSERT(offsetof(Uniform1iv, count) == 8,
   6384                OffsetOf_Uniform1iv_count_not_8);
   6385 COMPILE_ASSERT(offsetof(Uniform1iv, v_shm_id) == 12,
   6386                OffsetOf_Uniform1iv_v_shm_id_not_12);
   6387 COMPILE_ASSERT(offsetof(Uniform1iv, v_shm_offset) == 16,
   6388                OffsetOf_Uniform1iv_v_shm_offset_not_16);
   6389 
   6390 struct Uniform1ivImmediate {
   6391   typedef Uniform1ivImmediate ValueType;
   6392   static const CommandId kCmdId = kUniform1ivImmediate;
   6393   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   6394 
   6395   static uint32 ComputeDataSize(GLsizei count) {
   6396     return static_cast<uint32>(
   6397         sizeof(GLint) * 1 * count);  // NOLINT
   6398   }
   6399 
   6400   static uint32 ComputeSize(GLsizei count) {
   6401     return static_cast<uint32>(
   6402         sizeof(ValueType) + ComputeDataSize(count));  // NOLINT
   6403   }
   6404 
   6405   void SetHeader(GLsizei count) {
   6406     header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
   6407   }
   6408 
   6409   void Init(GLint _location, GLsizei _count, const GLint* _v) {
   6410     SetHeader(_count);
   6411     location = _location;
   6412     count = _count;
   6413     memcpy(ImmediateDataAddress(this),
   6414            _v, ComputeDataSize(_count));
   6415   }
   6416 
   6417   void* Set(void* cmd, GLint _location, GLsizei _count, const GLint* _v) {
   6418     static_cast<ValueType*>(cmd)->Init(_location, _count, _v);
   6419     const uint32 size = ComputeSize(_count);
   6420     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   6421   }
   6422 
   6423   gpu::CommandHeader header;
   6424   int32 location;
   6425   int32 count;
   6426 };
   6427 
   6428 COMPILE_ASSERT(sizeof(Uniform1ivImmediate) == 12,
   6429                Sizeof_Uniform1ivImmediate_is_not_12);
   6430 COMPILE_ASSERT(offsetof(Uniform1ivImmediate, header) == 0,
   6431                OffsetOf_Uniform1ivImmediate_header_not_0);
   6432 COMPILE_ASSERT(offsetof(Uniform1ivImmediate, location) == 4,
   6433                OffsetOf_Uniform1ivImmediate_location_not_4);
   6434 COMPILE_ASSERT(offsetof(Uniform1ivImmediate, count) == 8,
   6435                OffsetOf_Uniform1ivImmediate_count_not_8);
   6436 
   6437 struct Uniform2f {
   6438   typedef Uniform2f ValueType;
   6439   static const CommandId kCmdId = kUniform2f;
   6440   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   6441 
   6442   static uint32 ComputeSize() {
   6443     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   6444   }
   6445 
   6446   void SetHeader() {
   6447     header.SetCmd<ValueType>();
   6448   }
   6449 
   6450   void Init(GLint _location, GLfloat _x, GLfloat _y) {
   6451     SetHeader();
   6452     location = _location;
   6453     x = _x;
   6454     y = _y;
   6455   }
   6456 
   6457   void* Set(void* cmd, GLint _location, GLfloat _x, GLfloat _y) {
   6458     static_cast<ValueType*>(cmd)->Init(_location, _x, _y);
   6459     return NextCmdAddress<ValueType>(cmd);
   6460   }
   6461 
   6462   gpu::CommandHeader header;
   6463   int32 location;
   6464   float x;
   6465   float y;
   6466 };
   6467 
   6468 COMPILE_ASSERT(sizeof(Uniform2f) == 16,
   6469                Sizeof_Uniform2f_is_not_16);
   6470 COMPILE_ASSERT(offsetof(Uniform2f, header) == 0,
   6471                OffsetOf_Uniform2f_header_not_0);
   6472 COMPILE_ASSERT(offsetof(Uniform2f, location) == 4,
   6473                OffsetOf_Uniform2f_location_not_4);
   6474 COMPILE_ASSERT(offsetof(Uniform2f, x) == 8,
   6475                OffsetOf_Uniform2f_x_not_8);
   6476 COMPILE_ASSERT(offsetof(Uniform2f, y) == 12,
   6477                OffsetOf_Uniform2f_y_not_12);
   6478 
   6479 struct Uniform2fv {
   6480   typedef Uniform2fv ValueType;
   6481   static const CommandId kCmdId = kUniform2fv;
   6482   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   6483 
   6484   static uint32 ComputeSize() {
   6485     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   6486   }
   6487 
   6488   void SetHeader() {
   6489     header.SetCmd<ValueType>();
   6490   }
   6491 
   6492   void Init(
   6493       GLint _location, GLsizei _count, uint32 _v_shm_id,
   6494       uint32 _v_shm_offset) {
   6495     SetHeader();
   6496     location = _location;
   6497     count = _count;
   6498     v_shm_id = _v_shm_id;
   6499     v_shm_offset = _v_shm_offset;
   6500   }
   6501 
   6502   void* Set(
   6503       void* cmd, GLint _location, GLsizei _count, uint32 _v_shm_id,
   6504       uint32 _v_shm_offset) {
   6505     static_cast<ValueType*>(
   6506         cmd)->Init(_location, _count, _v_shm_id, _v_shm_offset);
   6507     return NextCmdAddress<ValueType>(cmd);
   6508   }
   6509 
   6510   gpu::CommandHeader header;
   6511   int32 location;
   6512   int32 count;
   6513   uint32 v_shm_id;
   6514   uint32 v_shm_offset;
   6515 };
   6516 
   6517 COMPILE_ASSERT(sizeof(Uniform2fv) == 20,
   6518                Sizeof_Uniform2fv_is_not_20);
   6519 COMPILE_ASSERT(offsetof(Uniform2fv, header) == 0,
   6520                OffsetOf_Uniform2fv_header_not_0);
   6521 COMPILE_ASSERT(offsetof(Uniform2fv, location) == 4,
   6522                OffsetOf_Uniform2fv_location_not_4);
   6523 COMPILE_ASSERT(offsetof(Uniform2fv, count) == 8,
   6524                OffsetOf_Uniform2fv_count_not_8);
   6525 COMPILE_ASSERT(offsetof(Uniform2fv, v_shm_id) == 12,
   6526                OffsetOf_Uniform2fv_v_shm_id_not_12);
   6527 COMPILE_ASSERT(offsetof(Uniform2fv, v_shm_offset) == 16,
   6528                OffsetOf_Uniform2fv_v_shm_offset_not_16);
   6529 
   6530 struct Uniform2fvImmediate {
   6531   typedef Uniform2fvImmediate ValueType;
   6532   static const CommandId kCmdId = kUniform2fvImmediate;
   6533   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   6534 
   6535   static uint32 ComputeDataSize(GLsizei count) {
   6536     return static_cast<uint32>(
   6537         sizeof(GLfloat) * 2 * count);  // NOLINT
   6538   }
   6539 
   6540   static uint32 ComputeSize(GLsizei count) {
   6541     return static_cast<uint32>(
   6542         sizeof(ValueType) + ComputeDataSize(count));  // NOLINT
   6543   }
   6544 
   6545   void SetHeader(GLsizei count) {
   6546     header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
   6547   }
   6548 
   6549   void Init(GLint _location, GLsizei _count, const GLfloat* _v) {
   6550     SetHeader(_count);
   6551     location = _location;
   6552     count = _count;
   6553     memcpy(ImmediateDataAddress(this),
   6554            _v, ComputeDataSize(_count));
   6555   }
   6556 
   6557   void* Set(void* cmd, GLint _location, GLsizei _count, const GLfloat* _v) {
   6558     static_cast<ValueType*>(cmd)->Init(_location, _count, _v);
   6559     const uint32 size = ComputeSize(_count);
   6560     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   6561   }
   6562 
   6563   gpu::CommandHeader header;
   6564   int32 location;
   6565   int32 count;
   6566 };
   6567 
   6568 COMPILE_ASSERT(sizeof(Uniform2fvImmediate) == 12,
   6569                Sizeof_Uniform2fvImmediate_is_not_12);
   6570 COMPILE_ASSERT(offsetof(Uniform2fvImmediate, header) == 0,
   6571                OffsetOf_Uniform2fvImmediate_header_not_0);
   6572 COMPILE_ASSERT(offsetof(Uniform2fvImmediate, location) == 4,
   6573                OffsetOf_Uniform2fvImmediate_location_not_4);
   6574 COMPILE_ASSERT(offsetof(Uniform2fvImmediate, count) == 8,
   6575                OffsetOf_Uniform2fvImmediate_count_not_8);
   6576 
   6577 struct Uniform2i {
   6578   typedef Uniform2i ValueType;
   6579   static const CommandId kCmdId = kUniform2i;
   6580   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   6581 
   6582   static uint32 ComputeSize() {
   6583     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   6584   }
   6585 
   6586   void SetHeader() {
   6587     header.SetCmd<ValueType>();
   6588   }
   6589 
   6590   void Init(GLint _location, GLint _x, GLint _y) {
   6591     SetHeader();
   6592     location = _location;
   6593     x = _x;
   6594     y = _y;
   6595   }
   6596 
   6597   void* Set(void* cmd, GLint _location, GLint _x, GLint _y) {
   6598     static_cast<ValueType*>(cmd)->Init(_location, _x, _y);
   6599     return NextCmdAddress<ValueType>(cmd);
   6600   }
   6601 
   6602   gpu::CommandHeader header;
   6603   int32 location;
   6604   int32 x;
   6605   int32 y;
   6606 };
   6607 
   6608 COMPILE_ASSERT(sizeof(Uniform2i) == 16,
   6609                Sizeof_Uniform2i_is_not_16);
   6610 COMPILE_ASSERT(offsetof(Uniform2i, header) == 0,
   6611                OffsetOf_Uniform2i_header_not_0);
   6612 COMPILE_ASSERT(offsetof(Uniform2i, location) == 4,
   6613                OffsetOf_Uniform2i_location_not_4);
   6614 COMPILE_ASSERT(offsetof(Uniform2i, x) == 8,
   6615                OffsetOf_Uniform2i_x_not_8);
   6616 COMPILE_ASSERT(offsetof(Uniform2i, y) == 12,
   6617                OffsetOf_Uniform2i_y_not_12);
   6618 
   6619 struct Uniform2iv {
   6620   typedef Uniform2iv ValueType;
   6621   static const CommandId kCmdId = kUniform2iv;
   6622   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   6623 
   6624   static uint32 ComputeSize() {
   6625     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   6626   }
   6627 
   6628   void SetHeader() {
   6629     header.SetCmd<ValueType>();
   6630   }
   6631 
   6632   void Init(
   6633       GLint _location, GLsizei _count, uint32 _v_shm_id,
   6634       uint32 _v_shm_offset) {
   6635     SetHeader();
   6636     location = _location;
   6637     count = _count;
   6638     v_shm_id = _v_shm_id;
   6639     v_shm_offset = _v_shm_offset;
   6640   }
   6641 
   6642   void* Set(
   6643       void* cmd, GLint _location, GLsizei _count, uint32 _v_shm_id,
   6644       uint32 _v_shm_offset) {
   6645     static_cast<ValueType*>(
   6646         cmd)->Init(_location, _count, _v_shm_id, _v_shm_offset);
   6647     return NextCmdAddress<ValueType>(cmd);
   6648   }
   6649 
   6650   gpu::CommandHeader header;
   6651   int32 location;
   6652   int32 count;
   6653   uint32 v_shm_id;
   6654   uint32 v_shm_offset;
   6655 };
   6656 
   6657 COMPILE_ASSERT(sizeof(Uniform2iv) == 20,
   6658                Sizeof_Uniform2iv_is_not_20);
   6659 COMPILE_ASSERT(offsetof(Uniform2iv, header) == 0,
   6660                OffsetOf_Uniform2iv_header_not_0);
   6661 COMPILE_ASSERT(offsetof(Uniform2iv, location) == 4,
   6662                OffsetOf_Uniform2iv_location_not_4);
   6663 COMPILE_ASSERT(offsetof(Uniform2iv, count) == 8,
   6664                OffsetOf_Uniform2iv_count_not_8);
   6665 COMPILE_ASSERT(offsetof(Uniform2iv, v_shm_id) == 12,
   6666                OffsetOf_Uniform2iv_v_shm_id_not_12);
   6667 COMPILE_ASSERT(offsetof(Uniform2iv, v_shm_offset) == 16,
   6668                OffsetOf_Uniform2iv_v_shm_offset_not_16);
   6669 
   6670 struct Uniform2ivImmediate {
   6671   typedef Uniform2ivImmediate ValueType;
   6672   static const CommandId kCmdId = kUniform2ivImmediate;
   6673   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   6674 
   6675   static uint32 ComputeDataSize(GLsizei count) {
   6676     return static_cast<uint32>(
   6677         sizeof(GLint) * 2 * count);  // NOLINT
   6678   }
   6679 
   6680   static uint32 ComputeSize(GLsizei count) {
   6681     return static_cast<uint32>(
   6682         sizeof(ValueType) + ComputeDataSize(count));  // NOLINT
   6683   }
   6684 
   6685   void SetHeader(GLsizei count) {
   6686     header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
   6687   }
   6688 
   6689   void Init(GLint _location, GLsizei _count, const GLint* _v) {
   6690     SetHeader(_count);
   6691     location = _location;
   6692     count = _count;
   6693     memcpy(ImmediateDataAddress(this),
   6694            _v, ComputeDataSize(_count));
   6695   }
   6696 
   6697   void* Set(void* cmd, GLint _location, GLsizei _count, const GLint* _v) {
   6698     static_cast<ValueType*>(cmd)->Init(_location, _count, _v);
   6699     const uint32 size = ComputeSize(_count);
   6700     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   6701   }
   6702 
   6703   gpu::CommandHeader header;
   6704   int32 location;
   6705   int32 count;
   6706 };
   6707 
   6708 COMPILE_ASSERT(sizeof(Uniform2ivImmediate) == 12,
   6709                Sizeof_Uniform2ivImmediate_is_not_12);
   6710 COMPILE_ASSERT(offsetof(Uniform2ivImmediate, header) == 0,
   6711                OffsetOf_Uniform2ivImmediate_header_not_0);
   6712 COMPILE_ASSERT(offsetof(Uniform2ivImmediate, location) == 4,
   6713                OffsetOf_Uniform2ivImmediate_location_not_4);
   6714 COMPILE_ASSERT(offsetof(Uniform2ivImmediate, count) == 8,
   6715                OffsetOf_Uniform2ivImmediate_count_not_8);
   6716 
   6717 struct Uniform3f {
   6718   typedef Uniform3f ValueType;
   6719   static const CommandId kCmdId = kUniform3f;
   6720   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   6721 
   6722   static uint32 ComputeSize() {
   6723     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   6724   }
   6725 
   6726   void SetHeader() {
   6727     header.SetCmd<ValueType>();
   6728   }
   6729 
   6730   void Init(GLint _location, GLfloat _x, GLfloat _y, GLfloat _z) {
   6731     SetHeader();
   6732     location = _location;
   6733     x = _x;
   6734     y = _y;
   6735     z = _z;
   6736   }
   6737 
   6738   void* Set(void* cmd, GLint _location, GLfloat _x, GLfloat _y, GLfloat _z) {
   6739     static_cast<ValueType*>(cmd)->Init(_location, _x, _y, _z);
   6740     return NextCmdAddress<ValueType>(cmd);
   6741   }
   6742 
   6743   gpu::CommandHeader header;
   6744   int32 location;
   6745   float x;
   6746   float y;
   6747   float z;
   6748 };
   6749 
   6750 COMPILE_ASSERT(sizeof(Uniform3f) == 20,
   6751                Sizeof_Uniform3f_is_not_20);
   6752 COMPILE_ASSERT(offsetof(Uniform3f, header) == 0,
   6753                OffsetOf_Uniform3f_header_not_0);
   6754 COMPILE_ASSERT(offsetof(Uniform3f, location) == 4,
   6755                OffsetOf_Uniform3f_location_not_4);
   6756 COMPILE_ASSERT(offsetof(Uniform3f, x) == 8,
   6757                OffsetOf_Uniform3f_x_not_8);
   6758 COMPILE_ASSERT(offsetof(Uniform3f, y) == 12,
   6759                OffsetOf_Uniform3f_y_not_12);
   6760 COMPILE_ASSERT(offsetof(Uniform3f, z) == 16,
   6761                OffsetOf_Uniform3f_z_not_16);
   6762 
   6763 struct Uniform3fv {
   6764   typedef Uniform3fv ValueType;
   6765   static const CommandId kCmdId = kUniform3fv;
   6766   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   6767 
   6768   static uint32 ComputeSize() {
   6769     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   6770   }
   6771 
   6772   void SetHeader() {
   6773     header.SetCmd<ValueType>();
   6774   }
   6775 
   6776   void Init(
   6777       GLint _location, GLsizei _count, uint32 _v_shm_id,
   6778       uint32 _v_shm_offset) {
   6779     SetHeader();
   6780     location = _location;
   6781     count = _count;
   6782     v_shm_id = _v_shm_id;
   6783     v_shm_offset = _v_shm_offset;
   6784   }
   6785 
   6786   void* Set(
   6787       void* cmd, GLint _location, GLsizei _count, uint32 _v_shm_id,
   6788       uint32 _v_shm_offset) {
   6789     static_cast<ValueType*>(
   6790         cmd)->Init(_location, _count, _v_shm_id, _v_shm_offset);
   6791     return NextCmdAddress<ValueType>(cmd);
   6792   }
   6793 
   6794   gpu::CommandHeader header;
   6795   int32 location;
   6796   int32 count;
   6797   uint32 v_shm_id;
   6798   uint32 v_shm_offset;
   6799 };
   6800 
   6801 COMPILE_ASSERT(sizeof(Uniform3fv) == 20,
   6802                Sizeof_Uniform3fv_is_not_20);
   6803 COMPILE_ASSERT(offsetof(Uniform3fv, header) == 0,
   6804                OffsetOf_Uniform3fv_header_not_0);
   6805 COMPILE_ASSERT(offsetof(Uniform3fv, location) == 4,
   6806                OffsetOf_Uniform3fv_location_not_4);
   6807 COMPILE_ASSERT(offsetof(Uniform3fv, count) == 8,
   6808                OffsetOf_Uniform3fv_count_not_8);
   6809 COMPILE_ASSERT(offsetof(Uniform3fv, v_shm_id) == 12,
   6810                OffsetOf_Uniform3fv_v_shm_id_not_12);
   6811 COMPILE_ASSERT(offsetof(Uniform3fv, v_shm_offset) == 16,
   6812                OffsetOf_Uniform3fv_v_shm_offset_not_16);
   6813 
   6814 struct Uniform3fvImmediate {
   6815   typedef Uniform3fvImmediate ValueType;
   6816   static const CommandId kCmdId = kUniform3fvImmediate;
   6817   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   6818 
   6819   static uint32 ComputeDataSize(GLsizei count) {
   6820     return static_cast<uint32>(
   6821         sizeof(GLfloat) * 3 * count);  // NOLINT
   6822   }
   6823 
   6824   static uint32 ComputeSize(GLsizei count) {
   6825     return static_cast<uint32>(
   6826         sizeof(ValueType) + ComputeDataSize(count));  // NOLINT
   6827   }
   6828 
   6829   void SetHeader(GLsizei count) {
   6830     header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
   6831   }
   6832 
   6833   void Init(GLint _location, GLsizei _count, const GLfloat* _v) {
   6834     SetHeader(_count);
   6835     location = _location;
   6836     count = _count;
   6837     memcpy(ImmediateDataAddress(this),
   6838            _v, ComputeDataSize(_count));
   6839   }
   6840 
   6841   void* Set(void* cmd, GLint _location, GLsizei _count, const GLfloat* _v) {
   6842     static_cast<ValueType*>(cmd)->Init(_location, _count, _v);
   6843     const uint32 size = ComputeSize(_count);
   6844     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   6845   }
   6846 
   6847   gpu::CommandHeader header;
   6848   int32 location;
   6849   int32 count;
   6850 };
   6851 
   6852 COMPILE_ASSERT(sizeof(Uniform3fvImmediate) == 12,
   6853                Sizeof_Uniform3fvImmediate_is_not_12);
   6854 COMPILE_ASSERT(offsetof(Uniform3fvImmediate, header) == 0,
   6855                OffsetOf_Uniform3fvImmediate_header_not_0);
   6856 COMPILE_ASSERT(offsetof(Uniform3fvImmediate, location) == 4,
   6857                OffsetOf_Uniform3fvImmediate_location_not_4);
   6858 COMPILE_ASSERT(offsetof(Uniform3fvImmediate, count) == 8,
   6859                OffsetOf_Uniform3fvImmediate_count_not_8);
   6860 
   6861 struct Uniform3i {
   6862   typedef Uniform3i ValueType;
   6863   static const CommandId kCmdId = kUniform3i;
   6864   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   6865 
   6866   static uint32 ComputeSize() {
   6867     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   6868   }
   6869 
   6870   void SetHeader() {
   6871     header.SetCmd<ValueType>();
   6872   }
   6873 
   6874   void Init(GLint _location, GLint _x, GLint _y, GLint _z) {
   6875     SetHeader();
   6876     location = _location;
   6877     x = _x;
   6878     y = _y;
   6879     z = _z;
   6880   }
   6881 
   6882   void* Set(void* cmd, GLint _location, GLint _x, GLint _y, GLint _z) {
   6883     static_cast<ValueType*>(cmd)->Init(_location, _x, _y, _z);
   6884     return NextCmdAddress<ValueType>(cmd);
   6885   }
   6886 
   6887   gpu::CommandHeader header;
   6888   int32 location;
   6889   int32 x;
   6890   int32 y;
   6891   int32 z;
   6892 };
   6893 
   6894 COMPILE_ASSERT(sizeof(Uniform3i) == 20,
   6895                Sizeof_Uniform3i_is_not_20);
   6896 COMPILE_ASSERT(offsetof(Uniform3i, header) == 0,
   6897                OffsetOf_Uniform3i_header_not_0);
   6898 COMPILE_ASSERT(offsetof(Uniform3i, location) == 4,
   6899                OffsetOf_Uniform3i_location_not_4);
   6900 COMPILE_ASSERT(offsetof(Uniform3i, x) == 8,
   6901                OffsetOf_Uniform3i_x_not_8);
   6902 COMPILE_ASSERT(offsetof(Uniform3i, y) == 12,
   6903                OffsetOf_Uniform3i_y_not_12);
   6904 COMPILE_ASSERT(offsetof(Uniform3i, z) == 16,
   6905                OffsetOf_Uniform3i_z_not_16);
   6906 
   6907 struct Uniform3iv {
   6908   typedef Uniform3iv ValueType;
   6909   static const CommandId kCmdId = kUniform3iv;
   6910   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   6911 
   6912   static uint32 ComputeSize() {
   6913     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   6914   }
   6915 
   6916   void SetHeader() {
   6917     header.SetCmd<ValueType>();
   6918   }
   6919 
   6920   void Init(
   6921       GLint _location, GLsizei _count, uint32 _v_shm_id,
   6922       uint32 _v_shm_offset) {
   6923     SetHeader();
   6924     location = _location;
   6925     count = _count;
   6926     v_shm_id = _v_shm_id;
   6927     v_shm_offset = _v_shm_offset;
   6928   }
   6929 
   6930   void* Set(
   6931       void* cmd, GLint _location, GLsizei _count, uint32 _v_shm_id,
   6932       uint32 _v_shm_offset) {
   6933     static_cast<ValueType*>(
   6934         cmd)->Init(_location, _count, _v_shm_id, _v_shm_offset);
   6935     return NextCmdAddress<ValueType>(cmd);
   6936   }
   6937 
   6938   gpu::CommandHeader header;
   6939   int32 location;
   6940   int32 count;
   6941   uint32 v_shm_id;
   6942   uint32 v_shm_offset;
   6943 };
   6944 
   6945 COMPILE_ASSERT(sizeof(Uniform3iv) == 20,
   6946                Sizeof_Uniform3iv_is_not_20);
   6947 COMPILE_ASSERT(offsetof(Uniform3iv, header) == 0,
   6948                OffsetOf_Uniform3iv_header_not_0);
   6949 COMPILE_ASSERT(offsetof(Uniform3iv, location) == 4,
   6950                OffsetOf_Uniform3iv_location_not_4);
   6951 COMPILE_ASSERT(offsetof(Uniform3iv, count) == 8,
   6952                OffsetOf_Uniform3iv_count_not_8);
   6953 COMPILE_ASSERT(offsetof(Uniform3iv, v_shm_id) == 12,
   6954                OffsetOf_Uniform3iv_v_shm_id_not_12);
   6955 COMPILE_ASSERT(offsetof(Uniform3iv, v_shm_offset) == 16,
   6956                OffsetOf_Uniform3iv_v_shm_offset_not_16);
   6957 
   6958 struct Uniform3ivImmediate {
   6959   typedef Uniform3ivImmediate ValueType;
   6960   static const CommandId kCmdId = kUniform3ivImmediate;
   6961   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   6962 
   6963   static uint32 ComputeDataSize(GLsizei count) {
   6964     return static_cast<uint32>(
   6965         sizeof(GLint) * 3 * count);  // NOLINT
   6966   }
   6967 
   6968   static uint32 ComputeSize(GLsizei count) {
   6969     return static_cast<uint32>(
   6970         sizeof(ValueType) + ComputeDataSize(count));  // NOLINT
   6971   }
   6972 
   6973   void SetHeader(GLsizei count) {
   6974     header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
   6975   }
   6976 
   6977   void Init(GLint _location, GLsizei _count, const GLint* _v) {
   6978     SetHeader(_count);
   6979     location = _location;
   6980     count = _count;
   6981     memcpy(ImmediateDataAddress(this),
   6982            _v, ComputeDataSize(_count));
   6983   }
   6984 
   6985   void* Set(void* cmd, GLint _location, GLsizei _count, const GLint* _v) {
   6986     static_cast<ValueType*>(cmd)->Init(_location, _count, _v);
   6987     const uint32 size = ComputeSize(_count);
   6988     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   6989   }
   6990 
   6991   gpu::CommandHeader header;
   6992   int32 location;
   6993   int32 count;
   6994 };
   6995 
   6996 COMPILE_ASSERT(sizeof(Uniform3ivImmediate) == 12,
   6997                Sizeof_Uniform3ivImmediate_is_not_12);
   6998 COMPILE_ASSERT(offsetof(Uniform3ivImmediate, header) == 0,
   6999                OffsetOf_Uniform3ivImmediate_header_not_0);
   7000 COMPILE_ASSERT(offsetof(Uniform3ivImmediate, location) == 4,
   7001                OffsetOf_Uniform3ivImmediate_location_not_4);
   7002 COMPILE_ASSERT(offsetof(Uniform3ivImmediate, count) == 8,
   7003                OffsetOf_Uniform3ivImmediate_count_not_8);
   7004 
   7005 struct Uniform4f {
   7006   typedef Uniform4f ValueType;
   7007   static const CommandId kCmdId = kUniform4f;
   7008   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   7009 
   7010   static uint32 ComputeSize() {
   7011     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   7012   }
   7013 
   7014   void SetHeader() {
   7015     header.SetCmd<ValueType>();
   7016   }
   7017 
   7018   void Init(GLint _location, GLfloat _x, GLfloat _y, GLfloat _z, GLfloat _w) {
   7019     SetHeader();
   7020     location = _location;
   7021     x = _x;
   7022     y = _y;
   7023     z = _z;
   7024     w = _w;
   7025   }
   7026 
   7027   void* Set(
   7028       void* cmd, GLint _location, GLfloat _x, GLfloat _y, GLfloat _z,
   7029       GLfloat _w) {
   7030     static_cast<ValueType*>(cmd)->Init(_location, _x, _y, _z, _w);
   7031     return NextCmdAddress<ValueType>(cmd);
   7032   }
   7033 
   7034   gpu::CommandHeader header;
   7035   int32 location;
   7036   float x;
   7037   float y;
   7038   float z;
   7039   float w;
   7040 };
   7041 
   7042 COMPILE_ASSERT(sizeof(Uniform4f) == 24,
   7043                Sizeof_Uniform4f_is_not_24);
   7044 COMPILE_ASSERT(offsetof(Uniform4f, header) == 0,
   7045                OffsetOf_Uniform4f_header_not_0);
   7046 COMPILE_ASSERT(offsetof(Uniform4f, location) == 4,
   7047                OffsetOf_Uniform4f_location_not_4);
   7048 COMPILE_ASSERT(offsetof(Uniform4f, x) == 8,
   7049                OffsetOf_Uniform4f_x_not_8);
   7050 COMPILE_ASSERT(offsetof(Uniform4f, y) == 12,
   7051                OffsetOf_Uniform4f_y_not_12);
   7052 COMPILE_ASSERT(offsetof(Uniform4f, z) == 16,
   7053                OffsetOf_Uniform4f_z_not_16);
   7054 COMPILE_ASSERT(offsetof(Uniform4f, w) == 20,
   7055                OffsetOf_Uniform4f_w_not_20);
   7056 
   7057 struct Uniform4fv {
   7058   typedef Uniform4fv ValueType;
   7059   static const CommandId kCmdId = kUniform4fv;
   7060   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   7061 
   7062   static uint32 ComputeSize() {
   7063     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   7064   }
   7065 
   7066   void SetHeader() {
   7067     header.SetCmd<ValueType>();
   7068   }
   7069 
   7070   void Init(
   7071       GLint _location, GLsizei _count, uint32 _v_shm_id,
   7072       uint32 _v_shm_offset) {
   7073     SetHeader();
   7074     location = _location;
   7075     count = _count;
   7076     v_shm_id = _v_shm_id;
   7077     v_shm_offset = _v_shm_offset;
   7078   }
   7079 
   7080   void* Set(
   7081       void* cmd, GLint _location, GLsizei _count, uint32 _v_shm_id,
   7082       uint32 _v_shm_offset) {
   7083     static_cast<ValueType*>(
   7084         cmd)->Init(_location, _count, _v_shm_id, _v_shm_offset);
   7085     return NextCmdAddress<ValueType>(cmd);
   7086   }
   7087 
   7088   gpu::CommandHeader header;
   7089   int32 location;
   7090   int32 count;
   7091   uint32 v_shm_id;
   7092   uint32 v_shm_offset;
   7093 };
   7094 
   7095 COMPILE_ASSERT(sizeof(Uniform4fv) == 20,
   7096                Sizeof_Uniform4fv_is_not_20);
   7097 COMPILE_ASSERT(offsetof(Uniform4fv, header) == 0,
   7098                OffsetOf_Uniform4fv_header_not_0);
   7099 COMPILE_ASSERT(offsetof(Uniform4fv, location) == 4,
   7100                OffsetOf_Uniform4fv_location_not_4);
   7101 COMPILE_ASSERT(offsetof(Uniform4fv, count) == 8,
   7102                OffsetOf_Uniform4fv_count_not_8);
   7103 COMPILE_ASSERT(offsetof(Uniform4fv, v_shm_id) == 12,
   7104                OffsetOf_Uniform4fv_v_shm_id_not_12);
   7105 COMPILE_ASSERT(offsetof(Uniform4fv, v_shm_offset) == 16,
   7106                OffsetOf_Uniform4fv_v_shm_offset_not_16);
   7107 
   7108 struct Uniform4fvImmediate {
   7109   typedef Uniform4fvImmediate ValueType;
   7110   static const CommandId kCmdId = kUniform4fvImmediate;
   7111   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   7112 
   7113   static uint32 ComputeDataSize(GLsizei count) {
   7114     return static_cast<uint32>(
   7115         sizeof(GLfloat) * 4 * count);  // NOLINT
   7116   }
   7117 
   7118   static uint32 ComputeSize(GLsizei count) {
   7119     return static_cast<uint32>(
   7120         sizeof(ValueType) + ComputeDataSize(count));  // NOLINT
   7121   }
   7122 
   7123   void SetHeader(GLsizei count) {
   7124     header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
   7125   }
   7126 
   7127   void Init(GLint _location, GLsizei _count, const GLfloat* _v) {
   7128     SetHeader(_count);
   7129     location = _location;
   7130     count = _count;
   7131     memcpy(ImmediateDataAddress(this),
   7132            _v, ComputeDataSize(_count));
   7133   }
   7134 
   7135   void* Set(void* cmd, GLint _location, GLsizei _count, const GLfloat* _v) {
   7136     static_cast<ValueType*>(cmd)->Init(_location, _count, _v);
   7137     const uint32 size = ComputeSize(_count);
   7138     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   7139   }
   7140 
   7141   gpu::CommandHeader header;
   7142   int32 location;
   7143   int32 count;
   7144 };
   7145 
   7146 COMPILE_ASSERT(sizeof(Uniform4fvImmediate) == 12,
   7147                Sizeof_Uniform4fvImmediate_is_not_12);
   7148 COMPILE_ASSERT(offsetof(Uniform4fvImmediate, header) == 0,
   7149                OffsetOf_Uniform4fvImmediate_header_not_0);
   7150 COMPILE_ASSERT(offsetof(Uniform4fvImmediate, location) == 4,
   7151                OffsetOf_Uniform4fvImmediate_location_not_4);
   7152 COMPILE_ASSERT(offsetof(Uniform4fvImmediate, count) == 8,
   7153                OffsetOf_Uniform4fvImmediate_count_not_8);
   7154 
   7155 struct Uniform4i {
   7156   typedef Uniform4i ValueType;
   7157   static const CommandId kCmdId = kUniform4i;
   7158   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   7159 
   7160   static uint32 ComputeSize() {
   7161     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   7162   }
   7163 
   7164   void SetHeader() {
   7165     header.SetCmd<ValueType>();
   7166   }
   7167 
   7168   void Init(GLint _location, GLint _x, GLint _y, GLint _z, GLint _w) {
   7169     SetHeader();
   7170     location = _location;
   7171     x = _x;
   7172     y = _y;
   7173     z = _z;
   7174     w = _w;
   7175   }
   7176 
   7177   void* Set(
   7178       void* cmd, GLint _location, GLint _x, GLint _y, GLint _z, GLint _w) {
   7179     static_cast<ValueType*>(cmd)->Init(_location, _x, _y, _z, _w);
   7180     return NextCmdAddress<ValueType>(cmd);
   7181   }
   7182 
   7183   gpu::CommandHeader header;
   7184   int32 location;
   7185   int32 x;
   7186   int32 y;
   7187   int32 z;
   7188   int32 w;
   7189 };
   7190 
   7191 COMPILE_ASSERT(sizeof(Uniform4i) == 24,
   7192                Sizeof_Uniform4i_is_not_24);
   7193 COMPILE_ASSERT(offsetof(Uniform4i, header) == 0,
   7194                OffsetOf_Uniform4i_header_not_0);
   7195 COMPILE_ASSERT(offsetof(Uniform4i, location) == 4,
   7196                OffsetOf_Uniform4i_location_not_4);
   7197 COMPILE_ASSERT(offsetof(Uniform4i, x) == 8,
   7198                OffsetOf_Uniform4i_x_not_8);
   7199 COMPILE_ASSERT(offsetof(Uniform4i, y) == 12,
   7200                OffsetOf_Uniform4i_y_not_12);
   7201 COMPILE_ASSERT(offsetof(Uniform4i, z) == 16,
   7202                OffsetOf_Uniform4i_z_not_16);
   7203 COMPILE_ASSERT(offsetof(Uniform4i, w) == 20,
   7204                OffsetOf_Uniform4i_w_not_20);
   7205 
   7206 struct Uniform4iv {
   7207   typedef Uniform4iv ValueType;
   7208   static const CommandId kCmdId = kUniform4iv;
   7209   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   7210 
   7211   static uint32 ComputeSize() {
   7212     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   7213   }
   7214 
   7215   void SetHeader() {
   7216     header.SetCmd<ValueType>();
   7217   }
   7218 
   7219   void Init(
   7220       GLint _location, GLsizei _count, uint32 _v_shm_id,
   7221       uint32 _v_shm_offset) {
   7222     SetHeader();
   7223     location = _location;
   7224     count = _count;
   7225     v_shm_id = _v_shm_id;
   7226     v_shm_offset = _v_shm_offset;
   7227   }
   7228 
   7229   void* Set(
   7230       void* cmd, GLint _location, GLsizei _count, uint32 _v_shm_id,
   7231       uint32 _v_shm_offset) {
   7232     static_cast<ValueType*>(
   7233         cmd)->Init(_location, _count, _v_shm_id, _v_shm_offset);
   7234     return NextCmdAddress<ValueType>(cmd);
   7235   }
   7236 
   7237   gpu::CommandHeader header;
   7238   int32 location;
   7239   int32 count;
   7240   uint32 v_shm_id;
   7241   uint32 v_shm_offset;
   7242 };
   7243 
   7244 COMPILE_ASSERT(sizeof(Uniform4iv) == 20,
   7245                Sizeof_Uniform4iv_is_not_20);
   7246 COMPILE_ASSERT(offsetof(Uniform4iv, header) == 0,
   7247                OffsetOf_Uniform4iv_header_not_0);
   7248 COMPILE_ASSERT(offsetof(Uniform4iv, location) == 4,
   7249                OffsetOf_Uniform4iv_location_not_4);
   7250 COMPILE_ASSERT(offsetof(Uniform4iv, count) == 8,
   7251                OffsetOf_Uniform4iv_count_not_8);
   7252 COMPILE_ASSERT(offsetof(Uniform4iv, v_shm_id) == 12,
   7253                OffsetOf_Uniform4iv_v_shm_id_not_12);
   7254 COMPILE_ASSERT(offsetof(Uniform4iv, v_shm_offset) == 16,
   7255                OffsetOf_Uniform4iv_v_shm_offset_not_16);
   7256 
   7257 struct Uniform4ivImmediate {
   7258   typedef Uniform4ivImmediate ValueType;
   7259   static const CommandId kCmdId = kUniform4ivImmediate;
   7260   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   7261 
   7262   static uint32 ComputeDataSize(GLsizei count) {
   7263     return static_cast<uint32>(
   7264         sizeof(GLint) * 4 * count);  // NOLINT
   7265   }
   7266 
   7267   static uint32 ComputeSize(GLsizei count) {
   7268     return static_cast<uint32>(
   7269         sizeof(ValueType) + ComputeDataSize(count));  // NOLINT
   7270   }
   7271 
   7272   void SetHeader(GLsizei count) {
   7273     header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
   7274   }
   7275 
   7276   void Init(GLint _location, GLsizei _count, const GLint* _v) {
   7277     SetHeader(_count);
   7278     location = _location;
   7279     count = _count;
   7280     memcpy(ImmediateDataAddress(this),
   7281            _v, ComputeDataSize(_count));
   7282   }
   7283 
   7284   void* Set(void* cmd, GLint _location, GLsizei _count, const GLint* _v) {
   7285     static_cast<ValueType*>(cmd)->Init(_location, _count, _v);
   7286     const uint32 size = ComputeSize(_count);
   7287     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   7288   }
   7289 
   7290   gpu::CommandHeader header;
   7291   int32 location;
   7292   int32 count;
   7293 };
   7294 
   7295 COMPILE_ASSERT(sizeof(Uniform4ivImmediate) == 12,
   7296                Sizeof_Uniform4ivImmediate_is_not_12);
   7297 COMPILE_ASSERT(offsetof(Uniform4ivImmediate, header) == 0,
   7298                OffsetOf_Uniform4ivImmediate_header_not_0);
   7299 COMPILE_ASSERT(offsetof(Uniform4ivImmediate, location) == 4,
   7300                OffsetOf_Uniform4ivImmediate_location_not_4);
   7301 COMPILE_ASSERT(offsetof(Uniform4ivImmediate, count) == 8,
   7302                OffsetOf_Uniform4ivImmediate_count_not_8);
   7303 
   7304 struct UniformMatrix2fv {
   7305   typedef UniformMatrix2fv ValueType;
   7306   static const CommandId kCmdId = kUniformMatrix2fv;
   7307   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   7308 
   7309   static uint32 ComputeSize() {
   7310     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   7311   }
   7312 
   7313   void SetHeader() {
   7314     header.SetCmd<ValueType>();
   7315   }
   7316 
   7317   void Init(
   7318       GLint _location, GLsizei _count, GLboolean _transpose,
   7319       uint32 _value_shm_id, uint32 _value_shm_offset) {
   7320     SetHeader();
   7321     location = _location;
   7322     count = _count;
   7323     transpose = _transpose;
   7324     value_shm_id = _value_shm_id;
   7325     value_shm_offset = _value_shm_offset;
   7326   }
   7327 
   7328   void* Set(
   7329       void* cmd, GLint _location, GLsizei _count, GLboolean _transpose,
   7330       uint32 _value_shm_id, uint32 _value_shm_offset) {
   7331     static_cast<ValueType*>(
   7332         cmd)->Init(
   7333             _location, _count, _transpose, _value_shm_id, _value_shm_offset);
   7334     return NextCmdAddress<ValueType>(cmd);
   7335   }
   7336 
   7337   gpu::CommandHeader header;
   7338   int32 location;
   7339   int32 count;
   7340   uint32 transpose;
   7341   uint32 value_shm_id;
   7342   uint32 value_shm_offset;
   7343 };
   7344 
   7345 COMPILE_ASSERT(sizeof(UniformMatrix2fv) == 24,
   7346                Sizeof_UniformMatrix2fv_is_not_24);
   7347 COMPILE_ASSERT(offsetof(UniformMatrix2fv, header) == 0,
   7348                OffsetOf_UniformMatrix2fv_header_not_0);
   7349 COMPILE_ASSERT(offsetof(UniformMatrix2fv, location) == 4,
   7350                OffsetOf_UniformMatrix2fv_location_not_4);
   7351 COMPILE_ASSERT(offsetof(UniformMatrix2fv, count) == 8,
   7352                OffsetOf_UniformMatrix2fv_count_not_8);
   7353 COMPILE_ASSERT(offsetof(UniformMatrix2fv, transpose) == 12,
   7354                OffsetOf_UniformMatrix2fv_transpose_not_12);
   7355 COMPILE_ASSERT(offsetof(UniformMatrix2fv, value_shm_id) == 16,
   7356                OffsetOf_UniformMatrix2fv_value_shm_id_not_16);
   7357 COMPILE_ASSERT(offsetof(UniformMatrix2fv, value_shm_offset) == 20,
   7358                OffsetOf_UniformMatrix2fv_value_shm_offset_not_20);
   7359 
   7360 struct UniformMatrix2fvImmediate {
   7361   typedef UniformMatrix2fvImmediate ValueType;
   7362   static const CommandId kCmdId = kUniformMatrix2fvImmediate;
   7363   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   7364 
   7365   static uint32 ComputeDataSize(GLsizei count) {
   7366     return static_cast<uint32>(
   7367         sizeof(GLfloat) * 4 * count);  // NOLINT
   7368   }
   7369 
   7370   static uint32 ComputeSize(GLsizei count) {
   7371     return static_cast<uint32>(
   7372         sizeof(ValueType) + ComputeDataSize(count));  // NOLINT
   7373   }
   7374 
   7375   void SetHeader(GLsizei count) {
   7376     header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
   7377   }
   7378 
   7379   void Init(
   7380       GLint _location, GLsizei _count, GLboolean _transpose,
   7381       const GLfloat* _value) {
   7382     SetHeader(_count);
   7383     location = _location;
   7384     count = _count;
   7385     transpose = _transpose;
   7386     memcpy(ImmediateDataAddress(this),
   7387            _value, ComputeDataSize(_count));
   7388   }
   7389 
   7390   void* Set(
   7391       void* cmd, GLint _location, GLsizei _count, GLboolean _transpose,
   7392       const GLfloat* _value) {
   7393     static_cast<ValueType*>(cmd)->Init(_location, _count, _transpose, _value);
   7394     const uint32 size = ComputeSize(_count);
   7395     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   7396   }
   7397 
   7398   gpu::CommandHeader header;
   7399   int32 location;
   7400   int32 count;
   7401   uint32 transpose;
   7402 };
   7403 
   7404 COMPILE_ASSERT(sizeof(UniformMatrix2fvImmediate) == 16,
   7405                Sizeof_UniformMatrix2fvImmediate_is_not_16);
   7406 COMPILE_ASSERT(offsetof(UniformMatrix2fvImmediate, header) == 0,
   7407                OffsetOf_UniformMatrix2fvImmediate_header_not_0);
   7408 COMPILE_ASSERT(offsetof(UniformMatrix2fvImmediate, location) == 4,
   7409                OffsetOf_UniformMatrix2fvImmediate_location_not_4);
   7410 COMPILE_ASSERT(offsetof(UniformMatrix2fvImmediate, count) == 8,
   7411                OffsetOf_UniformMatrix2fvImmediate_count_not_8);
   7412 COMPILE_ASSERT(offsetof(UniformMatrix2fvImmediate, transpose) == 12,
   7413                OffsetOf_UniformMatrix2fvImmediate_transpose_not_12);
   7414 
   7415 struct UniformMatrix3fv {
   7416   typedef UniformMatrix3fv ValueType;
   7417   static const CommandId kCmdId = kUniformMatrix3fv;
   7418   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   7419 
   7420   static uint32 ComputeSize() {
   7421     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   7422   }
   7423 
   7424   void SetHeader() {
   7425     header.SetCmd<ValueType>();
   7426   }
   7427 
   7428   void Init(
   7429       GLint _location, GLsizei _count, GLboolean _transpose,
   7430       uint32 _value_shm_id, uint32 _value_shm_offset) {
   7431     SetHeader();
   7432     location = _location;
   7433     count = _count;
   7434     transpose = _transpose;
   7435     value_shm_id = _value_shm_id;
   7436     value_shm_offset = _value_shm_offset;
   7437   }
   7438 
   7439   void* Set(
   7440       void* cmd, GLint _location, GLsizei _count, GLboolean _transpose,
   7441       uint32 _value_shm_id, uint32 _value_shm_offset) {
   7442     static_cast<ValueType*>(
   7443         cmd)->Init(
   7444             _location, _count, _transpose, _value_shm_id, _value_shm_offset);
   7445     return NextCmdAddress<ValueType>(cmd);
   7446   }
   7447 
   7448   gpu::CommandHeader header;
   7449   int32 location;
   7450   int32 count;
   7451   uint32 transpose;
   7452   uint32 value_shm_id;
   7453   uint32 value_shm_offset;
   7454 };
   7455 
   7456 COMPILE_ASSERT(sizeof(UniformMatrix3fv) == 24,
   7457                Sizeof_UniformMatrix3fv_is_not_24);
   7458 COMPILE_ASSERT(offsetof(UniformMatrix3fv, header) == 0,
   7459                OffsetOf_UniformMatrix3fv_header_not_0);
   7460 COMPILE_ASSERT(offsetof(UniformMatrix3fv, location) == 4,
   7461                OffsetOf_UniformMatrix3fv_location_not_4);
   7462 COMPILE_ASSERT(offsetof(UniformMatrix3fv, count) == 8,
   7463                OffsetOf_UniformMatrix3fv_count_not_8);
   7464 COMPILE_ASSERT(offsetof(UniformMatrix3fv, transpose) == 12,
   7465                OffsetOf_UniformMatrix3fv_transpose_not_12);
   7466 COMPILE_ASSERT(offsetof(UniformMatrix3fv, value_shm_id) == 16,
   7467                OffsetOf_UniformMatrix3fv_value_shm_id_not_16);
   7468 COMPILE_ASSERT(offsetof(UniformMatrix3fv, value_shm_offset) == 20,
   7469                OffsetOf_UniformMatrix3fv_value_shm_offset_not_20);
   7470 
   7471 struct UniformMatrix3fvImmediate {
   7472   typedef UniformMatrix3fvImmediate ValueType;
   7473   static const CommandId kCmdId = kUniformMatrix3fvImmediate;
   7474   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   7475 
   7476   static uint32 ComputeDataSize(GLsizei count) {
   7477     return static_cast<uint32>(
   7478         sizeof(GLfloat) * 9 * count);  // NOLINT
   7479   }
   7480 
   7481   static uint32 ComputeSize(GLsizei count) {
   7482     return static_cast<uint32>(
   7483         sizeof(ValueType) + ComputeDataSize(count));  // NOLINT
   7484   }
   7485 
   7486   void SetHeader(GLsizei count) {
   7487     header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
   7488   }
   7489 
   7490   void Init(
   7491       GLint _location, GLsizei _count, GLboolean _transpose,
   7492       const GLfloat* _value) {
   7493     SetHeader(_count);
   7494     location = _location;
   7495     count = _count;
   7496     transpose = _transpose;
   7497     memcpy(ImmediateDataAddress(this),
   7498            _value, ComputeDataSize(_count));
   7499   }
   7500 
   7501   void* Set(
   7502       void* cmd, GLint _location, GLsizei _count, GLboolean _transpose,
   7503       const GLfloat* _value) {
   7504     static_cast<ValueType*>(cmd)->Init(_location, _count, _transpose, _value);
   7505     const uint32 size = ComputeSize(_count);
   7506     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   7507   }
   7508 
   7509   gpu::CommandHeader header;
   7510   int32 location;
   7511   int32 count;
   7512   uint32 transpose;
   7513 };
   7514 
   7515 COMPILE_ASSERT(sizeof(UniformMatrix3fvImmediate) == 16,
   7516                Sizeof_UniformMatrix3fvImmediate_is_not_16);
   7517 COMPILE_ASSERT(offsetof(UniformMatrix3fvImmediate, header) == 0,
   7518                OffsetOf_UniformMatrix3fvImmediate_header_not_0);
   7519 COMPILE_ASSERT(offsetof(UniformMatrix3fvImmediate, location) == 4,
   7520                OffsetOf_UniformMatrix3fvImmediate_location_not_4);
   7521 COMPILE_ASSERT(offsetof(UniformMatrix3fvImmediate, count) == 8,
   7522                OffsetOf_UniformMatrix3fvImmediate_count_not_8);
   7523 COMPILE_ASSERT(offsetof(UniformMatrix3fvImmediate, transpose) == 12,
   7524                OffsetOf_UniformMatrix3fvImmediate_transpose_not_12);
   7525 
   7526 struct UniformMatrix4fv {
   7527   typedef UniformMatrix4fv ValueType;
   7528   static const CommandId kCmdId = kUniformMatrix4fv;
   7529   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   7530 
   7531   static uint32 ComputeSize() {
   7532     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   7533   }
   7534 
   7535   void SetHeader() {
   7536     header.SetCmd<ValueType>();
   7537   }
   7538 
   7539   void Init(
   7540       GLint _location, GLsizei _count, GLboolean _transpose,
   7541       uint32 _value_shm_id, uint32 _value_shm_offset) {
   7542     SetHeader();
   7543     location = _location;
   7544     count = _count;
   7545     transpose = _transpose;
   7546     value_shm_id = _value_shm_id;
   7547     value_shm_offset = _value_shm_offset;
   7548   }
   7549 
   7550   void* Set(
   7551       void* cmd, GLint _location, GLsizei _count, GLboolean _transpose,
   7552       uint32 _value_shm_id, uint32 _value_shm_offset) {
   7553     static_cast<ValueType*>(
   7554         cmd)->Init(
   7555             _location, _count, _transpose, _value_shm_id, _value_shm_offset);
   7556     return NextCmdAddress<ValueType>(cmd);
   7557   }
   7558 
   7559   gpu::CommandHeader header;
   7560   int32 location;
   7561   int32 count;
   7562   uint32 transpose;
   7563   uint32 value_shm_id;
   7564   uint32 value_shm_offset;
   7565 };
   7566 
   7567 COMPILE_ASSERT(sizeof(UniformMatrix4fv) == 24,
   7568                Sizeof_UniformMatrix4fv_is_not_24);
   7569 COMPILE_ASSERT(offsetof(UniformMatrix4fv, header) == 0,
   7570                OffsetOf_UniformMatrix4fv_header_not_0);
   7571 COMPILE_ASSERT(offsetof(UniformMatrix4fv, location) == 4,
   7572                OffsetOf_UniformMatrix4fv_location_not_4);
   7573 COMPILE_ASSERT(offsetof(UniformMatrix4fv, count) == 8,
   7574                OffsetOf_UniformMatrix4fv_count_not_8);
   7575 COMPILE_ASSERT(offsetof(UniformMatrix4fv, transpose) == 12,
   7576                OffsetOf_UniformMatrix4fv_transpose_not_12);
   7577 COMPILE_ASSERT(offsetof(UniformMatrix4fv, value_shm_id) == 16,
   7578                OffsetOf_UniformMatrix4fv_value_shm_id_not_16);
   7579 COMPILE_ASSERT(offsetof(UniformMatrix4fv, value_shm_offset) == 20,
   7580                OffsetOf_UniformMatrix4fv_value_shm_offset_not_20);
   7581 
   7582 struct UniformMatrix4fvImmediate {
   7583   typedef UniformMatrix4fvImmediate ValueType;
   7584   static const CommandId kCmdId = kUniformMatrix4fvImmediate;
   7585   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   7586 
   7587   static uint32 ComputeDataSize(GLsizei count) {
   7588     return static_cast<uint32>(
   7589         sizeof(GLfloat) * 16 * count);  // NOLINT
   7590   }
   7591 
   7592   static uint32 ComputeSize(GLsizei count) {
   7593     return static_cast<uint32>(
   7594         sizeof(ValueType) + ComputeDataSize(count));  // NOLINT
   7595   }
   7596 
   7597   void SetHeader(GLsizei count) {
   7598     header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
   7599   }
   7600 
   7601   void Init(
   7602       GLint _location, GLsizei _count, GLboolean _transpose,
   7603       const GLfloat* _value) {
   7604     SetHeader(_count);
   7605     location = _location;
   7606     count = _count;
   7607     transpose = _transpose;
   7608     memcpy(ImmediateDataAddress(this),
   7609            _value, ComputeDataSize(_count));
   7610   }
   7611 
   7612   void* Set(
   7613       void* cmd, GLint _location, GLsizei _count, GLboolean _transpose,
   7614       const GLfloat* _value) {
   7615     static_cast<ValueType*>(cmd)->Init(_location, _count, _transpose, _value);
   7616     const uint32 size = ComputeSize(_count);
   7617     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   7618   }
   7619 
   7620   gpu::CommandHeader header;
   7621   int32 location;
   7622   int32 count;
   7623   uint32 transpose;
   7624 };
   7625 
   7626 COMPILE_ASSERT(sizeof(UniformMatrix4fvImmediate) == 16,
   7627                Sizeof_UniformMatrix4fvImmediate_is_not_16);
   7628 COMPILE_ASSERT(offsetof(UniformMatrix4fvImmediate, header) == 0,
   7629                OffsetOf_UniformMatrix4fvImmediate_header_not_0);
   7630 COMPILE_ASSERT(offsetof(UniformMatrix4fvImmediate, location) == 4,
   7631                OffsetOf_UniformMatrix4fvImmediate_location_not_4);
   7632 COMPILE_ASSERT(offsetof(UniformMatrix4fvImmediate, count) == 8,
   7633                OffsetOf_UniformMatrix4fvImmediate_count_not_8);
   7634 COMPILE_ASSERT(offsetof(UniformMatrix4fvImmediate, transpose) == 12,
   7635                OffsetOf_UniformMatrix4fvImmediate_transpose_not_12);
   7636 
   7637 struct UseProgram {
   7638   typedef UseProgram ValueType;
   7639   static const CommandId kCmdId = kUseProgram;
   7640   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   7641 
   7642   static uint32 ComputeSize() {
   7643     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   7644   }
   7645 
   7646   void SetHeader() {
   7647     header.SetCmd<ValueType>();
   7648   }
   7649 
   7650   void Init(GLuint _program) {
   7651     SetHeader();
   7652     program = _program;
   7653   }
   7654 
   7655   void* Set(void* cmd, GLuint _program) {
   7656     static_cast<ValueType*>(cmd)->Init(_program);
   7657     return NextCmdAddress<ValueType>(cmd);
   7658   }
   7659 
   7660   gpu::CommandHeader header;
   7661   uint32 program;
   7662 };
   7663 
   7664 COMPILE_ASSERT(sizeof(UseProgram) == 8,
   7665                Sizeof_UseProgram_is_not_8);
   7666 COMPILE_ASSERT(offsetof(UseProgram, header) == 0,
   7667                OffsetOf_UseProgram_header_not_0);
   7668 COMPILE_ASSERT(offsetof(UseProgram, program) == 4,
   7669                OffsetOf_UseProgram_program_not_4);
   7670 
   7671 struct ValidateProgram {
   7672   typedef ValidateProgram ValueType;
   7673   static const CommandId kCmdId = kValidateProgram;
   7674   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   7675 
   7676   static uint32 ComputeSize() {
   7677     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   7678   }
   7679 
   7680   void SetHeader() {
   7681     header.SetCmd<ValueType>();
   7682   }
   7683 
   7684   void Init(GLuint _program) {
   7685     SetHeader();
   7686     program = _program;
   7687   }
   7688 
   7689   void* Set(void* cmd, GLuint _program) {
   7690     static_cast<ValueType*>(cmd)->Init(_program);
   7691     return NextCmdAddress<ValueType>(cmd);
   7692   }
   7693 
   7694   gpu::CommandHeader header;
   7695   uint32 program;
   7696 };
   7697 
   7698 COMPILE_ASSERT(sizeof(ValidateProgram) == 8,
   7699                Sizeof_ValidateProgram_is_not_8);
   7700 COMPILE_ASSERT(offsetof(ValidateProgram, header) == 0,
   7701                OffsetOf_ValidateProgram_header_not_0);
   7702 COMPILE_ASSERT(offsetof(ValidateProgram, program) == 4,
   7703                OffsetOf_ValidateProgram_program_not_4);
   7704 
   7705 struct VertexAttrib1f {
   7706   typedef VertexAttrib1f ValueType;
   7707   static const CommandId kCmdId = kVertexAttrib1f;
   7708   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   7709 
   7710   static uint32 ComputeSize() {
   7711     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   7712   }
   7713 
   7714   void SetHeader() {
   7715     header.SetCmd<ValueType>();
   7716   }
   7717 
   7718   void Init(GLuint _indx, GLfloat _x) {
   7719     SetHeader();
   7720     indx = _indx;
   7721     x = _x;
   7722   }
   7723 
   7724   void* Set(void* cmd, GLuint _indx, GLfloat _x) {
   7725     static_cast<ValueType*>(cmd)->Init(_indx, _x);
   7726     return NextCmdAddress<ValueType>(cmd);
   7727   }
   7728 
   7729   gpu::CommandHeader header;
   7730   uint32 indx;
   7731   float x;
   7732 };
   7733 
   7734 COMPILE_ASSERT(sizeof(VertexAttrib1f) == 12,
   7735                Sizeof_VertexAttrib1f_is_not_12);
   7736 COMPILE_ASSERT(offsetof(VertexAttrib1f, header) == 0,
   7737                OffsetOf_VertexAttrib1f_header_not_0);
   7738 COMPILE_ASSERT(offsetof(VertexAttrib1f, indx) == 4,
   7739                OffsetOf_VertexAttrib1f_indx_not_4);
   7740 COMPILE_ASSERT(offsetof(VertexAttrib1f, x) == 8,
   7741                OffsetOf_VertexAttrib1f_x_not_8);
   7742 
   7743 struct VertexAttrib1fv {
   7744   typedef VertexAttrib1fv ValueType;
   7745   static const CommandId kCmdId = kVertexAttrib1fv;
   7746   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   7747 
   7748   static uint32 ComputeSize() {
   7749     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   7750   }
   7751 
   7752   void SetHeader() {
   7753     header.SetCmd<ValueType>();
   7754   }
   7755 
   7756   void Init(GLuint _indx, uint32 _values_shm_id, uint32 _values_shm_offset) {
   7757     SetHeader();
   7758     indx = _indx;
   7759     values_shm_id = _values_shm_id;
   7760     values_shm_offset = _values_shm_offset;
   7761   }
   7762 
   7763   void* Set(
   7764       void* cmd, GLuint _indx, uint32 _values_shm_id,
   7765       uint32 _values_shm_offset) {
   7766     static_cast<ValueType*>(
   7767         cmd)->Init(_indx, _values_shm_id, _values_shm_offset);
   7768     return NextCmdAddress<ValueType>(cmd);
   7769   }
   7770 
   7771   gpu::CommandHeader header;
   7772   uint32 indx;
   7773   uint32 values_shm_id;
   7774   uint32 values_shm_offset;
   7775 };
   7776 
   7777 COMPILE_ASSERT(sizeof(VertexAttrib1fv) == 16,
   7778                Sizeof_VertexAttrib1fv_is_not_16);
   7779 COMPILE_ASSERT(offsetof(VertexAttrib1fv, header) == 0,
   7780                OffsetOf_VertexAttrib1fv_header_not_0);
   7781 COMPILE_ASSERT(offsetof(VertexAttrib1fv, indx) == 4,
   7782                OffsetOf_VertexAttrib1fv_indx_not_4);
   7783 COMPILE_ASSERT(offsetof(VertexAttrib1fv, values_shm_id) == 8,
   7784                OffsetOf_VertexAttrib1fv_values_shm_id_not_8);
   7785 COMPILE_ASSERT(offsetof(VertexAttrib1fv, values_shm_offset) == 12,
   7786                OffsetOf_VertexAttrib1fv_values_shm_offset_not_12);
   7787 
   7788 struct VertexAttrib1fvImmediate {
   7789   typedef VertexAttrib1fvImmediate ValueType;
   7790   static const CommandId kCmdId = kVertexAttrib1fvImmediate;
   7791   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   7792 
   7793   static uint32 ComputeDataSize() {
   7794     return static_cast<uint32>(
   7795         sizeof(GLfloat) * 1);  // NOLINT
   7796   }
   7797 
   7798   static uint32 ComputeSize() {
   7799     return static_cast<uint32>(
   7800         sizeof(ValueType) + ComputeDataSize());  // NOLINT
   7801   }
   7802 
   7803   void SetHeader() {
   7804     header.SetCmdByTotalSize<ValueType>(ComputeSize());
   7805   }
   7806 
   7807   void Init(GLuint _indx, const GLfloat* _values) {
   7808     SetHeader();
   7809     indx = _indx;
   7810     memcpy(ImmediateDataAddress(this),
   7811            _values, ComputeDataSize());
   7812   }
   7813 
   7814   void* Set(void* cmd, GLuint _indx, const GLfloat* _values) {
   7815     static_cast<ValueType*>(cmd)->Init(_indx, _values);
   7816     const uint32 size = ComputeSize();
   7817     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   7818   }
   7819 
   7820   gpu::CommandHeader header;
   7821   uint32 indx;
   7822 };
   7823 
   7824 COMPILE_ASSERT(sizeof(VertexAttrib1fvImmediate) == 8,
   7825                Sizeof_VertexAttrib1fvImmediate_is_not_8);
   7826 COMPILE_ASSERT(offsetof(VertexAttrib1fvImmediate, header) == 0,
   7827                OffsetOf_VertexAttrib1fvImmediate_header_not_0);
   7828 COMPILE_ASSERT(offsetof(VertexAttrib1fvImmediate, indx) == 4,
   7829                OffsetOf_VertexAttrib1fvImmediate_indx_not_4);
   7830 
   7831 struct VertexAttrib2f {
   7832   typedef VertexAttrib2f ValueType;
   7833   static const CommandId kCmdId = kVertexAttrib2f;
   7834   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   7835 
   7836   static uint32 ComputeSize() {
   7837     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   7838   }
   7839 
   7840   void SetHeader() {
   7841     header.SetCmd<ValueType>();
   7842   }
   7843 
   7844   void Init(GLuint _indx, GLfloat _x, GLfloat _y) {
   7845     SetHeader();
   7846     indx = _indx;
   7847     x = _x;
   7848     y = _y;
   7849   }
   7850 
   7851   void* Set(void* cmd, GLuint _indx, GLfloat _x, GLfloat _y) {
   7852     static_cast<ValueType*>(cmd)->Init(_indx, _x, _y);
   7853     return NextCmdAddress<ValueType>(cmd);
   7854   }
   7855 
   7856   gpu::CommandHeader header;
   7857   uint32 indx;
   7858   float x;
   7859   float y;
   7860 };
   7861 
   7862 COMPILE_ASSERT(sizeof(VertexAttrib2f) == 16,
   7863                Sizeof_VertexAttrib2f_is_not_16);
   7864 COMPILE_ASSERT(offsetof(VertexAttrib2f, header) == 0,
   7865                OffsetOf_VertexAttrib2f_header_not_0);
   7866 COMPILE_ASSERT(offsetof(VertexAttrib2f, indx) == 4,
   7867                OffsetOf_VertexAttrib2f_indx_not_4);
   7868 COMPILE_ASSERT(offsetof(VertexAttrib2f, x) == 8,
   7869                OffsetOf_VertexAttrib2f_x_not_8);
   7870 COMPILE_ASSERT(offsetof(VertexAttrib2f, y) == 12,
   7871                OffsetOf_VertexAttrib2f_y_not_12);
   7872 
   7873 struct VertexAttrib2fv {
   7874   typedef VertexAttrib2fv ValueType;
   7875   static const CommandId kCmdId = kVertexAttrib2fv;
   7876   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   7877 
   7878   static uint32 ComputeSize() {
   7879     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   7880   }
   7881 
   7882   void SetHeader() {
   7883     header.SetCmd<ValueType>();
   7884   }
   7885 
   7886   void Init(GLuint _indx, uint32 _values_shm_id, uint32 _values_shm_offset) {
   7887     SetHeader();
   7888     indx = _indx;
   7889     values_shm_id = _values_shm_id;
   7890     values_shm_offset = _values_shm_offset;
   7891   }
   7892 
   7893   void* Set(
   7894       void* cmd, GLuint _indx, uint32 _values_shm_id,
   7895       uint32 _values_shm_offset) {
   7896     static_cast<ValueType*>(
   7897         cmd)->Init(_indx, _values_shm_id, _values_shm_offset);
   7898     return NextCmdAddress<ValueType>(cmd);
   7899   }
   7900 
   7901   gpu::CommandHeader header;
   7902   uint32 indx;
   7903   uint32 values_shm_id;
   7904   uint32 values_shm_offset;
   7905 };
   7906 
   7907 COMPILE_ASSERT(sizeof(VertexAttrib2fv) == 16,
   7908                Sizeof_VertexAttrib2fv_is_not_16);
   7909 COMPILE_ASSERT(offsetof(VertexAttrib2fv, header) == 0,
   7910                OffsetOf_VertexAttrib2fv_header_not_0);
   7911 COMPILE_ASSERT(offsetof(VertexAttrib2fv, indx) == 4,
   7912                OffsetOf_VertexAttrib2fv_indx_not_4);
   7913 COMPILE_ASSERT(offsetof(VertexAttrib2fv, values_shm_id) == 8,
   7914                OffsetOf_VertexAttrib2fv_values_shm_id_not_8);
   7915 COMPILE_ASSERT(offsetof(VertexAttrib2fv, values_shm_offset) == 12,
   7916                OffsetOf_VertexAttrib2fv_values_shm_offset_not_12);
   7917 
   7918 struct VertexAttrib2fvImmediate {
   7919   typedef VertexAttrib2fvImmediate ValueType;
   7920   static const CommandId kCmdId = kVertexAttrib2fvImmediate;
   7921   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   7922 
   7923   static uint32 ComputeDataSize() {
   7924     return static_cast<uint32>(
   7925         sizeof(GLfloat) * 2);  // NOLINT
   7926   }
   7927 
   7928   static uint32 ComputeSize() {
   7929     return static_cast<uint32>(
   7930         sizeof(ValueType) + ComputeDataSize());  // NOLINT
   7931   }
   7932 
   7933   void SetHeader() {
   7934     header.SetCmdByTotalSize<ValueType>(ComputeSize());
   7935   }
   7936 
   7937   void Init(GLuint _indx, const GLfloat* _values) {
   7938     SetHeader();
   7939     indx = _indx;
   7940     memcpy(ImmediateDataAddress(this),
   7941            _values, ComputeDataSize());
   7942   }
   7943 
   7944   void* Set(void* cmd, GLuint _indx, const GLfloat* _values) {
   7945     static_cast<ValueType*>(cmd)->Init(_indx, _values);
   7946     const uint32 size = ComputeSize();
   7947     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   7948   }
   7949 
   7950   gpu::CommandHeader header;
   7951   uint32 indx;
   7952 };
   7953 
   7954 COMPILE_ASSERT(sizeof(VertexAttrib2fvImmediate) == 8,
   7955                Sizeof_VertexAttrib2fvImmediate_is_not_8);
   7956 COMPILE_ASSERT(offsetof(VertexAttrib2fvImmediate, header) == 0,
   7957                OffsetOf_VertexAttrib2fvImmediate_header_not_0);
   7958 COMPILE_ASSERT(offsetof(VertexAttrib2fvImmediate, indx) == 4,
   7959                OffsetOf_VertexAttrib2fvImmediate_indx_not_4);
   7960 
   7961 struct VertexAttrib3f {
   7962   typedef VertexAttrib3f ValueType;
   7963   static const CommandId kCmdId = kVertexAttrib3f;
   7964   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   7965 
   7966   static uint32 ComputeSize() {
   7967     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   7968   }
   7969 
   7970   void SetHeader() {
   7971     header.SetCmd<ValueType>();
   7972   }
   7973 
   7974   void Init(GLuint _indx, GLfloat _x, GLfloat _y, GLfloat _z) {
   7975     SetHeader();
   7976     indx = _indx;
   7977     x = _x;
   7978     y = _y;
   7979     z = _z;
   7980   }
   7981 
   7982   void* Set(void* cmd, GLuint _indx, GLfloat _x, GLfloat _y, GLfloat _z) {
   7983     static_cast<ValueType*>(cmd)->Init(_indx, _x, _y, _z);
   7984     return NextCmdAddress<ValueType>(cmd);
   7985   }
   7986 
   7987   gpu::CommandHeader header;
   7988   uint32 indx;
   7989   float x;
   7990   float y;
   7991   float z;
   7992 };
   7993 
   7994 COMPILE_ASSERT(sizeof(VertexAttrib3f) == 20,
   7995                Sizeof_VertexAttrib3f_is_not_20);
   7996 COMPILE_ASSERT(offsetof(VertexAttrib3f, header) == 0,
   7997                OffsetOf_VertexAttrib3f_header_not_0);
   7998 COMPILE_ASSERT(offsetof(VertexAttrib3f, indx) == 4,
   7999                OffsetOf_VertexAttrib3f_indx_not_4);
   8000 COMPILE_ASSERT(offsetof(VertexAttrib3f, x) == 8,
   8001                OffsetOf_VertexAttrib3f_x_not_8);
   8002 COMPILE_ASSERT(offsetof(VertexAttrib3f, y) == 12,
   8003                OffsetOf_VertexAttrib3f_y_not_12);
   8004 COMPILE_ASSERT(offsetof(VertexAttrib3f, z) == 16,
   8005                OffsetOf_VertexAttrib3f_z_not_16);
   8006 
   8007 struct VertexAttrib3fv {
   8008   typedef VertexAttrib3fv ValueType;
   8009   static const CommandId kCmdId = kVertexAttrib3fv;
   8010   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   8011 
   8012   static uint32 ComputeSize() {
   8013     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   8014   }
   8015 
   8016   void SetHeader() {
   8017     header.SetCmd<ValueType>();
   8018   }
   8019 
   8020   void Init(GLuint _indx, uint32 _values_shm_id, uint32 _values_shm_offset) {
   8021     SetHeader();
   8022     indx = _indx;
   8023     values_shm_id = _values_shm_id;
   8024     values_shm_offset = _values_shm_offset;
   8025   }
   8026 
   8027   void* Set(
   8028       void* cmd, GLuint _indx, uint32 _values_shm_id,
   8029       uint32 _values_shm_offset) {
   8030     static_cast<ValueType*>(
   8031         cmd)->Init(_indx, _values_shm_id, _values_shm_offset);
   8032     return NextCmdAddress<ValueType>(cmd);
   8033   }
   8034 
   8035   gpu::CommandHeader header;
   8036   uint32 indx;
   8037   uint32 values_shm_id;
   8038   uint32 values_shm_offset;
   8039 };
   8040 
   8041 COMPILE_ASSERT(sizeof(VertexAttrib3fv) == 16,
   8042                Sizeof_VertexAttrib3fv_is_not_16);
   8043 COMPILE_ASSERT(offsetof(VertexAttrib3fv, header) == 0,
   8044                OffsetOf_VertexAttrib3fv_header_not_0);
   8045 COMPILE_ASSERT(offsetof(VertexAttrib3fv, indx) == 4,
   8046                OffsetOf_VertexAttrib3fv_indx_not_4);
   8047 COMPILE_ASSERT(offsetof(VertexAttrib3fv, values_shm_id) == 8,
   8048                OffsetOf_VertexAttrib3fv_values_shm_id_not_8);
   8049 COMPILE_ASSERT(offsetof(VertexAttrib3fv, values_shm_offset) == 12,
   8050                OffsetOf_VertexAttrib3fv_values_shm_offset_not_12);
   8051 
   8052 struct VertexAttrib3fvImmediate {
   8053   typedef VertexAttrib3fvImmediate ValueType;
   8054   static const CommandId kCmdId = kVertexAttrib3fvImmediate;
   8055   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   8056 
   8057   static uint32 ComputeDataSize() {
   8058     return static_cast<uint32>(
   8059         sizeof(GLfloat) * 3);  // NOLINT
   8060   }
   8061 
   8062   static uint32 ComputeSize() {
   8063     return static_cast<uint32>(
   8064         sizeof(ValueType) + ComputeDataSize());  // NOLINT
   8065   }
   8066 
   8067   void SetHeader() {
   8068     header.SetCmdByTotalSize<ValueType>(ComputeSize());
   8069   }
   8070 
   8071   void Init(GLuint _indx, const GLfloat* _values) {
   8072     SetHeader();
   8073     indx = _indx;
   8074     memcpy(ImmediateDataAddress(this),
   8075            _values, ComputeDataSize());
   8076   }
   8077 
   8078   void* Set(void* cmd, GLuint _indx, const GLfloat* _values) {
   8079     static_cast<ValueType*>(cmd)->Init(_indx, _values);
   8080     const uint32 size = ComputeSize();
   8081     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   8082   }
   8083 
   8084   gpu::CommandHeader header;
   8085   uint32 indx;
   8086 };
   8087 
   8088 COMPILE_ASSERT(sizeof(VertexAttrib3fvImmediate) == 8,
   8089                Sizeof_VertexAttrib3fvImmediate_is_not_8);
   8090 COMPILE_ASSERT(offsetof(VertexAttrib3fvImmediate, header) == 0,
   8091                OffsetOf_VertexAttrib3fvImmediate_header_not_0);
   8092 COMPILE_ASSERT(offsetof(VertexAttrib3fvImmediate, indx) == 4,
   8093                OffsetOf_VertexAttrib3fvImmediate_indx_not_4);
   8094 
   8095 struct VertexAttrib4f {
   8096   typedef VertexAttrib4f ValueType;
   8097   static const CommandId kCmdId = kVertexAttrib4f;
   8098   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   8099 
   8100   static uint32 ComputeSize() {
   8101     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   8102   }
   8103 
   8104   void SetHeader() {
   8105     header.SetCmd<ValueType>();
   8106   }
   8107 
   8108   void Init(GLuint _indx, GLfloat _x, GLfloat _y, GLfloat _z, GLfloat _w) {
   8109     SetHeader();
   8110     indx = _indx;
   8111     x = _x;
   8112     y = _y;
   8113     z = _z;
   8114     w = _w;
   8115   }
   8116 
   8117   void* Set(
   8118       void* cmd, GLuint _indx, GLfloat _x, GLfloat _y, GLfloat _z,
   8119       GLfloat _w) {
   8120     static_cast<ValueType*>(cmd)->Init(_indx, _x, _y, _z, _w);
   8121     return NextCmdAddress<ValueType>(cmd);
   8122   }
   8123 
   8124   gpu::CommandHeader header;
   8125   uint32 indx;
   8126   float x;
   8127   float y;
   8128   float z;
   8129   float w;
   8130 };
   8131 
   8132 COMPILE_ASSERT(sizeof(VertexAttrib4f) == 24,
   8133                Sizeof_VertexAttrib4f_is_not_24);
   8134 COMPILE_ASSERT(offsetof(VertexAttrib4f, header) == 0,
   8135                OffsetOf_VertexAttrib4f_header_not_0);
   8136 COMPILE_ASSERT(offsetof(VertexAttrib4f, indx) == 4,
   8137                OffsetOf_VertexAttrib4f_indx_not_4);
   8138 COMPILE_ASSERT(offsetof(VertexAttrib4f, x) == 8,
   8139                OffsetOf_VertexAttrib4f_x_not_8);
   8140 COMPILE_ASSERT(offsetof(VertexAttrib4f, y) == 12,
   8141                OffsetOf_VertexAttrib4f_y_not_12);
   8142 COMPILE_ASSERT(offsetof(VertexAttrib4f, z) == 16,
   8143                OffsetOf_VertexAttrib4f_z_not_16);
   8144 COMPILE_ASSERT(offsetof(VertexAttrib4f, w) == 20,
   8145                OffsetOf_VertexAttrib4f_w_not_20);
   8146 
   8147 struct VertexAttrib4fv {
   8148   typedef VertexAttrib4fv ValueType;
   8149   static const CommandId kCmdId = kVertexAttrib4fv;
   8150   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   8151 
   8152   static uint32 ComputeSize() {
   8153     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   8154   }
   8155 
   8156   void SetHeader() {
   8157     header.SetCmd<ValueType>();
   8158   }
   8159 
   8160   void Init(GLuint _indx, uint32 _values_shm_id, uint32 _values_shm_offset) {
   8161     SetHeader();
   8162     indx = _indx;
   8163     values_shm_id = _values_shm_id;
   8164     values_shm_offset = _values_shm_offset;
   8165   }
   8166 
   8167   void* Set(
   8168       void* cmd, GLuint _indx, uint32 _values_shm_id,
   8169       uint32 _values_shm_offset) {
   8170     static_cast<ValueType*>(
   8171         cmd)->Init(_indx, _values_shm_id, _values_shm_offset);
   8172     return NextCmdAddress<ValueType>(cmd);
   8173   }
   8174 
   8175   gpu::CommandHeader header;
   8176   uint32 indx;
   8177   uint32 values_shm_id;
   8178   uint32 values_shm_offset;
   8179 };
   8180 
   8181 COMPILE_ASSERT(sizeof(VertexAttrib4fv) == 16,
   8182                Sizeof_VertexAttrib4fv_is_not_16);
   8183 COMPILE_ASSERT(offsetof(VertexAttrib4fv, header) == 0,
   8184                OffsetOf_VertexAttrib4fv_header_not_0);
   8185 COMPILE_ASSERT(offsetof(VertexAttrib4fv, indx) == 4,
   8186                OffsetOf_VertexAttrib4fv_indx_not_4);
   8187 COMPILE_ASSERT(offsetof(VertexAttrib4fv, values_shm_id) == 8,
   8188                OffsetOf_VertexAttrib4fv_values_shm_id_not_8);
   8189 COMPILE_ASSERT(offsetof(VertexAttrib4fv, values_shm_offset) == 12,
   8190                OffsetOf_VertexAttrib4fv_values_shm_offset_not_12);
   8191 
   8192 struct VertexAttrib4fvImmediate {
   8193   typedef VertexAttrib4fvImmediate ValueType;
   8194   static const CommandId kCmdId = kVertexAttrib4fvImmediate;
   8195   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   8196 
   8197   static uint32 ComputeDataSize() {
   8198     return static_cast<uint32>(
   8199         sizeof(GLfloat) * 4);  // NOLINT
   8200   }
   8201 
   8202   static uint32 ComputeSize() {
   8203     return static_cast<uint32>(
   8204         sizeof(ValueType) + ComputeDataSize());  // NOLINT
   8205   }
   8206 
   8207   void SetHeader() {
   8208     header.SetCmdByTotalSize<ValueType>(ComputeSize());
   8209   }
   8210 
   8211   void Init(GLuint _indx, const GLfloat* _values) {
   8212     SetHeader();
   8213     indx = _indx;
   8214     memcpy(ImmediateDataAddress(this),
   8215            _values, ComputeDataSize());
   8216   }
   8217 
   8218   void* Set(void* cmd, GLuint _indx, const GLfloat* _values) {
   8219     static_cast<ValueType*>(cmd)->Init(_indx, _values);
   8220     const uint32 size = ComputeSize();
   8221     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   8222   }
   8223 
   8224   gpu::CommandHeader header;
   8225   uint32 indx;
   8226 };
   8227 
   8228 COMPILE_ASSERT(sizeof(VertexAttrib4fvImmediate) == 8,
   8229                Sizeof_VertexAttrib4fvImmediate_is_not_8);
   8230 COMPILE_ASSERT(offsetof(VertexAttrib4fvImmediate, header) == 0,
   8231                OffsetOf_VertexAttrib4fvImmediate_header_not_0);
   8232 COMPILE_ASSERT(offsetof(VertexAttrib4fvImmediate, indx) == 4,
   8233                OffsetOf_VertexAttrib4fvImmediate_indx_not_4);
   8234 
   8235 struct VertexAttribPointer {
   8236   typedef VertexAttribPointer ValueType;
   8237   static const CommandId kCmdId = kVertexAttribPointer;
   8238   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   8239 
   8240   static uint32 ComputeSize() {
   8241     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   8242   }
   8243 
   8244   void SetHeader() {
   8245     header.SetCmd<ValueType>();
   8246   }
   8247 
   8248   void Init(
   8249       GLuint _indx, GLint _size, GLenum _type, GLboolean _normalized,
   8250       GLsizei _stride, GLuint _offset) {
   8251     SetHeader();
   8252     indx = _indx;
   8253     size = _size;
   8254     type = _type;
   8255     normalized = _normalized;
   8256     stride = _stride;
   8257     offset = _offset;
   8258   }
   8259 
   8260   void* Set(
   8261       void* cmd, GLuint _indx, GLint _size, GLenum _type, GLboolean _normalized,
   8262       GLsizei _stride, GLuint _offset) {
   8263     static_cast<ValueType*>(
   8264         cmd)->Init(_indx, _size, _type, _normalized, _stride, _offset);
   8265     return NextCmdAddress<ValueType>(cmd);
   8266   }
   8267 
   8268   gpu::CommandHeader header;
   8269   uint32 indx;
   8270   int32 size;
   8271   uint32 type;
   8272   uint32 normalized;
   8273   int32 stride;
   8274   uint32 offset;
   8275 };
   8276 
   8277 COMPILE_ASSERT(sizeof(VertexAttribPointer) == 28,
   8278                Sizeof_VertexAttribPointer_is_not_28);
   8279 COMPILE_ASSERT(offsetof(VertexAttribPointer, header) == 0,
   8280                OffsetOf_VertexAttribPointer_header_not_0);
   8281 COMPILE_ASSERT(offsetof(VertexAttribPointer, indx) == 4,
   8282                OffsetOf_VertexAttribPointer_indx_not_4);
   8283 COMPILE_ASSERT(offsetof(VertexAttribPointer, size) == 8,
   8284                OffsetOf_VertexAttribPointer_size_not_8);
   8285 COMPILE_ASSERT(offsetof(VertexAttribPointer, type) == 12,
   8286                OffsetOf_VertexAttribPointer_type_not_12);
   8287 COMPILE_ASSERT(offsetof(VertexAttribPointer, normalized) == 16,
   8288                OffsetOf_VertexAttribPointer_normalized_not_16);
   8289 COMPILE_ASSERT(offsetof(VertexAttribPointer, stride) == 20,
   8290                OffsetOf_VertexAttribPointer_stride_not_20);
   8291 COMPILE_ASSERT(offsetof(VertexAttribPointer, offset) == 24,
   8292                OffsetOf_VertexAttribPointer_offset_not_24);
   8293 
   8294 struct Viewport {
   8295   typedef Viewport ValueType;
   8296   static const CommandId kCmdId = kViewport;
   8297   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   8298 
   8299   static uint32 ComputeSize() {
   8300     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   8301   }
   8302 
   8303   void SetHeader() {
   8304     header.SetCmd<ValueType>();
   8305   }
   8306 
   8307   void Init(GLint _x, GLint _y, GLsizei _width, GLsizei _height) {
   8308     SetHeader();
   8309     x = _x;
   8310     y = _y;
   8311     width = _width;
   8312     height = _height;
   8313   }
   8314 
   8315   void* Set(void* cmd, GLint _x, GLint _y, GLsizei _width, GLsizei _height) {
   8316     static_cast<ValueType*>(cmd)->Init(_x, _y, _width, _height);
   8317     return NextCmdAddress<ValueType>(cmd);
   8318   }
   8319 
   8320   gpu::CommandHeader header;
   8321   int32 x;
   8322   int32 y;
   8323   int32 width;
   8324   int32 height;
   8325 };
   8326 
   8327 COMPILE_ASSERT(sizeof(Viewport) == 20,
   8328                Sizeof_Viewport_is_not_20);
   8329 COMPILE_ASSERT(offsetof(Viewport, header) == 0,
   8330                OffsetOf_Viewport_header_not_0);
   8331 COMPILE_ASSERT(offsetof(Viewport, x) == 4,
   8332                OffsetOf_Viewport_x_not_4);
   8333 COMPILE_ASSERT(offsetof(Viewport, y) == 8,
   8334                OffsetOf_Viewport_y_not_8);
   8335 COMPILE_ASSERT(offsetof(Viewport, width) == 12,
   8336                OffsetOf_Viewport_width_not_12);
   8337 COMPILE_ASSERT(offsetof(Viewport, height) == 16,
   8338                OffsetOf_Viewport_height_not_16);
   8339 
   8340 struct BlitFramebufferEXT {
   8341   typedef BlitFramebufferEXT ValueType;
   8342   static const CommandId kCmdId = kBlitFramebufferEXT;
   8343   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   8344 
   8345   static uint32 ComputeSize() {
   8346     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   8347   }
   8348 
   8349   void SetHeader() {
   8350     header.SetCmd<ValueType>();
   8351   }
   8352 
   8353   void Init(
   8354       GLint _srcX0, GLint _srcY0, GLint _srcX1, GLint _srcY1, GLint _dstX0,
   8355       GLint _dstY0, GLint _dstX1, GLint _dstY1, GLbitfield _mask,
   8356       GLenum _filter) {
   8357     SetHeader();
   8358     srcX0 = _srcX0;
   8359     srcY0 = _srcY0;
   8360     srcX1 = _srcX1;
   8361     srcY1 = _srcY1;
   8362     dstX0 = _dstX0;
   8363     dstY0 = _dstY0;
   8364     dstX1 = _dstX1;
   8365     dstY1 = _dstY1;
   8366     mask = _mask;
   8367     filter = _filter;
   8368   }
   8369 
   8370   void* Set(
   8371       void* cmd, GLint _srcX0, GLint _srcY0, GLint _srcX1, GLint _srcY1,
   8372       GLint _dstX0, GLint _dstY0, GLint _dstX1, GLint _dstY1, GLbitfield _mask,
   8373       GLenum _filter) {
   8374     static_cast<ValueType*>(
   8375         cmd)->Init(
   8376             _srcX0, _srcY0, _srcX1, _srcY1, _dstX0, _dstY0, _dstX1, _dstY1,
   8377             _mask, _filter);
   8378     return NextCmdAddress<ValueType>(cmd);
   8379   }
   8380 
   8381   gpu::CommandHeader header;
   8382   int32 srcX0;
   8383   int32 srcY0;
   8384   int32 srcX1;
   8385   int32 srcY1;
   8386   int32 dstX0;
   8387   int32 dstY0;
   8388   int32 dstX1;
   8389   int32 dstY1;
   8390   uint32 mask;
   8391   uint32 filter;
   8392 };
   8393 
   8394 COMPILE_ASSERT(sizeof(BlitFramebufferEXT) == 44,
   8395                Sizeof_BlitFramebufferEXT_is_not_44);
   8396 COMPILE_ASSERT(offsetof(BlitFramebufferEXT, header) == 0,
   8397                OffsetOf_BlitFramebufferEXT_header_not_0);
   8398 COMPILE_ASSERT(offsetof(BlitFramebufferEXT, srcX0) == 4,
   8399                OffsetOf_BlitFramebufferEXT_srcX0_not_4);
   8400 COMPILE_ASSERT(offsetof(BlitFramebufferEXT, srcY0) == 8,
   8401                OffsetOf_BlitFramebufferEXT_srcY0_not_8);
   8402 COMPILE_ASSERT(offsetof(BlitFramebufferEXT, srcX1) == 12,
   8403                OffsetOf_BlitFramebufferEXT_srcX1_not_12);
   8404 COMPILE_ASSERT(offsetof(BlitFramebufferEXT, srcY1) == 16,
   8405                OffsetOf_BlitFramebufferEXT_srcY1_not_16);
   8406 COMPILE_ASSERT(offsetof(BlitFramebufferEXT, dstX0) == 20,
   8407                OffsetOf_BlitFramebufferEXT_dstX0_not_20);
   8408 COMPILE_ASSERT(offsetof(BlitFramebufferEXT, dstY0) == 24,
   8409                OffsetOf_BlitFramebufferEXT_dstY0_not_24);
   8410 COMPILE_ASSERT(offsetof(BlitFramebufferEXT, dstX1) == 28,
   8411                OffsetOf_BlitFramebufferEXT_dstX1_not_28);
   8412 COMPILE_ASSERT(offsetof(BlitFramebufferEXT, dstY1) == 32,
   8413                OffsetOf_BlitFramebufferEXT_dstY1_not_32);
   8414 COMPILE_ASSERT(offsetof(BlitFramebufferEXT, mask) == 36,
   8415                OffsetOf_BlitFramebufferEXT_mask_not_36);
   8416 COMPILE_ASSERT(offsetof(BlitFramebufferEXT, filter) == 40,
   8417                OffsetOf_BlitFramebufferEXT_filter_not_40);
   8418 
   8419 struct RenderbufferStorageMultisampleEXT {
   8420   typedef RenderbufferStorageMultisampleEXT ValueType;
   8421   static const CommandId kCmdId = kRenderbufferStorageMultisampleEXT;
   8422   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   8423 
   8424   static uint32 ComputeSize() {
   8425     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   8426   }
   8427 
   8428   void SetHeader() {
   8429     header.SetCmd<ValueType>();
   8430   }
   8431 
   8432   void Init(
   8433       GLenum _target, GLsizei _samples, GLenum _internalformat, GLsizei _width,
   8434       GLsizei _height) {
   8435     SetHeader();
   8436     target = _target;
   8437     samples = _samples;
   8438     internalformat = _internalformat;
   8439     width = _width;
   8440     height = _height;
   8441   }
   8442 
   8443   void* Set(
   8444       void* cmd, GLenum _target, GLsizei _samples, GLenum _internalformat,
   8445       GLsizei _width, GLsizei _height) {
   8446     static_cast<ValueType*>(
   8447         cmd)->Init(_target, _samples, _internalformat, _width, _height);
   8448     return NextCmdAddress<ValueType>(cmd);
   8449   }
   8450 
   8451   gpu::CommandHeader header;
   8452   uint32 target;
   8453   int32 samples;
   8454   uint32 internalformat;
   8455   int32 width;
   8456   int32 height;
   8457 };
   8458 
   8459 COMPILE_ASSERT(sizeof(RenderbufferStorageMultisampleEXT) == 24,
   8460                Sizeof_RenderbufferStorageMultisampleEXT_is_not_24);
   8461 COMPILE_ASSERT(offsetof(RenderbufferStorageMultisampleEXT, header) == 0,
   8462                OffsetOf_RenderbufferStorageMultisampleEXT_header_not_0);
   8463 COMPILE_ASSERT(offsetof(RenderbufferStorageMultisampleEXT, target) == 4,
   8464                OffsetOf_RenderbufferStorageMultisampleEXT_target_not_4);
   8465 COMPILE_ASSERT(offsetof(RenderbufferStorageMultisampleEXT, samples) == 8,
   8466                OffsetOf_RenderbufferStorageMultisampleEXT_samples_not_8);
   8467 COMPILE_ASSERT(
   8468     offsetof(RenderbufferStorageMultisampleEXT, internalformat) == 12,
   8469                OffsetOf_RenderbufferStorageMultisampleEXT_internalformat_not_12);  // NOLINT
   8470 COMPILE_ASSERT(offsetof(RenderbufferStorageMultisampleEXT, width) == 16,
   8471                OffsetOf_RenderbufferStorageMultisampleEXT_width_not_16);
   8472 COMPILE_ASSERT(offsetof(RenderbufferStorageMultisampleEXT, height) == 20,
   8473                OffsetOf_RenderbufferStorageMultisampleEXT_height_not_20);
   8474 
   8475 struct FramebufferTexture2DMultisampleEXT {
   8476   typedef FramebufferTexture2DMultisampleEXT ValueType;
   8477   static const CommandId kCmdId = kFramebufferTexture2DMultisampleEXT;
   8478   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   8479 
   8480   static uint32 ComputeSize() {
   8481     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   8482   }
   8483 
   8484   void SetHeader() {
   8485     header.SetCmd<ValueType>();
   8486   }
   8487 
   8488   void Init(
   8489       GLenum _target, GLenum _attachment, GLenum _textarget, GLuint _texture,
   8490       GLint _level, GLsizei _samples) {
   8491     SetHeader();
   8492     target = _target;
   8493     attachment = _attachment;
   8494     textarget = _textarget;
   8495     texture = _texture;
   8496     level = _level;
   8497     samples = _samples;
   8498   }
   8499 
   8500   void* Set(
   8501       void* cmd, GLenum _target, GLenum _attachment, GLenum _textarget,
   8502       GLuint _texture, GLint _level, GLsizei _samples) {
   8503     static_cast<ValueType*>(
   8504         cmd)->Init(
   8505             _target, _attachment, _textarget, _texture, _level, _samples);
   8506     return NextCmdAddress<ValueType>(cmd);
   8507   }
   8508 
   8509   gpu::CommandHeader header;
   8510   uint32 target;
   8511   uint32 attachment;
   8512   uint32 textarget;
   8513   uint32 texture;
   8514   int32 level;
   8515   int32 samples;
   8516 };
   8517 
   8518 COMPILE_ASSERT(sizeof(FramebufferTexture2DMultisampleEXT) == 28,
   8519                Sizeof_FramebufferTexture2DMultisampleEXT_is_not_28);
   8520 COMPILE_ASSERT(offsetof(FramebufferTexture2DMultisampleEXT, header) == 0,
   8521                OffsetOf_FramebufferTexture2DMultisampleEXT_header_not_0);
   8522 COMPILE_ASSERT(offsetof(FramebufferTexture2DMultisampleEXT, target) == 4,
   8523                OffsetOf_FramebufferTexture2DMultisampleEXT_target_not_4);
   8524 COMPILE_ASSERT(offsetof(FramebufferTexture2DMultisampleEXT, attachment) == 8,
   8525                OffsetOf_FramebufferTexture2DMultisampleEXT_attachment_not_8);
   8526 COMPILE_ASSERT(offsetof(FramebufferTexture2DMultisampleEXT, textarget) == 12,
   8527                OffsetOf_FramebufferTexture2DMultisampleEXT_textarget_not_12);
   8528 COMPILE_ASSERT(offsetof(FramebufferTexture2DMultisampleEXT, texture) == 16,
   8529                OffsetOf_FramebufferTexture2DMultisampleEXT_texture_not_16);
   8530 COMPILE_ASSERT(offsetof(FramebufferTexture2DMultisampleEXT, level) == 20,
   8531                OffsetOf_FramebufferTexture2DMultisampleEXT_level_not_20);
   8532 COMPILE_ASSERT(offsetof(FramebufferTexture2DMultisampleEXT, samples) == 24,
   8533                OffsetOf_FramebufferTexture2DMultisampleEXT_samples_not_24);
   8534 
   8535 struct TexStorage2DEXT {
   8536   typedef TexStorage2DEXT ValueType;
   8537   static const CommandId kCmdId = kTexStorage2DEXT;
   8538   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   8539 
   8540   static uint32 ComputeSize() {
   8541     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   8542   }
   8543 
   8544   void SetHeader() {
   8545     header.SetCmd<ValueType>();
   8546   }
   8547 
   8548   void Init(
   8549       GLenum _target, GLsizei _levels, GLenum _internalFormat, GLsizei _width,
   8550       GLsizei _height) {
   8551     SetHeader();
   8552     target = _target;
   8553     levels = _levels;
   8554     internalFormat = _internalFormat;
   8555     width = _width;
   8556     height = _height;
   8557   }
   8558 
   8559   void* Set(
   8560       void* cmd, GLenum _target, GLsizei _levels, GLenum _internalFormat,
   8561       GLsizei _width, GLsizei _height) {
   8562     static_cast<ValueType*>(
   8563         cmd)->Init(_target, _levels, _internalFormat, _width, _height);
   8564     return NextCmdAddress<ValueType>(cmd);
   8565   }
   8566 
   8567   gpu::CommandHeader header;
   8568   uint32 target;
   8569   int32 levels;
   8570   uint32 internalFormat;
   8571   int32 width;
   8572   int32 height;
   8573 };
   8574 
   8575 COMPILE_ASSERT(sizeof(TexStorage2DEXT) == 24,
   8576                Sizeof_TexStorage2DEXT_is_not_24);
   8577 COMPILE_ASSERT(offsetof(TexStorage2DEXT, header) == 0,
   8578                OffsetOf_TexStorage2DEXT_header_not_0);
   8579 COMPILE_ASSERT(offsetof(TexStorage2DEXT, target) == 4,
   8580                OffsetOf_TexStorage2DEXT_target_not_4);
   8581 COMPILE_ASSERT(offsetof(TexStorage2DEXT, levels) == 8,
   8582                OffsetOf_TexStorage2DEXT_levels_not_8);
   8583 COMPILE_ASSERT(offsetof(TexStorage2DEXT, internalFormat) == 12,
   8584                OffsetOf_TexStorage2DEXT_internalFormat_not_12);
   8585 COMPILE_ASSERT(offsetof(TexStorage2DEXT, width) == 16,
   8586                OffsetOf_TexStorage2DEXT_width_not_16);
   8587 COMPILE_ASSERT(offsetof(TexStorage2DEXT, height) == 20,
   8588                OffsetOf_TexStorage2DEXT_height_not_20);
   8589 
   8590 struct GenQueriesEXT {
   8591   typedef GenQueriesEXT ValueType;
   8592   static const CommandId kCmdId = kGenQueriesEXT;
   8593   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   8594 
   8595   static uint32 ComputeSize() {
   8596     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   8597   }
   8598 
   8599   void SetHeader() {
   8600     header.SetCmd<ValueType>();
   8601   }
   8602 
   8603   void Init(GLsizei _n, uint32 _queries_shm_id, uint32 _queries_shm_offset) {
   8604     SetHeader();
   8605     n = _n;
   8606     queries_shm_id = _queries_shm_id;
   8607     queries_shm_offset = _queries_shm_offset;
   8608   }
   8609 
   8610   void* Set(
   8611       void* cmd, GLsizei _n, uint32 _queries_shm_id,
   8612       uint32 _queries_shm_offset) {
   8613     static_cast<ValueType*>(
   8614         cmd)->Init(_n, _queries_shm_id, _queries_shm_offset);
   8615     return NextCmdAddress<ValueType>(cmd);
   8616   }
   8617 
   8618   gpu::CommandHeader header;
   8619   int32 n;
   8620   uint32 queries_shm_id;
   8621   uint32 queries_shm_offset;
   8622 };
   8623 
   8624 COMPILE_ASSERT(sizeof(GenQueriesEXT) == 16,
   8625                Sizeof_GenQueriesEXT_is_not_16);
   8626 COMPILE_ASSERT(offsetof(GenQueriesEXT, header) == 0,
   8627                OffsetOf_GenQueriesEXT_header_not_0);
   8628 COMPILE_ASSERT(offsetof(GenQueriesEXT, n) == 4,
   8629                OffsetOf_GenQueriesEXT_n_not_4);
   8630 COMPILE_ASSERT(offsetof(GenQueriesEXT, queries_shm_id) == 8,
   8631                OffsetOf_GenQueriesEXT_queries_shm_id_not_8);
   8632 COMPILE_ASSERT(offsetof(GenQueriesEXT, queries_shm_offset) == 12,
   8633                OffsetOf_GenQueriesEXT_queries_shm_offset_not_12);
   8634 
   8635 struct GenQueriesEXTImmediate {
   8636   typedef GenQueriesEXTImmediate ValueType;
   8637   static const CommandId kCmdId = kGenQueriesEXTImmediate;
   8638   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   8639 
   8640   static uint32 ComputeDataSize(GLsizei n) {
   8641     return static_cast<uint32>(sizeof(GLuint) * n);  // NOLINT
   8642   }
   8643 
   8644   static uint32 ComputeSize(GLsizei n) {
   8645     return static_cast<uint32>(
   8646         sizeof(ValueType) + ComputeDataSize(n));  // NOLINT
   8647   }
   8648 
   8649   void SetHeader(GLsizei n) {
   8650     header.SetCmdByTotalSize<ValueType>(ComputeSize(n));
   8651   }
   8652 
   8653   void Init(GLsizei _n, GLuint* _queries) {
   8654     SetHeader(_n);
   8655     n = _n;
   8656     memcpy(ImmediateDataAddress(this),
   8657            _queries, ComputeDataSize(_n));
   8658   }
   8659 
   8660   void* Set(void* cmd, GLsizei _n, GLuint* _queries) {
   8661     static_cast<ValueType*>(cmd)->Init(_n, _queries);
   8662     const uint32 size = ComputeSize(_n);
   8663     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   8664   }
   8665 
   8666   gpu::CommandHeader header;
   8667   int32 n;
   8668 };
   8669 
   8670 COMPILE_ASSERT(sizeof(GenQueriesEXTImmediate) == 8,
   8671                Sizeof_GenQueriesEXTImmediate_is_not_8);
   8672 COMPILE_ASSERT(offsetof(GenQueriesEXTImmediate, header) == 0,
   8673                OffsetOf_GenQueriesEXTImmediate_header_not_0);
   8674 COMPILE_ASSERT(offsetof(GenQueriesEXTImmediate, n) == 4,
   8675                OffsetOf_GenQueriesEXTImmediate_n_not_4);
   8676 
   8677 struct DeleteQueriesEXT {
   8678   typedef DeleteQueriesEXT ValueType;
   8679   static const CommandId kCmdId = kDeleteQueriesEXT;
   8680   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   8681 
   8682   static uint32 ComputeSize() {
   8683     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   8684   }
   8685 
   8686   void SetHeader() {
   8687     header.SetCmd<ValueType>();
   8688   }
   8689 
   8690   void Init(GLsizei _n, uint32 _queries_shm_id, uint32 _queries_shm_offset) {
   8691     SetHeader();
   8692     n = _n;
   8693     queries_shm_id = _queries_shm_id;
   8694     queries_shm_offset = _queries_shm_offset;
   8695   }
   8696 
   8697   void* Set(
   8698       void* cmd, GLsizei _n, uint32 _queries_shm_id,
   8699       uint32 _queries_shm_offset) {
   8700     static_cast<ValueType*>(
   8701         cmd)->Init(_n, _queries_shm_id, _queries_shm_offset);
   8702     return NextCmdAddress<ValueType>(cmd);
   8703   }
   8704 
   8705   gpu::CommandHeader header;
   8706   int32 n;
   8707   uint32 queries_shm_id;
   8708   uint32 queries_shm_offset;
   8709 };
   8710 
   8711 COMPILE_ASSERT(sizeof(DeleteQueriesEXT) == 16,
   8712                Sizeof_DeleteQueriesEXT_is_not_16);
   8713 COMPILE_ASSERT(offsetof(DeleteQueriesEXT, header) == 0,
   8714                OffsetOf_DeleteQueriesEXT_header_not_0);
   8715 COMPILE_ASSERT(offsetof(DeleteQueriesEXT, n) == 4,
   8716                OffsetOf_DeleteQueriesEXT_n_not_4);
   8717 COMPILE_ASSERT(offsetof(DeleteQueriesEXT, queries_shm_id) == 8,
   8718                OffsetOf_DeleteQueriesEXT_queries_shm_id_not_8);
   8719 COMPILE_ASSERT(offsetof(DeleteQueriesEXT, queries_shm_offset) == 12,
   8720                OffsetOf_DeleteQueriesEXT_queries_shm_offset_not_12);
   8721 
   8722 struct DeleteQueriesEXTImmediate {
   8723   typedef DeleteQueriesEXTImmediate ValueType;
   8724   static const CommandId kCmdId = kDeleteQueriesEXTImmediate;
   8725   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   8726 
   8727   static uint32 ComputeDataSize(GLsizei n) {
   8728     return static_cast<uint32>(sizeof(GLuint) * n);  // NOLINT
   8729   }
   8730 
   8731   static uint32 ComputeSize(GLsizei n) {
   8732     return static_cast<uint32>(
   8733         sizeof(ValueType) + ComputeDataSize(n));  // NOLINT
   8734   }
   8735 
   8736   void SetHeader(GLsizei n) {
   8737     header.SetCmdByTotalSize<ValueType>(ComputeSize(n));
   8738   }
   8739 
   8740   void Init(GLsizei _n, const GLuint* _queries) {
   8741     SetHeader(_n);
   8742     n = _n;
   8743     memcpy(ImmediateDataAddress(this),
   8744            _queries, ComputeDataSize(_n));
   8745   }
   8746 
   8747   void* Set(void* cmd, GLsizei _n, const GLuint* _queries) {
   8748     static_cast<ValueType*>(cmd)->Init(_n, _queries);
   8749     const uint32 size = ComputeSize(_n);
   8750     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   8751   }
   8752 
   8753   gpu::CommandHeader header;
   8754   int32 n;
   8755 };
   8756 
   8757 COMPILE_ASSERT(sizeof(DeleteQueriesEXTImmediate) == 8,
   8758                Sizeof_DeleteQueriesEXTImmediate_is_not_8);
   8759 COMPILE_ASSERT(offsetof(DeleteQueriesEXTImmediate, header) == 0,
   8760                OffsetOf_DeleteQueriesEXTImmediate_header_not_0);
   8761 COMPILE_ASSERT(offsetof(DeleteQueriesEXTImmediate, n) == 4,
   8762                OffsetOf_DeleteQueriesEXTImmediate_n_not_4);
   8763 
   8764 struct BeginQueryEXT {
   8765   typedef BeginQueryEXT ValueType;
   8766   static const CommandId kCmdId = kBeginQueryEXT;
   8767   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   8768 
   8769   static uint32 ComputeSize() {
   8770     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   8771   }
   8772 
   8773   void SetHeader() {
   8774     header.SetCmd<ValueType>();
   8775   }
   8776 
   8777   void Init(
   8778       GLenum _target, GLuint _id, uint32 _sync_data_shm_id,
   8779       uint32 _sync_data_shm_offset) {
   8780     SetHeader();
   8781     target = _target;
   8782     id = _id;
   8783     sync_data_shm_id = _sync_data_shm_id;
   8784     sync_data_shm_offset = _sync_data_shm_offset;
   8785   }
   8786 
   8787   void* Set(
   8788       void* cmd, GLenum _target, GLuint _id, uint32 _sync_data_shm_id,
   8789       uint32 _sync_data_shm_offset) {
   8790     static_cast<ValueType*>(
   8791         cmd)->Init(_target, _id, _sync_data_shm_id, _sync_data_shm_offset);
   8792     return NextCmdAddress<ValueType>(cmd);
   8793   }
   8794 
   8795   gpu::CommandHeader header;
   8796   uint32 target;
   8797   uint32 id;
   8798   uint32 sync_data_shm_id;
   8799   uint32 sync_data_shm_offset;
   8800 };
   8801 
   8802 COMPILE_ASSERT(sizeof(BeginQueryEXT) == 20,
   8803                Sizeof_BeginQueryEXT_is_not_20);
   8804 COMPILE_ASSERT(offsetof(BeginQueryEXT, header) == 0,
   8805                OffsetOf_BeginQueryEXT_header_not_0);
   8806 COMPILE_ASSERT(offsetof(BeginQueryEXT, target) == 4,
   8807                OffsetOf_BeginQueryEXT_target_not_4);
   8808 COMPILE_ASSERT(offsetof(BeginQueryEXT, id) == 8,
   8809                OffsetOf_BeginQueryEXT_id_not_8);
   8810 COMPILE_ASSERT(offsetof(BeginQueryEXT, sync_data_shm_id) == 12,
   8811                OffsetOf_BeginQueryEXT_sync_data_shm_id_not_12);
   8812 COMPILE_ASSERT(offsetof(BeginQueryEXT, sync_data_shm_offset) == 16,
   8813                OffsetOf_BeginQueryEXT_sync_data_shm_offset_not_16);
   8814 
   8815 struct EndQueryEXT {
   8816   typedef EndQueryEXT ValueType;
   8817   static const CommandId kCmdId = kEndQueryEXT;
   8818   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   8819 
   8820   static uint32 ComputeSize() {
   8821     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   8822   }
   8823 
   8824   void SetHeader() {
   8825     header.SetCmd<ValueType>();
   8826   }
   8827 
   8828   void Init(GLenum _target, GLuint _submit_count) {
   8829     SetHeader();
   8830     target = _target;
   8831     submit_count = _submit_count;
   8832   }
   8833 
   8834   void* Set(void* cmd, GLenum _target, GLuint _submit_count) {
   8835     static_cast<ValueType*>(cmd)->Init(_target, _submit_count);
   8836     return NextCmdAddress<ValueType>(cmd);
   8837   }
   8838 
   8839   gpu::CommandHeader header;
   8840   uint32 target;
   8841   uint32 submit_count;
   8842 };
   8843 
   8844 COMPILE_ASSERT(sizeof(EndQueryEXT) == 12,
   8845                Sizeof_EndQueryEXT_is_not_12);
   8846 COMPILE_ASSERT(offsetof(EndQueryEXT, header) == 0,
   8847                OffsetOf_EndQueryEXT_header_not_0);
   8848 COMPILE_ASSERT(offsetof(EndQueryEXT, target) == 4,
   8849                OffsetOf_EndQueryEXT_target_not_4);
   8850 COMPILE_ASSERT(offsetof(EndQueryEXT, submit_count) == 8,
   8851                OffsetOf_EndQueryEXT_submit_count_not_8);
   8852 
   8853 struct InsertEventMarkerEXT {
   8854   typedef InsertEventMarkerEXT ValueType;
   8855   static const CommandId kCmdId = kInsertEventMarkerEXT;
   8856   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   8857 
   8858   static uint32 ComputeSize() {
   8859     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   8860   }
   8861 
   8862   void SetHeader() {
   8863     header.SetCmd<ValueType>();
   8864   }
   8865 
   8866   void Init(GLuint _bucket_id) {
   8867     SetHeader();
   8868     bucket_id = _bucket_id;
   8869   }
   8870 
   8871   void* Set(void* cmd, GLuint _bucket_id) {
   8872     static_cast<ValueType*>(cmd)->Init(_bucket_id);
   8873     return NextCmdAddress<ValueType>(cmd);
   8874   }
   8875 
   8876   gpu::CommandHeader header;
   8877   uint32 bucket_id;
   8878 };
   8879 
   8880 COMPILE_ASSERT(sizeof(InsertEventMarkerEXT) == 8,
   8881                Sizeof_InsertEventMarkerEXT_is_not_8);
   8882 COMPILE_ASSERT(offsetof(InsertEventMarkerEXT, header) == 0,
   8883                OffsetOf_InsertEventMarkerEXT_header_not_0);
   8884 COMPILE_ASSERT(offsetof(InsertEventMarkerEXT, bucket_id) == 4,
   8885                OffsetOf_InsertEventMarkerEXT_bucket_id_not_4);
   8886 
   8887 struct PushGroupMarkerEXT {
   8888   typedef PushGroupMarkerEXT ValueType;
   8889   static const CommandId kCmdId = kPushGroupMarkerEXT;
   8890   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   8891 
   8892   static uint32 ComputeSize() {
   8893     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   8894   }
   8895 
   8896   void SetHeader() {
   8897     header.SetCmd<ValueType>();
   8898   }
   8899 
   8900   void Init(GLuint _bucket_id) {
   8901     SetHeader();
   8902     bucket_id = _bucket_id;
   8903   }
   8904 
   8905   void* Set(void* cmd, GLuint _bucket_id) {
   8906     static_cast<ValueType*>(cmd)->Init(_bucket_id);
   8907     return NextCmdAddress<ValueType>(cmd);
   8908   }
   8909 
   8910   gpu::CommandHeader header;
   8911   uint32 bucket_id;
   8912 };
   8913 
   8914 COMPILE_ASSERT(sizeof(PushGroupMarkerEXT) == 8,
   8915                Sizeof_PushGroupMarkerEXT_is_not_8);
   8916 COMPILE_ASSERT(offsetof(PushGroupMarkerEXT, header) == 0,
   8917                OffsetOf_PushGroupMarkerEXT_header_not_0);
   8918 COMPILE_ASSERT(offsetof(PushGroupMarkerEXT, bucket_id) == 4,
   8919                OffsetOf_PushGroupMarkerEXT_bucket_id_not_4);
   8920 
   8921 struct PopGroupMarkerEXT {
   8922   typedef PopGroupMarkerEXT ValueType;
   8923   static const CommandId kCmdId = kPopGroupMarkerEXT;
   8924   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   8925 
   8926   static uint32 ComputeSize() {
   8927     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   8928   }
   8929 
   8930   void SetHeader() {
   8931     header.SetCmd<ValueType>();
   8932   }
   8933 
   8934   void Init() {
   8935     SetHeader();
   8936   }
   8937 
   8938   void* Set(void* cmd) {
   8939     static_cast<ValueType*>(cmd)->Init();
   8940     return NextCmdAddress<ValueType>(cmd);
   8941   }
   8942 
   8943   gpu::CommandHeader header;
   8944 };
   8945 
   8946 COMPILE_ASSERT(sizeof(PopGroupMarkerEXT) == 4,
   8947                Sizeof_PopGroupMarkerEXT_is_not_4);
   8948 COMPILE_ASSERT(offsetof(PopGroupMarkerEXT, header) == 0,
   8949                OffsetOf_PopGroupMarkerEXT_header_not_0);
   8950 
   8951 struct GenVertexArraysOES {
   8952   typedef GenVertexArraysOES ValueType;
   8953   static const CommandId kCmdId = kGenVertexArraysOES;
   8954   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   8955 
   8956   static uint32 ComputeSize() {
   8957     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   8958   }
   8959 
   8960   void SetHeader() {
   8961     header.SetCmd<ValueType>();
   8962   }
   8963 
   8964   void Init(GLsizei _n, uint32 _arrays_shm_id, uint32 _arrays_shm_offset) {
   8965     SetHeader();
   8966     n = _n;
   8967     arrays_shm_id = _arrays_shm_id;
   8968     arrays_shm_offset = _arrays_shm_offset;
   8969   }
   8970 
   8971   void* Set(
   8972       void* cmd, GLsizei _n, uint32 _arrays_shm_id,
   8973       uint32 _arrays_shm_offset) {
   8974     static_cast<ValueType*>(cmd)->Init(_n, _arrays_shm_id, _arrays_shm_offset);
   8975     return NextCmdAddress<ValueType>(cmd);
   8976   }
   8977 
   8978   gpu::CommandHeader header;
   8979   int32 n;
   8980   uint32 arrays_shm_id;
   8981   uint32 arrays_shm_offset;
   8982 };
   8983 
   8984 COMPILE_ASSERT(sizeof(GenVertexArraysOES) == 16,
   8985                Sizeof_GenVertexArraysOES_is_not_16);
   8986 COMPILE_ASSERT(offsetof(GenVertexArraysOES, header) == 0,
   8987                OffsetOf_GenVertexArraysOES_header_not_0);
   8988 COMPILE_ASSERT(offsetof(GenVertexArraysOES, n) == 4,
   8989                OffsetOf_GenVertexArraysOES_n_not_4);
   8990 COMPILE_ASSERT(offsetof(GenVertexArraysOES, arrays_shm_id) == 8,
   8991                OffsetOf_GenVertexArraysOES_arrays_shm_id_not_8);
   8992 COMPILE_ASSERT(offsetof(GenVertexArraysOES, arrays_shm_offset) == 12,
   8993                OffsetOf_GenVertexArraysOES_arrays_shm_offset_not_12);
   8994 
   8995 struct GenVertexArraysOESImmediate {
   8996   typedef GenVertexArraysOESImmediate ValueType;
   8997   static const CommandId kCmdId = kGenVertexArraysOESImmediate;
   8998   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   8999 
   9000   static uint32 ComputeDataSize(GLsizei n) {
   9001     return static_cast<uint32>(sizeof(GLuint) * n);  // NOLINT
   9002   }
   9003 
   9004   static uint32 ComputeSize(GLsizei n) {
   9005     return static_cast<uint32>(
   9006         sizeof(ValueType) + ComputeDataSize(n));  // NOLINT
   9007   }
   9008 
   9009   void SetHeader(GLsizei n) {
   9010     header.SetCmdByTotalSize<ValueType>(ComputeSize(n));
   9011   }
   9012 
   9013   void Init(GLsizei _n, GLuint* _arrays) {
   9014     SetHeader(_n);
   9015     n = _n;
   9016     memcpy(ImmediateDataAddress(this),
   9017            _arrays, ComputeDataSize(_n));
   9018   }
   9019 
   9020   void* Set(void* cmd, GLsizei _n, GLuint* _arrays) {
   9021     static_cast<ValueType*>(cmd)->Init(_n, _arrays);
   9022     const uint32 size = ComputeSize(_n);
   9023     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   9024   }
   9025 
   9026   gpu::CommandHeader header;
   9027   int32 n;
   9028 };
   9029 
   9030 COMPILE_ASSERT(sizeof(GenVertexArraysOESImmediate) == 8,
   9031                Sizeof_GenVertexArraysOESImmediate_is_not_8);
   9032 COMPILE_ASSERT(offsetof(GenVertexArraysOESImmediate, header) == 0,
   9033                OffsetOf_GenVertexArraysOESImmediate_header_not_0);
   9034 COMPILE_ASSERT(offsetof(GenVertexArraysOESImmediate, n) == 4,
   9035                OffsetOf_GenVertexArraysOESImmediate_n_not_4);
   9036 
   9037 struct DeleteVertexArraysOES {
   9038   typedef DeleteVertexArraysOES ValueType;
   9039   static const CommandId kCmdId = kDeleteVertexArraysOES;
   9040   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9041 
   9042   static uint32 ComputeSize() {
   9043     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9044   }
   9045 
   9046   void SetHeader() {
   9047     header.SetCmd<ValueType>();
   9048   }
   9049 
   9050   void Init(GLsizei _n, uint32 _arrays_shm_id, uint32 _arrays_shm_offset) {
   9051     SetHeader();
   9052     n = _n;
   9053     arrays_shm_id = _arrays_shm_id;
   9054     arrays_shm_offset = _arrays_shm_offset;
   9055   }
   9056 
   9057   void* Set(
   9058       void* cmd, GLsizei _n, uint32 _arrays_shm_id,
   9059       uint32 _arrays_shm_offset) {
   9060     static_cast<ValueType*>(cmd)->Init(_n, _arrays_shm_id, _arrays_shm_offset);
   9061     return NextCmdAddress<ValueType>(cmd);
   9062   }
   9063 
   9064   gpu::CommandHeader header;
   9065   int32 n;
   9066   uint32 arrays_shm_id;
   9067   uint32 arrays_shm_offset;
   9068 };
   9069 
   9070 COMPILE_ASSERT(sizeof(DeleteVertexArraysOES) == 16,
   9071                Sizeof_DeleteVertexArraysOES_is_not_16);
   9072 COMPILE_ASSERT(offsetof(DeleteVertexArraysOES, header) == 0,
   9073                OffsetOf_DeleteVertexArraysOES_header_not_0);
   9074 COMPILE_ASSERT(offsetof(DeleteVertexArraysOES, n) == 4,
   9075                OffsetOf_DeleteVertexArraysOES_n_not_4);
   9076 COMPILE_ASSERT(offsetof(DeleteVertexArraysOES, arrays_shm_id) == 8,
   9077                OffsetOf_DeleteVertexArraysOES_arrays_shm_id_not_8);
   9078 COMPILE_ASSERT(offsetof(DeleteVertexArraysOES, arrays_shm_offset) == 12,
   9079                OffsetOf_DeleteVertexArraysOES_arrays_shm_offset_not_12);
   9080 
   9081 struct DeleteVertexArraysOESImmediate {
   9082   typedef DeleteVertexArraysOESImmediate ValueType;
   9083   static const CommandId kCmdId = kDeleteVertexArraysOESImmediate;
   9084   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   9085 
   9086   static uint32 ComputeDataSize(GLsizei n) {
   9087     return static_cast<uint32>(sizeof(GLuint) * n);  // NOLINT
   9088   }
   9089 
   9090   static uint32 ComputeSize(GLsizei n) {
   9091     return static_cast<uint32>(
   9092         sizeof(ValueType) + ComputeDataSize(n));  // NOLINT
   9093   }
   9094 
   9095   void SetHeader(GLsizei n) {
   9096     header.SetCmdByTotalSize<ValueType>(ComputeSize(n));
   9097   }
   9098 
   9099   void Init(GLsizei _n, const GLuint* _arrays) {
   9100     SetHeader(_n);
   9101     n = _n;
   9102     memcpy(ImmediateDataAddress(this),
   9103            _arrays, ComputeDataSize(_n));
   9104   }
   9105 
   9106   void* Set(void* cmd, GLsizei _n, const GLuint* _arrays) {
   9107     static_cast<ValueType*>(cmd)->Init(_n, _arrays);
   9108     const uint32 size = ComputeSize(_n);
   9109     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   9110   }
   9111 
   9112   gpu::CommandHeader header;
   9113   int32 n;
   9114 };
   9115 
   9116 COMPILE_ASSERT(sizeof(DeleteVertexArraysOESImmediate) == 8,
   9117                Sizeof_DeleteVertexArraysOESImmediate_is_not_8);
   9118 COMPILE_ASSERT(offsetof(DeleteVertexArraysOESImmediate, header) == 0,
   9119                OffsetOf_DeleteVertexArraysOESImmediate_header_not_0);
   9120 COMPILE_ASSERT(offsetof(DeleteVertexArraysOESImmediate, n) == 4,
   9121                OffsetOf_DeleteVertexArraysOESImmediate_n_not_4);
   9122 
   9123 struct IsVertexArrayOES {
   9124   typedef IsVertexArrayOES ValueType;
   9125   static const CommandId kCmdId = kIsVertexArrayOES;
   9126   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9127 
   9128   typedef uint32 Result;
   9129 
   9130   static uint32 ComputeSize() {
   9131     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9132   }
   9133 
   9134   void SetHeader() {
   9135     header.SetCmd<ValueType>();
   9136   }
   9137 
   9138   void Init(GLuint _array, uint32 _result_shm_id, uint32 _result_shm_offset) {
   9139     SetHeader();
   9140     array = _array;
   9141     result_shm_id = _result_shm_id;
   9142     result_shm_offset = _result_shm_offset;
   9143   }
   9144 
   9145   void* Set(
   9146       void* cmd, GLuint _array, uint32 _result_shm_id,
   9147       uint32 _result_shm_offset) {
   9148     static_cast<ValueType*>(
   9149         cmd)->Init(_array, _result_shm_id, _result_shm_offset);
   9150     return NextCmdAddress<ValueType>(cmd);
   9151   }
   9152 
   9153   gpu::CommandHeader header;
   9154   uint32 array;
   9155   uint32 result_shm_id;
   9156   uint32 result_shm_offset;
   9157 };
   9158 
   9159 COMPILE_ASSERT(sizeof(IsVertexArrayOES) == 16,
   9160                Sizeof_IsVertexArrayOES_is_not_16);
   9161 COMPILE_ASSERT(offsetof(IsVertexArrayOES, header) == 0,
   9162                OffsetOf_IsVertexArrayOES_header_not_0);
   9163 COMPILE_ASSERT(offsetof(IsVertexArrayOES, array) == 4,
   9164                OffsetOf_IsVertexArrayOES_array_not_4);
   9165 COMPILE_ASSERT(offsetof(IsVertexArrayOES, result_shm_id) == 8,
   9166                OffsetOf_IsVertexArrayOES_result_shm_id_not_8);
   9167 COMPILE_ASSERT(offsetof(IsVertexArrayOES, result_shm_offset) == 12,
   9168                OffsetOf_IsVertexArrayOES_result_shm_offset_not_12);
   9169 
   9170 struct BindVertexArrayOES {
   9171   typedef BindVertexArrayOES ValueType;
   9172   static const CommandId kCmdId = kBindVertexArrayOES;
   9173   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9174 
   9175   static uint32 ComputeSize() {
   9176     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9177   }
   9178 
   9179   void SetHeader() {
   9180     header.SetCmd<ValueType>();
   9181   }
   9182 
   9183   void Init(GLuint _array) {
   9184     SetHeader();
   9185     array = _array;
   9186   }
   9187 
   9188   void* Set(void* cmd, GLuint _array) {
   9189     static_cast<ValueType*>(cmd)->Init(_array);
   9190     return NextCmdAddress<ValueType>(cmd);
   9191   }
   9192 
   9193   gpu::CommandHeader header;
   9194   uint32 array;
   9195 };
   9196 
   9197 COMPILE_ASSERT(sizeof(BindVertexArrayOES) == 8,
   9198                Sizeof_BindVertexArrayOES_is_not_8);
   9199 COMPILE_ASSERT(offsetof(BindVertexArrayOES, header) == 0,
   9200                OffsetOf_BindVertexArrayOES_header_not_0);
   9201 COMPILE_ASSERT(offsetof(BindVertexArrayOES, array) == 4,
   9202                OffsetOf_BindVertexArrayOES_array_not_4);
   9203 
   9204 struct SwapBuffers {
   9205   typedef SwapBuffers ValueType;
   9206   static const CommandId kCmdId = kSwapBuffers;
   9207   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9208 
   9209   static uint32 ComputeSize() {
   9210     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9211   }
   9212 
   9213   void SetHeader() {
   9214     header.SetCmd<ValueType>();
   9215   }
   9216 
   9217   void Init() {
   9218     SetHeader();
   9219   }
   9220 
   9221   void* Set(void* cmd) {
   9222     static_cast<ValueType*>(cmd)->Init();
   9223     return NextCmdAddress<ValueType>(cmd);
   9224   }
   9225 
   9226   gpu::CommandHeader header;
   9227 };
   9228 
   9229 COMPILE_ASSERT(sizeof(SwapBuffers) == 4,
   9230                Sizeof_SwapBuffers_is_not_4);
   9231 COMPILE_ASSERT(offsetof(SwapBuffers, header) == 0,
   9232                OffsetOf_SwapBuffers_header_not_0);
   9233 
   9234 struct GetMaxValueInBufferCHROMIUM {
   9235   typedef GetMaxValueInBufferCHROMIUM ValueType;
   9236   static const CommandId kCmdId = kGetMaxValueInBufferCHROMIUM;
   9237   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9238 
   9239   typedef GLuint Result;
   9240 
   9241   static uint32 ComputeSize() {
   9242     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9243   }
   9244 
   9245   void SetHeader() {
   9246     header.SetCmd<ValueType>();
   9247   }
   9248 
   9249   void Init(
   9250       GLuint _buffer_id, GLsizei _count, GLenum _type, GLuint _offset,
   9251       uint32 _result_shm_id, uint32 _result_shm_offset) {
   9252     SetHeader();
   9253     buffer_id = _buffer_id;
   9254     count = _count;
   9255     type = _type;
   9256     offset = _offset;
   9257     result_shm_id = _result_shm_id;
   9258     result_shm_offset = _result_shm_offset;
   9259   }
   9260 
   9261   void* Set(
   9262       void* cmd, GLuint _buffer_id, GLsizei _count, GLenum _type,
   9263       GLuint _offset, uint32 _result_shm_id, uint32 _result_shm_offset) {
   9264     static_cast<ValueType*>(
   9265         cmd)->Init(
   9266             _buffer_id, _count, _type, _offset, _result_shm_id,
   9267             _result_shm_offset);
   9268     return NextCmdAddress<ValueType>(cmd);
   9269   }
   9270 
   9271   gpu::CommandHeader header;
   9272   uint32 buffer_id;
   9273   int32 count;
   9274   uint32 type;
   9275   uint32 offset;
   9276   uint32 result_shm_id;
   9277   uint32 result_shm_offset;
   9278 };
   9279 
   9280 COMPILE_ASSERT(sizeof(GetMaxValueInBufferCHROMIUM) == 28,
   9281                Sizeof_GetMaxValueInBufferCHROMIUM_is_not_28);
   9282 COMPILE_ASSERT(offsetof(GetMaxValueInBufferCHROMIUM, header) == 0,
   9283                OffsetOf_GetMaxValueInBufferCHROMIUM_header_not_0);
   9284 COMPILE_ASSERT(offsetof(GetMaxValueInBufferCHROMIUM, buffer_id) == 4,
   9285                OffsetOf_GetMaxValueInBufferCHROMIUM_buffer_id_not_4);
   9286 COMPILE_ASSERT(offsetof(GetMaxValueInBufferCHROMIUM, count) == 8,
   9287                OffsetOf_GetMaxValueInBufferCHROMIUM_count_not_8);
   9288 COMPILE_ASSERT(offsetof(GetMaxValueInBufferCHROMIUM, type) == 12,
   9289                OffsetOf_GetMaxValueInBufferCHROMIUM_type_not_12);
   9290 COMPILE_ASSERT(offsetof(GetMaxValueInBufferCHROMIUM, offset) == 16,
   9291                OffsetOf_GetMaxValueInBufferCHROMIUM_offset_not_16);
   9292 COMPILE_ASSERT(offsetof(GetMaxValueInBufferCHROMIUM, result_shm_id) == 20,
   9293                OffsetOf_GetMaxValueInBufferCHROMIUM_result_shm_id_not_20);
   9294 COMPILE_ASSERT(offsetof(GetMaxValueInBufferCHROMIUM, result_shm_offset) == 24,
   9295                OffsetOf_GetMaxValueInBufferCHROMIUM_result_shm_offset_not_24);
   9296 
   9297 struct GenSharedIdsCHROMIUM {
   9298   typedef GenSharedIdsCHROMIUM ValueType;
   9299   static const CommandId kCmdId = kGenSharedIdsCHROMIUM;
   9300   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9301 
   9302   static uint32 ComputeSize() {
   9303     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9304   }
   9305 
   9306   void SetHeader() {
   9307     header.SetCmd<ValueType>();
   9308   }
   9309 
   9310   void Init(
   9311       GLuint _namespace_id, GLuint _id_offset, GLsizei _n, uint32 _ids_shm_id,
   9312       uint32 _ids_shm_offset) {
   9313     SetHeader();
   9314     namespace_id = _namespace_id;
   9315     id_offset = _id_offset;
   9316     n = _n;
   9317     ids_shm_id = _ids_shm_id;
   9318     ids_shm_offset = _ids_shm_offset;
   9319   }
   9320 
   9321   void* Set(
   9322       void* cmd, GLuint _namespace_id, GLuint _id_offset, GLsizei _n,
   9323       uint32 _ids_shm_id, uint32 _ids_shm_offset) {
   9324     static_cast<ValueType*>(
   9325         cmd)->Init(
   9326             _namespace_id, _id_offset, _n, _ids_shm_id, _ids_shm_offset);
   9327     return NextCmdAddress<ValueType>(cmd);
   9328   }
   9329 
   9330   gpu::CommandHeader header;
   9331   uint32 namespace_id;
   9332   uint32 id_offset;
   9333   int32 n;
   9334   uint32 ids_shm_id;
   9335   uint32 ids_shm_offset;
   9336 };
   9337 
   9338 COMPILE_ASSERT(sizeof(GenSharedIdsCHROMIUM) == 24,
   9339                Sizeof_GenSharedIdsCHROMIUM_is_not_24);
   9340 COMPILE_ASSERT(offsetof(GenSharedIdsCHROMIUM, header) == 0,
   9341                OffsetOf_GenSharedIdsCHROMIUM_header_not_0);
   9342 COMPILE_ASSERT(offsetof(GenSharedIdsCHROMIUM, namespace_id) == 4,
   9343                OffsetOf_GenSharedIdsCHROMIUM_namespace_id_not_4);
   9344 COMPILE_ASSERT(offsetof(GenSharedIdsCHROMIUM, id_offset) == 8,
   9345                OffsetOf_GenSharedIdsCHROMIUM_id_offset_not_8);
   9346 COMPILE_ASSERT(offsetof(GenSharedIdsCHROMIUM, n) == 12,
   9347                OffsetOf_GenSharedIdsCHROMIUM_n_not_12);
   9348 COMPILE_ASSERT(offsetof(GenSharedIdsCHROMIUM, ids_shm_id) == 16,
   9349                OffsetOf_GenSharedIdsCHROMIUM_ids_shm_id_not_16);
   9350 COMPILE_ASSERT(offsetof(GenSharedIdsCHROMIUM, ids_shm_offset) == 20,
   9351                OffsetOf_GenSharedIdsCHROMIUM_ids_shm_offset_not_20);
   9352 
   9353 struct DeleteSharedIdsCHROMIUM {
   9354   typedef DeleteSharedIdsCHROMIUM ValueType;
   9355   static const CommandId kCmdId = kDeleteSharedIdsCHROMIUM;
   9356   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9357 
   9358   static uint32 ComputeSize() {
   9359     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9360   }
   9361 
   9362   void SetHeader() {
   9363     header.SetCmd<ValueType>();
   9364   }
   9365 
   9366   void Init(
   9367       GLuint _namespace_id, GLsizei _n, uint32 _ids_shm_id,
   9368       uint32 _ids_shm_offset) {
   9369     SetHeader();
   9370     namespace_id = _namespace_id;
   9371     n = _n;
   9372     ids_shm_id = _ids_shm_id;
   9373     ids_shm_offset = _ids_shm_offset;
   9374   }
   9375 
   9376   void* Set(
   9377       void* cmd, GLuint _namespace_id, GLsizei _n, uint32 _ids_shm_id,
   9378       uint32 _ids_shm_offset) {
   9379     static_cast<ValueType*>(
   9380         cmd)->Init(_namespace_id, _n, _ids_shm_id, _ids_shm_offset);
   9381     return NextCmdAddress<ValueType>(cmd);
   9382   }
   9383 
   9384   gpu::CommandHeader header;
   9385   uint32 namespace_id;
   9386   int32 n;
   9387   uint32 ids_shm_id;
   9388   uint32 ids_shm_offset;
   9389 };
   9390 
   9391 COMPILE_ASSERT(sizeof(DeleteSharedIdsCHROMIUM) == 20,
   9392                Sizeof_DeleteSharedIdsCHROMIUM_is_not_20);
   9393 COMPILE_ASSERT(offsetof(DeleteSharedIdsCHROMIUM, header) == 0,
   9394                OffsetOf_DeleteSharedIdsCHROMIUM_header_not_0);
   9395 COMPILE_ASSERT(offsetof(DeleteSharedIdsCHROMIUM, namespace_id) == 4,
   9396                OffsetOf_DeleteSharedIdsCHROMIUM_namespace_id_not_4);
   9397 COMPILE_ASSERT(offsetof(DeleteSharedIdsCHROMIUM, n) == 8,
   9398                OffsetOf_DeleteSharedIdsCHROMIUM_n_not_8);
   9399 COMPILE_ASSERT(offsetof(DeleteSharedIdsCHROMIUM, ids_shm_id) == 12,
   9400                OffsetOf_DeleteSharedIdsCHROMIUM_ids_shm_id_not_12);
   9401 COMPILE_ASSERT(offsetof(DeleteSharedIdsCHROMIUM, ids_shm_offset) == 16,
   9402                OffsetOf_DeleteSharedIdsCHROMIUM_ids_shm_offset_not_16);
   9403 
   9404 struct RegisterSharedIdsCHROMIUM {
   9405   typedef RegisterSharedIdsCHROMIUM ValueType;
   9406   static const CommandId kCmdId = kRegisterSharedIdsCHROMIUM;
   9407   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9408 
   9409   static uint32 ComputeSize() {
   9410     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9411   }
   9412 
   9413   void SetHeader() {
   9414     header.SetCmd<ValueType>();
   9415   }
   9416 
   9417   void Init(
   9418       GLuint _namespace_id, GLsizei _n, uint32 _ids_shm_id,
   9419       uint32 _ids_shm_offset) {
   9420     SetHeader();
   9421     namespace_id = _namespace_id;
   9422     n = _n;
   9423     ids_shm_id = _ids_shm_id;
   9424     ids_shm_offset = _ids_shm_offset;
   9425   }
   9426 
   9427   void* Set(
   9428       void* cmd, GLuint _namespace_id, GLsizei _n, uint32 _ids_shm_id,
   9429       uint32 _ids_shm_offset) {
   9430     static_cast<ValueType*>(
   9431         cmd)->Init(_namespace_id, _n, _ids_shm_id, _ids_shm_offset);
   9432     return NextCmdAddress<ValueType>(cmd);
   9433   }
   9434 
   9435   gpu::CommandHeader header;
   9436   uint32 namespace_id;
   9437   int32 n;
   9438   uint32 ids_shm_id;
   9439   uint32 ids_shm_offset;
   9440 };
   9441 
   9442 COMPILE_ASSERT(sizeof(RegisterSharedIdsCHROMIUM) == 20,
   9443                Sizeof_RegisterSharedIdsCHROMIUM_is_not_20);
   9444 COMPILE_ASSERT(offsetof(RegisterSharedIdsCHROMIUM, header) == 0,
   9445                OffsetOf_RegisterSharedIdsCHROMIUM_header_not_0);
   9446 COMPILE_ASSERT(offsetof(RegisterSharedIdsCHROMIUM, namespace_id) == 4,
   9447                OffsetOf_RegisterSharedIdsCHROMIUM_namespace_id_not_4);
   9448 COMPILE_ASSERT(offsetof(RegisterSharedIdsCHROMIUM, n) == 8,
   9449                OffsetOf_RegisterSharedIdsCHROMIUM_n_not_8);
   9450 COMPILE_ASSERT(offsetof(RegisterSharedIdsCHROMIUM, ids_shm_id) == 12,
   9451                OffsetOf_RegisterSharedIdsCHROMIUM_ids_shm_id_not_12);
   9452 COMPILE_ASSERT(offsetof(RegisterSharedIdsCHROMIUM, ids_shm_offset) == 16,
   9453                OffsetOf_RegisterSharedIdsCHROMIUM_ids_shm_offset_not_16);
   9454 
   9455 struct EnableFeatureCHROMIUM {
   9456   typedef EnableFeatureCHROMIUM ValueType;
   9457   static const CommandId kCmdId = kEnableFeatureCHROMIUM;
   9458   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9459 
   9460   typedef GLint Result;
   9461 
   9462   static uint32 ComputeSize() {
   9463     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9464   }
   9465 
   9466   void SetHeader() {
   9467     header.SetCmd<ValueType>();
   9468   }
   9469 
   9470   void Init(
   9471       GLuint _bucket_id, uint32 _result_shm_id, uint32 _result_shm_offset) {
   9472     SetHeader();
   9473     bucket_id = _bucket_id;
   9474     result_shm_id = _result_shm_id;
   9475     result_shm_offset = _result_shm_offset;
   9476   }
   9477 
   9478   void* Set(
   9479       void* cmd, GLuint _bucket_id, uint32 _result_shm_id,
   9480       uint32 _result_shm_offset) {
   9481     static_cast<ValueType*>(
   9482         cmd)->Init(_bucket_id, _result_shm_id, _result_shm_offset);
   9483     return NextCmdAddress<ValueType>(cmd);
   9484   }
   9485 
   9486   gpu::CommandHeader header;
   9487   uint32 bucket_id;
   9488   uint32 result_shm_id;
   9489   uint32 result_shm_offset;
   9490 };
   9491 
   9492 COMPILE_ASSERT(sizeof(EnableFeatureCHROMIUM) == 16,
   9493                Sizeof_EnableFeatureCHROMIUM_is_not_16);
   9494 COMPILE_ASSERT(offsetof(EnableFeatureCHROMIUM, header) == 0,
   9495                OffsetOf_EnableFeatureCHROMIUM_header_not_0);
   9496 COMPILE_ASSERT(offsetof(EnableFeatureCHROMIUM, bucket_id) == 4,
   9497                OffsetOf_EnableFeatureCHROMIUM_bucket_id_not_4);
   9498 COMPILE_ASSERT(offsetof(EnableFeatureCHROMIUM, result_shm_id) == 8,
   9499                OffsetOf_EnableFeatureCHROMIUM_result_shm_id_not_8);
   9500 COMPILE_ASSERT(offsetof(EnableFeatureCHROMIUM, result_shm_offset) == 12,
   9501                OffsetOf_EnableFeatureCHROMIUM_result_shm_offset_not_12);
   9502 
   9503 struct ResizeCHROMIUM {
   9504   typedef ResizeCHROMIUM ValueType;
   9505   static const CommandId kCmdId = kResizeCHROMIUM;
   9506   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9507 
   9508   static uint32 ComputeSize() {
   9509     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9510   }
   9511 
   9512   void SetHeader() {
   9513     header.SetCmd<ValueType>();
   9514   }
   9515 
   9516   void Init(GLuint _width, GLuint _height, GLfloat _scale_factor) {
   9517     SetHeader();
   9518     width = _width;
   9519     height = _height;
   9520     scale_factor = _scale_factor;
   9521   }
   9522 
   9523   void* Set(void* cmd, GLuint _width, GLuint _height, GLfloat _scale_factor) {
   9524     static_cast<ValueType*>(cmd)->Init(_width, _height, _scale_factor);
   9525     return NextCmdAddress<ValueType>(cmd);
   9526   }
   9527 
   9528   gpu::CommandHeader header;
   9529   uint32 width;
   9530   uint32 height;
   9531   float scale_factor;
   9532 };
   9533 
   9534 COMPILE_ASSERT(sizeof(ResizeCHROMIUM) == 16,
   9535                Sizeof_ResizeCHROMIUM_is_not_16);
   9536 COMPILE_ASSERT(offsetof(ResizeCHROMIUM, header) == 0,
   9537                OffsetOf_ResizeCHROMIUM_header_not_0);
   9538 COMPILE_ASSERT(offsetof(ResizeCHROMIUM, width) == 4,
   9539                OffsetOf_ResizeCHROMIUM_width_not_4);
   9540 COMPILE_ASSERT(offsetof(ResizeCHROMIUM, height) == 8,
   9541                OffsetOf_ResizeCHROMIUM_height_not_8);
   9542 COMPILE_ASSERT(offsetof(ResizeCHROMIUM, scale_factor) == 12,
   9543                OffsetOf_ResizeCHROMIUM_scale_factor_not_12);
   9544 
   9545 struct GetRequestableExtensionsCHROMIUM {
   9546   typedef GetRequestableExtensionsCHROMIUM ValueType;
   9547   static const CommandId kCmdId = kGetRequestableExtensionsCHROMIUM;
   9548   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9549 
   9550   static uint32 ComputeSize() {
   9551     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9552   }
   9553 
   9554   void SetHeader() {
   9555     header.SetCmd<ValueType>();
   9556   }
   9557 
   9558   void Init(uint32 _bucket_id) {
   9559     SetHeader();
   9560     bucket_id = _bucket_id;
   9561   }
   9562 
   9563   void* Set(void* cmd, uint32 _bucket_id) {
   9564     static_cast<ValueType*>(cmd)->Init(_bucket_id);
   9565     return NextCmdAddress<ValueType>(cmd);
   9566   }
   9567 
   9568   gpu::CommandHeader header;
   9569   uint32 bucket_id;
   9570 };
   9571 
   9572 COMPILE_ASSERT(sizeof(GetRequestableExtensionsCHROMIUM) == 8,
   9573                Sizeof_GetRequestableExtensionsCHROMIUM_is_not_8);
   9574 COMPILE_ASSERT(offsetof(GetRequestableExtensionsCHROMIUM, header) == 0,
   9575                OffsetOf_GetRequestableExtensionsCHROMIUM_header_not_0);
   9576 COMPILE_ASSERT(offsetof(GetRequestableExtensionsCHROMIUM, bucket_id) == 4,
   9577                OffsetOf_GetRequestableExtensionsCHROMIUM_bucket_id_not_4);
   9578 
   9579 struct RequestExtensionCHROMIUM {
   9580   typedef RequestExtensionCHROMIUM ValueType;
   9581   static const CommandId kCmdId = kRequestExtensionCHROMIUM;
   9582   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9583 
   9584   static uint32 ComputeSize() {
   9585     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9586   }
   9587 
   9588   void SetHeader() {
   9589     header.SetCmd<ValueType>();
   9590   }
   9591 
   9592   void Init(uint32 _bucket_id) {
   9593     SetHeader();
   9594     bucket_id = _bucket_id;
   9595   }
   9596 
   9597   void* Set(void* cmd, uint32 _bucket_id) {
   9598     static_cast<ValueType*>(cmd)->Init(_bucket_id);
   9599     return NextCmdAddress<ValueType>(cmd);
   9600   }
   9601 
   9602   gpu::CommandHeader header;
   9603   uint32 bucket_id;
   9604 };
   9605 
   9606 COMPILE_ASSERT(sizeof(RequestExtensionCHROMIUM) == 8,
   9607                Sizeof_RequestExtensionCHROMIUM_is_not_8);
   9608 COMPILE_ASSERT(offsetof(RequestExtensionCHROMIUM, header) == 0,
   9609                OffsetOf_RequestExtensionCHROMIUM_header_not_0);
   9610 COMPILE_ASSERT(offsetof(RequestExtensionCHROMIUM, bucket_id) == 4,
   9611                OffsetOf_RequestExtensionCHROMIUM_bucket_id_not_4);
   9612 
   9613 struct GetMultipleIntegervCHROMIUM {
   9614   typedef GetMultipleIntegervCHROMIUM ValueType;
   9615   static const CommandId kCmdId = kGetMultipleIntegervCHROMIUM;
   9616   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9617 
   9618   static uint32 ComputeSize() {
   9619     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9620   }
   9621 
   9622   void SetHeader() {
   9623     header.SetCmd<ValueType>();
   9624   }
   9625 
   9626   void Init(
   9627       uint32 _pnames_shm_id, uint32 _pnames_shm_offset, GLuint _count,
   9628       uint32 _results_shm_id, uint32 _results_shm_offset, GLsizeiptr _size) {
   9629     SetHeader();
   9630     pnames_shm_id = _pnames_shm_id;
   9631     pnames_shm_offset = _pnames_shm_offset;
   9632     count = _count;
   9633     results_shm_id = _results_shm_id;
   9634     results_shm_offset = _results_shm_offset;
   9635     size = _size;
   9636   }
   9637 
   9638   void* Set(
   9639       void* cmd, uint32 _pnames_shm_id, uint32 _pnames_shm_offset,
   9640       GLuint _count, uint32 _results_shm_id, uint32 _results_shm_offset,
   9641       GLsizeiptr _size) {
   9642     static_cast<ValueType*>(
   9643         cmd)->Init(
   9644             _pnames_shm_id, _pnames_shm_offset, _count, _results_shm_id,
   9645             _results_shm_offset, _size);
   9646     return NextCmdAddress<ValueType>(cmd);
   9647   }
   9648 
   9649   gpu::CommandHeader header;
   9650   uint32 pnames_shm_id;
   9651   uint32 pnames_shm_offset;
   9652   uint32 count;
   9653   uint32 results_shm_id;
   9654   uint32 results_shm_offset;
   9655   int32 size;
   9656 };
   9657 
   9658 COMPILE_ASSERT(sizeof(GetMultipleIntegervCHROMIUM) == 28,
   9659                Sizeof_GetMultipleIntegervCHROMIUM_is_not_28);
   9660 COMPILE_ASSERT(offsetof(GetMultipleIntegervCHROMIUM, header) == 0,
   9661                OffsetOf_GetMultipleIntegervCHROMIUM_header_not_0);
   9662 COMPILE_ASSERT(offsetof(GetMultipleIntegervCHROMIUM, pnames_shm_id) == 4,
   9663                OffsetOf_GetMultipleIntegervCHROMIUM_pnames_shm_id_not_4);
   9664 COMPILE_ASSERT(offsetof(GetMultipleIntegervCHROMIUM, pnames_shm_offset) == 8,
   9665                OffsetOf_GetMultipleIntegervCHROMIUM_pnames_shm_offset_not_8);
   9666 COMPILE_ASSERT(offsetof(GetMultipleIntegervCHROMIUM, count) == 12,
   9667                OffsetOf_GetMultipleIntegervCHROMIUM_count_not_12);
   9668 COMPILE_ASSERT(offsetof(GetMultipleIntegervCHROMIUM, results_shm_id) == 16,
   9669                OffsetOf_GetMultipleIntegervCHROMIUM_results_shm_id_not_16);
   9670 COMPILE_ASSERT(offsetof(GetMultipleIntegervCHROMIUM, results_shm_offset) == 20,
   9671                OffsetOf_GetMultipleIntegervCHROMIUM_results_shm_offset_not_20);
   9672 COMPILE_ASSERT(offsetof(GetMultipleIntegervCHROMIUM, size) == 24,
   9673                OffsetOf_GetMultipleIntegervCHROMIUM_size_not_24);
   9674 
   9675 struct GetProgramInfoCHROMIUM {
   9676   typedef GetProgramInfoCHROMIUM ValueType;
   9677   static const CommandId kCmdId = kGetProgramInfoCHROMIUM;
   9678   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9679 
   9680   struct Result {
   9681     uint32 link_status;
   9682     uint32 num_attribs;
   9683     uint32 num_uniforms;
   9684   };
   9685 
   9686   static uint32 ComputeSize() {
   9687     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9688   }
   9689 
   9690   void SetHeader() {
   9691     header.SetCmd<ValueType>();
   9692   }
   9693 
   9694   void Init(GLuint _program, uint32 _bucket_id) {
   9695     SetHeader();
   9696     program = _program;
   9697     bucket_id = _bucket_id;
   9698   }
   9699 
   9700   void* Set(void* cmd, GLuint _program, uint32 _bucket_id) {
   9701     static_cast<ValueType*>(cmd)->Init(_program, _bucket_id);
   9702     return NextCmdAddress<ValueType>(cmd);
   9703   }
   9704 
   9705   gpu::CommandHeader header;
   9706   uint32 program;
   9707   uint32 bucket_id;
   9708 };
   9709 
   9710 COMPILE_ASSERT(sizeof(GetProgramInfoCHROMIUM) == 12,
   9711                Sizeof_GetProgramInfoCHROMIUM_is_not_12);
   9712 COMPILE_ASSERT(offsetof(GetProgramInfoCHROMIUM, header) == 0,
   9713                OffsetOf_GetProgramInfoCHROMIUM_header_not_0);
   9714 COMPILE_ASSERT(offsetof(GetProgramInfoCHROMIUM, program) == 4,
   9715                OffsetOf_GetProgramInfoCHROMIUM_program_not_4);
   9716 COMPILE_ASSERT(offsetof(GetProgramInfoCHROMIUM, bucket_id) == 8,
   9717                OffsetOf_GetProgramInfoCHROMIUM_bucket_id_not_8);
   9718 COMPILE_ASSERT(offsetof(GetProgramInfoCHROMIUM::Result, link_status) == 0,
   9719                OffsetOf_GetProgramInfoCHROMIUM_Result_link_status_not_0);
   9720 COMPILE_ASSERT(offsetof(GetProgramInfoCHROMIUM::Result, num_attribs) == 4,
   9721                OffsetOf_GetProgramInfoCHROMIUM_Result_num_attribs_not_4);
   9722 COMPILE_ASSERT(offsetof(GetProgramInfoCHROMIUM::Result, num_uniforms) == 8,
   9723                OffsetOf_GetProgramInfoCHROMIUM_Result_num_uniforms_not_8);
   9724 
   9725 struct CreateStreamTextureCHROMIUM {
   9726   typedef CreateStreamTextureCHROMIUM ValueType;
   9727   static const CommandId kCmdId = kCreateStreamTextureCHROMIUM;
   9728   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9729 
   9730   typedef GLuint Result;
   9731 
   9732   static uint32 ComputeSize() {
   9733     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9734   }
   9735 
   9736   void SetHeader() {
   9737     header.SetCmd<ValueType>();
   9738   }
   9739 
   9740   void Init(
   9741       GLuint _client_id, uint32 _result_shm_id, uint32 _result_shm_offset) {
   9742     SetHeader();
   9743     client_id = _client_id;
   9744     result_shm_id = _result_shm_id;
   9745     result_shm_offset = _result_shm_offset;
   9746   }
   9747 
   9748   void* Set(
   9749       void* cmd, GLuint _client_id, uint32 _result_shm_id,
   9750       uint32 _result_shm_offset) {
   9751     static_cast<ValueType*>(
   9752         cmd)->Init(_client_id, _result_shm_id, _result_shm_offset);
   9753     return NextCmdAddress<ValueType>(cmd);
   9754   }
   9755 
   9756   gpu::CommandHeader header;
   9757   uint32 client_id;
   9758   uint32 result_shm_id;
   9759   uint32 result_shm_offset;
   9760 };
   9761 
   9762 COMPILE_ASSERT(sizeof(CreateStreamTextureCHROMIUM) == 16,
   9763                Sizeof_CreateStreamTextureCHROMIUM_is_not_16);
   9764 COMPILE_ASSERT(offsetof(CreateStreamTextureCHROMIUM, header) == 0,
   9765                OffsetOf_CreateStreamTextureCHROMIUM_header_not_0);
   9766 COMPILE_ASSERT(offsetof(CreateStreamTextureCHROMIUM, client_id) == 4,
   9767                OffsetOf_CreateStreamTextureCHROMIUM_client_id_not_4);
   9768 COMPILE_ASSERT(offsetof(CreateStreamTextureCHROMIUM, result_shm_id) == 8,
   9769                OffsetOf_CreateStreamTextureCHROMIUM_result_shm_id_not_8);
   9770 COMPILE_ASSERT(offsetof(CreateStreamTextureCHROMIUM, result_shm_offset) == 12,
   9771                OffsetOf_CreateStreamTextureCHROMIUM_result_shm_offset_not_12);
   9772 
   9773 struct DestroyStreamTextureCHROMIUM {
   9774   typedef DestroyStreamTextureCHROMIUM ValueType;
   9775   static const CommandId kCmdId = kDestroyStreamTextureCHROMIUM;
   9776   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9777 
   9778   static uint32 ComputeSize() {
   9779     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9780   }
   9781 
   9782   void SetHeader() {
   9783     header.SetCmd<ValueType>();
   9784   }
   9785 
   9786   void Init(GLuint _texture) {
   9787     SetHeader();
   9788     texture = _texture;
   9789   }
   9790 
   9791   void* Set(void* cmd, GLuint _texture) {
   9792     static_cast<ValueType*>(cmd)->Init(_texture);
   9793     return NextCmdAddress<ValueType>(cmd);
   9794   }
   9795 
   9796   gpu::CommandHeader header;
   9797   uint32 texture;
   9798 };
   9799 
   9800 COMPILE_ASSERT(sizeof(DestroyStreamTextureCHROMIUM) == 8,
   9801                Sizeof_DestroyStreamTextureCHROMIUM_is_not_8);
   9802 COMPILE_ASSERT(offsetof(DestroyStreamTextureCHROMIUM, header) == 0,
   9803                OffsetOf_DestroyStreamTextureCHROMIUM_header_not_0);
   9804 COMPILE_ASSERT(offsetof(DestroyStreamTextureCHROMIUM, texture) == 4,
   9805                OffsetOf_DestroyStreamTextureCHROMIUM_texture_not_4);
   9806 
   9807 struct GetTranslatedShaderSourceANGLE {
   9808   typedef GetTranslatedShaderSourceANGLE ValueType;
   9809   static const CommandId kCmdId = kGetTranslatedShaderSourceANGLE;
   9810   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9811 
   9812   static uint32 ComputeSize() {
   9813     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9814   }
   9815 
   9816   void SetHeader() {
   9817     header.SetCmd<ValueType>();
   9818   }
   9819 
   9820   void Init(GLuint _shader, uint32 _bucket_id) {
   9821     SetHeader();
   9822     shader = _shader;
   9823     bucket_id = _bucket_id;
   9824   }
   9825 
   9826   void* Set(void* cmd, GLuint _shader, uint32 _bucket_id) {
   9827     static_cast<ValueType*>(cmd)->Init(_shader, _bucket_id);
   9828     return NextCmdAddress<ValueType>(cmd);
   9829   }
   9830 
   9831   gpu::CommandHeader header;
   9832   uint32 shader;
   9833   uint32 bucket_id;
   9834 };
   9835 
   9836 COMPILE_ASSERT(sizeof(GetTranslatedShaderSourceANGLE) == 12,
   9837                Sizeof_GetTranslatedShaderSourceANGLE_is_not_12);
   9838 COMPILE_ASSERT(offsetof(GetTranslatedShaderSourceANGLE, header) == 0,
   9839                OffsetOf_GetTranslatedShaderSourceANGLE_header_not_0);
   9840 COMPILE_ASSERT(offsetof(GetTranslatedShaderSourceANGLE, shader) == 4,
   9841                OffsetOf_GetTranslatedShaderSourceANGLE_shader_not_4);
   9842 COMPILE_ASSERT(offsetof(GetTranslatedShaderSourceANGLE, bucket_id) == 8,
   9843                OffsetOf_GetTranslatedShaderSourceANGLE_bucket_id_not_8);
   9844 
   9845 struct PostSubBufferCHROMIUM {
   9846   typedef PostSubBufferCHROMIUM ValueType;
   9847   static const CommandId kCmdId = kPostSubBufferCHROMIUM;
   9848   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9849 
   9850   static uint32 ComputeSize() {
   9851     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9852   }
   9853 
   9854   void SetHeader() {
   9855     header.SetCmd<ValueType>();
   9856   }
   9857 
   9858   void Init(GLint _x, GLint _y, GLint _width, GLint _height) {
   9859     SetHeader();
   9860     x = _x;
   9861     y = _y;
   9862     width = _width;
   9863     height = _height;
   9864   }
   9865 
   9866   void* Set(void* cmd, GLint _x, GLint _y, GLint _width, GLint _height) {
   9867     static_cast<ValueType*>(cmd)->Init(_x, _y, _width, _height);
   9868     return NextCmdAddress<ValueType>(cmd);
   9869   }
   9870 
   9871   gpu::CommandHeader header;
   9872   int32 x;
   9873   int32 y;
   9874   int32 width;
   9875   int32 height;
   9876 };
   9877 
   9878 COMPILE_ASSERT(sizeof(PostSubBufferCHROMIUM) == 20,
   9879                Sizeof_PostSubBufferCHROMIUM_is_not_20);
   9880 COMPILE_ASSERT(offsetof(PostSubBufferCHROMIUM, header) == 0,
   9881                OffsetOf_PostSubBufferCHROMIUM_header_not_0);
   9882 COMPILE_ASSERT(offsetof(PostSubBufferCHROMIUM, x) == 4,
   9883                OffsetOf_PostSubBufferCHROMIUM_x_not_4);
   9884 COMPILE_ASSERT(offsetof(PostSubBufferCHROMIUM, y) == 8,
   9885                OffsetOf_PostSubBufferCHROMIUM_y_not_8);
   9886 COMPILE_ASSERT(offsetof(PostSubBufferCHROMIUM, width) == 12,
   9887                OffsetOf_PostSubBufferCHROMIUM_width_not_12);
   9888 COMPILE_ASSERT(offsetof(PostSubBufferCHROMIUM, height) == 16,
   9889                OffsetOf_PostSubBufferCHROMIUM_height_not_16);
   9890 
   9891 struct TexImageIOSurface2DCHROMIUM {
   9892   typedef TexImageIOSurface2DCHROMIUM ValueType;
   9893   static const CommandId kCmdId = kTexImageIOSurface2DCHROMIUM;
   9894   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9895 
   9896   static uint32 ComputeSize() {
   9897     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9898   }
   9899 
   9900   void SetHeader() {
   9901     header.SetCmd<ValueType>();
   9902   }
   9903 
   9904   void Init(
   9905       GLenum _target, GLsizei _width, GLsizei _height, GLuint _ioSurfaceId,
   9906       GLuint _plane) {
   9907     SetHeader();
   9908     target = _target;
   9909     width = _width;
   9910     height = _height;
   9911     ioSurfaceId = _ioSurfaceId;
   9912     plane = _plane;
   9913   }
   9914 
   9915   void* Set(
   9916       void* cmd, GLenum _target, GLsizei _width, GLsizei _height,
   9917       GLuint _ioSurfaceId, GLuint _plane) {
   9918     static_cast<ValueType*>(
   9919         cmd)->Init(_target, _width, _height, _ioSurfaceId, _plane);
   9920     return NextCmdAddress<ValueType>(cmd);
   9921   }
   9922 
   9923   gpu::CommandHeader header;
   9924   uint32 target;
   9925   int32 width;
   9926   int32 height;
   9927   uint32 ioSurfaceId;
   9928   uint32 plane;
   9929 };
   9930 
   9931 COMPILE_ASSERT(sizeof(TexImageIOSurface2DCHROMIUM) == 24,
   9932                Sizeof_TexImageIOSurface2DCHROMIUM_is_not_24);
   9933 COMPILE_ASSERT(offsetof(TexImageIOSurface2DCHROMIUM, header) == 0,
   9934                OffsetOf_TexImageIOSurface2DCHROMIUM_header_not_0);
   9935 COMPILE_ASSERT(offsetof(TexImageIOSurface2DCHROMIUM, target) == 4,
   9936                OffsetOf_TexImageIOSurface2DCHROMIUM_target_not_4);
   9937 COMPILE_ASSERT(offsetof(TexImageIOSurface2DCHROMIUM, width) == 8,
   9938                OffsetOf_TexImageIOSurface2DCHROMIUM_width_not_8);
   9939 COMPILE_ASSERT(offsetof(TexImageIOSurface2DCHROMIUM, height) == 12,
   9940                OffsetOf_TexImageIOSurface2DCHROMIUM_height_not_12);
   9941 COMPILE_ASSERT(offsetof(TexImageIOSurface2DCHROMIUM, ioSurfaceId) == 16,
   9942                OffsetOf_TexImageIOSurface2DCHROMIUM_ioSurfaceId_not_16);
   9943 COMPILE_ASSERT(offsetof(TexImageIOSurface2DCHROMIUM, plane) == 20,
   9944                OffsetOf_TexImageIOSurface2DCHROMIUM_plane_not_20);
   9945 
   9946 struct CopyTextureCHROMIUM {
   9947   typedef CopyTextureCHROMIUM ValueType;
   9948   static const CommandId kCmdId = kCopyTextureCHROMIUM;
   9949   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   9950 
   9951   static uint32 ComputeSize() {
   9952     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   9953   }
   9954 
   9955   void SetHeader() {
   9956     header.SetCmd<ValueType>();
   9957   }
   9958 
   9959   void Init(
   9960       GLenum _target, GLenum _source_id, GLenum _dest_id, GLint _level,
   9961       GLint _internalformat, GLenum _dest_type) {
   9962     SetHeader();
   9963     target = _target;
   9964     source_id = _source_id;
   9965     dest_id = _dest_id;
   9966     level = _level;
   9967     internalformat = _internalformat;
   9968     dest_type = _dest_type;
   9969   }
   9970 
   9971   void* Set(
   9972       void* cmd, GLenum _target, GLenum _source_id, GLenum _dest_id,
   9973       GLint _level, GLint _internalformat, GLenum _dest_type) {
   9974     static_cast<ValueType*>(
   9975         cmd)->Init(
   9976             _target, _source_id, _dest_id, _level, _internalformat,
   9977             _dest_type);
   9978     return NextCmdAddress<ValueType>(cmd);
   9979   }
   9980 
   9981   gpu::CommandHeader header;
   9982   uint32 target;
   9983   uint32 source_id;
   9984   uint32 dest_id;
   9985   int32 level;
   9986   int32 internalformat;
   9987   uint32 dest_type;
   9988 };
   9989 
   9990 COMPILE_ASSERT(sizeof(CopyTextureCHROMIUM) == 28,
   9991                Sizeof_CopyTextureCHROMIUM_is_not_28);
   9992 COMPILE_ASSERT(offsetof(CopyTextureCHROMIUM, header) == 0,
   9993                OffsetOf_CopyTextureCHROMIUM_header_not_0);
   9994 COMPILE_ASSERT(offsetof(CopyTextureCHROMIUM, target) == 4,
   9995                OffsetOf_CopyTextureCHROMIUM_target_not_4);
   9996 COMPILE_ASSERT(offsetof(CopyTextureCHROMIUM, source_id) == 8,
   9997                OffsetOf_CopyTextureCHROMIUM_source_id_not_8);
   9998 COMPILE_ASSERT(offsetof(CopyTextureCHROMIUM, dest_id) == 12,
   9999                OffsetOf_CopyTextureCHROMIUM_dest_id_not_12);
   10000 COMPILE_ASSERT(offsetof(CopyTextureCHROMIUM, level) == 16,
   10001                OffsetOf_CopyTextureCHROMIUM_level_not_16);
   10002 COMPILE_ASSERT(offsetof(CopyTextureCHROMIUM, internalformat) == 20,
   10003                OffsetOf_CopyTextureCHROMIUM_internalformat_not_20);
   10004 COMPILE_ASSERT(offsetof(CopyTextureCHROMIUM, dest_type) == 24,
   10005                OffsetOf_CopyTextureCHROMIUM_dest_type_not_24);
   10006 
   10007 struct DrawArraysInstancedANGLE {
   10008   typedef DrawArraysInstancedANGLE ValueType;
   10009   static const CommandId kCmdId = kDrawArraysInstancedANGLE;
   10010   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   10011 
   10012   static uint32 ComputeSize() {
   10013     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   10014   }
   10015 
   10016   void SetHeader() {
   10017     header.SetCmd<ValueType>();
   10018   }
   10019 
   10020   void Init(GLenum _mode, GLint _first, GLsizei _count, GLsizei _primcount) {
   10021     SetHeader();
   10022     mode = _mode;
   10023     first = _first;
   10024     count = _count;
   10025     primcount = _primcount;
   10026   }
   10027 
   10028   void* Set(
   10029       void* cmd, GLenum _mode, GLint _first, GLsizei _count,
   10030       GLsizei _primcount) {
   10031     static_cast<ValueType*>(cmd)->Init(_mode, _first, _count, _primcount);
   10032     return NextCmdAddress<ValueType>(cmd);
   10033   }
   10034 
   10035   gpu::CommandHeader header;
   10036   uint32 mode;
   10037   int32 first;
   10038   int32 count;
   10039   int32 primcount;
   10040 };
   10041 
   10042 COMPILE_ASSERT(sizeof(DrawArraysInstancedANGLE) == 20,
   10043                Sizeof_DrawArraysInstancedANGLE_is_not_20);
   10044 COMPILE_ASSERT(offsetof(DrawArraysInstancedANGLE, header) == 0,
   10045                OffsetOf_DrawArraysInstancedANGLE_header_not_0);
   10046 COMPILE_ASSERT(offsetof(DrawArraysInstancedANGLE, mode) == 4,
   10047                OffsetOf_DrawArraysInstancedANGLE_mode_not_4);
   10048 COMPILE_ASSERT(offsetof(DrawArraysInstancedANGLE, first) == 8,
   10049                OffsetOf_DrawArraysInstancedANGLE_first_not_8);
   10050 COMPILE_ASSERT(offsetof(DrawArraysInstancedANGLE, count) == 12,
   10051                OffsetOf_DrawArraysInstancedANGLE_count_not_12);
   10052 COMPILE_ASSERT(offsetof(DrawArraysInstancedANGLE, primcount) == 16,
   10053                OffsetOf_DrawArraysInstancedANGLE_primcount_not_16);
   10054 
   10055 struct DrawElementsInstancedANGLE {
   10056   typedef DrawElementsInstancedANGLE ValueType;
   10057   static const CommandId kCmdId = kDrawElementsInstancedANGLE;
   10058   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   10059 
   10060   static uint32 ComputeSize() {
   10061     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   10062   }
   10063 
   10064   void SetHeader() {
   10065     header.SetCmd<ValueType>();
   10066   }
   10067 
   10068   void Init(
   10069       GLenum _mode, GLsizei _count, GLenum _type, GLuint _index_offset,
   10070       GLsizei _primcount) {
   10071     SetHeader();
   10072     mode = _mode;
   10073     count = _count;
   10074     type = _type;
   10075     index_offset = _index_offset;
   10076     primcount = _primcount;
   10077   }
   10078 
   10079   void* Set(
   10080       void* cmd, GLenum _mode, GLsizei _count, GLenum _type,
   10081       GLuint _index_offset, GLsizei _primcount) {
   10082     static_cast<ValueType*>(
   10083         cmd)->Init(_mode, _count, _type, _index_offset, _primcount);
   10084     return NextCmdAddress<ValueType>(cmd);
   10085   }
   10086 
   10087   gpu::CommandHeader header;
   10088   uint32 mode;
   10089   int32 count;
   10090   uint32 type;
   10091   uint32 index_offset;
   10092   int32 primcount;
   10093 };
   10094 
   10095 COMPILE_ASSERT(sizeof(DrawElementsInstancedANGLE) == 24,
   10096                Sizeof_DrawElementsInstancedANGLE_is_not_24);
   10097 COMPILE_ASSERT(offsetof(DrawElementsInstancedANGLE, header) == 0,
   10098                OffsetOf_DrawElementsInstancedANGLE_header_not_0);
   10099 COMPILE_ASSERT(offsetof(DrawElementsInstancedANGLE, mode) == 4,
   10100                OffsetOf_DrawElementsInstancedANGLE_mode_not_4);
   10101 COMPILE_ASSERT(offsetof(DrawElementsInstancedANGLE, count) == 8,
   10102                OffsetOf_DrawElementsInstancedANGLE_count_not_8);
   10103 COMPILE_ASSERT(offsetof(DrawElementsInstancedANGLE, type) == 12,
   10104                OffsetOf_DrawElementsInstancedANGLE_type_not_12);
   10105 COMPILE_ASSERT(offsetof(DrawElementsInstancedANGLE, index_offset) == 16,
   10106                OffsetOf_DrawElementsInstancedANGLE_index_offset_not_16);
   10107 COMPILE_ASSERT(offsetof(DrawElementsInstancedANGLE, primcount) == 20,
   10108                OffsetOf_DrawElementsInstancedANGLE_primcount_not_20);
   10109 
   10110 struct VertexAttribDivisorANGLE {
   10111   typedef VertexAttribDivisorANGLE ValueType;
   10112   static const CommandId kCmdId = kVertexAttribDivisorANGLE;
   10113   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   10114 
   10115   static uint32 ComputeSize() {
   10116     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   10117   }
   10118 
   10119   void SetHeader() {
   10120     header.SetCmd<ValueType>();
   10121   }
   10122 
   10123   void Init(GLuint _index, GLuint _divisor) {
   10124     SetHeader();
   10125     index = _index;
   10126     divisor = _divisor;
   10127   }
   10128 
   10129   void* Set(void* cmd, GLuint _index, GLuint _divisor) {
   10130     static_cast<ValueType*>(cmd)->Init(_index, _divisor);
   10131     return NextCmdAddress<ValueType>(cmd);
   10132   }
   10133 
   10134   gpu::CommandHeader header;
   10135   uint32 index;
   10136   uint32 divisor;
   10137 };
   10138 
   10139 COMPILE_ASSERT(sizeof(VertexAttribDivisorANGLE) == 12,
   10140                Sizeof_VertexAttribDivisorANGLE_is_not_12);
   10141 COMPILE_ASSERT(offsetof(VertexAttribDivisorANGLE, header) == 0,
   10142                OffsetOf_VertexAttribDivisorANGLE_header_not_0);
   10143 COMPILE_ASSERT(offsetof(VertexAttribDivisorANGLE, index) == 4,
   10144                OffsetOf_VertexAttribDivisorANGLE_index_not_4);
   10145 COMPILE_ASSERT(offsetof(VertexAttribDivisorANGLE, divisor) == 8,
   10146                OffsetOf_VertexAttribDivisorANGLE_divisor_not_8);
   10147 
   10148 struct GenMailboxCHROMIUM {
   10149   typedef GenMailboxCHROMIUM ValueType;
   10150   static const CommandId kCmdId = kGenMailboxCHROMIUM;
   10151   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   10152 
   10153   typedef SizedResult<GLint> Result;
   10154 
   10155   static uint32 ComputeSize() {
   10156     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   10157   }
   10158 
   10159   void SetHeader() {
   10160     header.SetCmd<ValueType>();
   10161   }
   10162 
   10163   void Init(GLuint _bucket_id) {
   10164     SetHeader();
   10165     bucket_id = _bucket_id;
   10166   }
   10167 
   10168   void* Set(void* cmd, GLuint _bucket_id) {
   10169     static_cast<ValueType*>(cmd)->Init(_bucket_id);
   10170     return NextCmdAddress<ValueType>(cmd);
   10171   }
   10172 
   10173   gpu::CommandHeader header;
   10174   uint32 bucket_id;
   10175 };
   10176 
   10177 COMPILE_ASSERT(sizeof(GenMailboxCHROMIUM) == 8,
   10178                Sizeof_GenMailboxCHROMIUM_is_not_8);
   10179 COMPILE_ASSERT(offsetof(GenMailboxCHROMIUM, header) == 0,
   10180                OffsetOf_GenMailboxCHROMIUM_header_not_0);
   10181 COMPILE_ASSERT(offsetof(GenMailboxCHROMIUM, bucket_id) == 4,
   10182                OffsetOf_GenMailboxCHROMIUM_bucket_id_not_4);
   10183 
   10184 struct ProduceTextureCHROMIUM {
   10185   typedef ProduceTextureCHROMIUM ValueType;
   10186   static const CommandId kCmdId = kProduceTextureCHROMIUM;
   10187   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   10188 
   10189   static uint32 ComputeSize() {
   10190     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   10191   }
   10192 
   10193   void SetHeader() {
   10194     header.SetCmd<ValueType>();
   10195   }
   10196 
   10197   void Init(
   10198       GLenum _target, uint32 _mailbox_shm_id, uint32 _mailbox_shm_offset) {
   10199     SetHeader();
   10200     target = _target;
   10201     mailbox_shm_id = _mailbox_shm_id;
   10202     mailbox_shm_offset = _mailbox_shm_offset;
   10203   }
   10204 
   10205   void* Set(
   10206       void* cmd, GLenum _target, uint32 _mailbox_shm_id,
   10207       uint32 _mailbox_shm_offset) {
   10208     static_cast<ValueType*>(
   10209         cmd)->Init(_target, _mailbox_shm_id, _mailbox_shm_offset);
   10210     return NextCmdAddress<ValueType>(cmd);
   10211   }
   10212 
   10213   gpu::CommandHeader header;
   10214   uint32 target;
   10215   uint32 mailbox_shm_id;
   10216   uint32 mailbox_shm_offset;
   10217 };
   10218 
   10219 COMPILE_ASSERT(sizeof(ProduceTextureCHROMIUM) == 16,
   10220                Sizeof_ProduceTextureCHROMIUM_is_not_16);
   10221 COMPILE_ASSERT(offsetof(ProduceTextureCHROMIUM, header) == 0,
   10222                OffsetOf_ProduceTextureCHROMIUM_header_not_0);
   10223 COMPILE_ASSERT(offsetof(ProduceTextureCHROMIUM, target) == 4,
   10224                OffsetOf_ProduceTextureCHROMIUM_target_not_4);
   10225 COMPILE_ASSERT(offsetof(ProduceTextureCHROMIUM, mailbox_shm_id) == 8,
   10226                OffsetOf_ProduceTextureCHROMIUM_mailbox_shm_id_not_8);
   10227 COMPILE_ASSERT(offsetof(ProduceTextureCHROMIUM, mailbox_shm_offset) == 12,
   10228                OffsetOf_ProduceTextureCHROMIUM_mailbox_shm_offset_not_12);
   10229 
   10230 struct ProduceTextureCHROMIUMImmediate {
   10231   typedef ProduceTextureCHROMIUMImmediate ValueType;
   10232   static const CommandId kCmdId = kProduceTextureCHROMIUMImmediate;
   10233   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   10234 
   10235   static uint32 ComputeDataSize() {
   10236     return static_cast<uint32>(
   10237         sizeof(GLbyte) * 64);  // NOLINT
   10238   }
   10239 
   10240   static uint32 ComputeSize() {
   10241     return static_cast<uint32>(
   10242         sizeof(ValueType) + ComputeDataSize());  // NOLINT
   10243   }
   10244 
   10245   void SetHeader() {
   10246     header.SetCmdByTotalSize<ValueType>(ComputeSize());
   10247   }
   10248 
   10249   void Init(GLenum _target, const GLbyte* _mailbox) {
   10250     SetHeader();
   10251     target = _target;
   10252     memcpy(ImmediateDataAddress(this),
   10253            _mailbox, ComputeDataSize());
   10254   }
   10255 
   10256   void* Set(void* cmd, GLenum _target, const GLbyte* _mailbox) {
   10257     static_cast<ValueType*>(cmd)->Init(_target, _mailbox);
   10258     const uint32 size = ComputeSize();
   10259     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   10260   }
   10261 
   10262   gpu::CommandHeader header;
   10263   uint32 target;
   10264 };
   10265 
   10266 COMPILE_ASSERT(sizeof(ProduceTextureCHROMIUMImmediate) == 8,
   10267                Sizeof_ProduceTextureCHROMIUMImmediate_is_not_8);
   10268 COMPILE_ASSERT(offsetof(ProduceTextureCHROMIUMImmediate, header) == 0,
   10269                OffsetOf_ProduceTextureCHROMIUMImmediate_header_not_0);
   10270 COMPILE_ASSERT(offsetof(ProduceTextureCHROMIUMImmediate, target) == 4,
   10271                OffsetOf_ProduceTextureCHROMIUMImmediate_target_not_4);
   10272 
   10273 struct ConsumeTextureCHROMIUM {
   10274   typedef ConsumeTextureCHROMIUM ValueType;
   10275   static const CommandId kCmdId = kConsumeTextureCHROMIUM;
   10276   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   10277 
   10278   static uint32 ComputeSize() {
   10279     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   10280   }
   10281 
   10282   void SetHeader() {
   10283     header.SetCmd<ValueType>();
   10284   }
   10285 
   10286   void Init(
   10287       GLenum _target, uint32 _mailbox_shm_id, uint32 _mailbox_shm_offset) {
   10288     SetHeader();
   10289     target = _target;
   10290     mailbox_shm_id = _mailbox_shm_id;
   10291     mailbox_shm_offset = _mailbox_shm_offset;
   10292   }
   10293 
   10294   void* Set(
   10295       void* cmd, GLenum _target, uint32 _mailbox_shm_id,
   10296       uint32 _mailbox_shm_offset) {
   10297     static_cast<ValueType*>(
   10298         cmd)->Init(_target, _mailbox_shm_id, _mailbox_shm_offset);
   10299     return NextCmdAddress<ValueType>(cmd);
   10300   }
   10301 
   10302   gpu::CommandHeader header;
   10303   uint32 target;
   10304   uint32 mailbox_shm_id;
   10305   uint32 mailbox_shm_offset;
   10306 };
   10307 
   10308 COMPILE_ASSERT(sizeof(ConsumeTextureCHROMIUM) == 16,
   10309                Sizeof_ConsumeTextureCHROMIUM_is_not_16);
   10310 COMPILE_ASSERT(offsetof(ConsumeTextureCHROMIUM, header) == 0,
   10311                OffsetOf_ConsumeTextureCHROMIUM_header_not_0);
   10312 COMPILE_ASSERT(offsetof(ConsumeTextureCHROMIUM, target) == 4,
   10313                OffsetOf_ConsumeTextureCHROMIUM_target_not_4);
   10314 COMPILE_ASSERT(offsetof(ConsumeTextureCHROMIUM, mailbox_shm_id) == 8,
   10315                OffsetOf_ConsumeTextureCHROMIUM_mailbox_shm_id_not_8);
   10316 COMPILE_ASSERT(offsetof(ConsumeTextureCHROMIUM, mailbox_shm_offset) == 12,
   10317                OffsetOf_ConsumeTextureCHROMIUM_mailbox_shm_offset_not_12);
   10318 
   10319 struct ConsumeTextureCHROMIUMImmediate {
   10320   typedef ConsumeTextureCHROMIUMImmediate ValueType;
   10321   static const CommandId kCmdId = kConsumeTextureCHROMIUMImmediate;
   10322   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   10323 
   10324   static uint32 ComputeDataSize() {
   10325     return static_cast<uint32>(
   10326         sizeof(GLbyte) * 64);  // NOLINT
   10327   }
   10328 
   10329   static uint32 ComputeSize() {
   10330     return static_cast<uint32>(
   10331         sizeof(ValueType) + ComputeDataSize());  // NOLINT
   10332   }
   10333 
   10334   void SetHeader() {
   10335     header.SetCmdByTotalSize<ValueType>(ComputeSize());
   10336   }
   10337 
   10338   void Init(GLenum _target, const GLbyte* _mailbox) {
   10339     SetHeader();
   10340     target = _target;
   10341     memcpy(ImmediateDataAddress(this),
   10342            _mailbox, ComputeDataSize());
   10343   }
   10344 
   10345   void* Set(void* cmd, GLenum _target, const GLbyte* _mailbox) {
   10346     static_cast<ValueType*>(cmd)->Init(_target, _mailbox);
   10347     const uint32 size = ComputeSize();
   10348     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   10349   }
   10350 
   10351   gpu::CommandHeader header;
   10352   uint32 target;
   10353 };
   10354 
   10355 COMPILE_ASSERT(sizeof(ConsumeTextureCHROMIUMImmediate) == 8,
   10356                Sizeof_ConsumeTextureCHROMIUMImmediate_is_not_8);
   10357 COMPILE_ASSERT(offsetof(ConsumeTextureCHROMIUMImmediate, header) == 0,
   10358                OffsetOf_ConsumeTextureCHROMIUMImmediate_header_not_0);
   10359 COMPILE_ASSERT(offsetof(ConsumeTextureCHROMIUMImmediate, target) == 4,
   10360                OffsetOf_ConsumeTextureCHROMIUMImmediate_target_not_4);
   10361 
   10362 struct BindUniformLocationCHROMIUM {
   10363   typedef BindUniformLocationCHROMIUM ValueType;
   10364   static const CommandId kCmdId = kBindUniformLocationCHROMIUM;
   10365   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   10366 
   10367   static uint32 ComputeSize() {
   10368     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   10369   }
   10370 
   10371   void SetHeader() {
   10372     header.SetCmd<ValueType>();
   10373   }
   10374 
   10375   void Init(
   10376       GLuint _program, GLint _location, uint32 _name_shm_id,
   10377       uint32 _name_shm_offset, uint32 _data_size) {
   10378     SetHeader();
   10379     program = _program;
   10380     location = _location;
   10381     name_shm_id = _name_shm_id;
   10382     name_shm_offset = _name_shm_offset;
   10383     data_size = _data_size;
   10384   }
   10385 
   10386   void* Set(
   10387       void* cmd, GLuint _program, GLint _location, uint32 _name_shm_id,
   10388       uint32 _name_shm_offset, uint32 _data_size) {
   10389     static_cast<ValueType*>(
   10390         cmd)->Init(
   10391             _program, _location, _name_shm_id, _name_shm_offset, _data_size);
   10392     return NextCmdAddress<ValueType>(cmd);
   10393   }
   10394 
   10395   gpu::CommandHeader header;
   10396   uint32 program;
   10397   int32 location;
   10398   uint32 name_shm_id;
   10399   uint32 name_shm_offset;
   10400   uint32 data_size;
   10401 };
   10402 
   10403 COMPILE_ASSERT(sizeof(BindUniformLocationCHROMIUM) == 24,
   10404                Sizeof_BindUniformLocationCHROMIUM_is_not_24);
   10405 COMPILE_ASSERT(offsetof(BindUniformLocationCHROMIUM, header) == 0,
   10406                OffsetOf_BindUniformLocationCHROMIUM_header_not_0);
   10407 COMPILE_ASSERT(offsetof(BindUniformLocationCHROMIUM, program) == 4,
   10408                OffsetOf_BindUniformLocationCHROMIUM_program_not_4);
   10409 COMPILE_ASSERT(offsetof(BindUniformLocationCHROMIUM, location) == 8,
   10410                OffsetOf_BindUniformLocationCHROMIUM_location_not_8);
   10411 COMPILE_ASSERT(offsetof(BindUniformLocationCHROMIUM, name_shm_id) == 12,
   10412                OffsetOf_BindUniformLocationCHROMIUM_name_shm_id_not_12);
   10413 COMPILE_ASSERT(offsetof(BindUniformLocationCHROMIUM, name_shm_offset) == 16,
   10414                OffsetOf_BindUniformLocationCHROMIUM_name_shm_offset_not_16);
   10415 COMPILE_ASSERT(offsetof(BindUniformLocationCHROMIUM, data_size) == 20,
   10416                OffsetOf_BindUniformLocationCHROMIUM_data_size_not_20);
   10417 
   10418 struct BindUniformLocationCHROMIUMImmediate {
   10419   typedef BindUniformLocationCHROMIUMImmediate ValueType;
   10420   static const CommandId kCmdId = kBindUniformLocationCHROMIUMImmediate;
   10421   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   10422 
   10423   static uint32 ComputeSize(uint32 data_size) {
   10424     return static_cast<uint32>(
   10425         sizeof(ValueType) + data_size);  // NOLINT
   10426   }
   10427 
   10428   void SetHeader(uint32 data_size) {
   10429     header.SetCmdBySize<ValueType>(data_size);
   10430   }
   10431 
   10432   void Init(
   10433       GLuint _program, GLint _location, const char* _name, uint32 _data_size) {
   10434     SetHeader(_data_size);
   10435     program = _program;
   10436     location = _location;
   10437     data_size = _data_size;
   10438     memcpy(ImmediateDataAddress(this), _name, _data_size);
   10439   }
   10440 
   10441   void* Set(
   10442       void* cmd, GLuint _program, GLint _location, const char* _name,
   10443       uint32 _data_size) {
   10444     static_cast<ValueType*>(cmd)->Init(_program, _location, _name, _data_size);
   10445     return NextImmediateCmdAddress<ValueType>(cmd, _data_size);
   10446   }
   10447 
   10448   gpu::CommandHeader header;
   10449   uint32 program;
   10450   int32 location;
   10451   uint32 data_size;
   10452 };
   10453 
   10454 COMPILE_ASSERT(sizeof(BindUniformLocationCHROMIUMImmediate) == 16,
   10455                Sizeof_BindUniformLocationCHROMIUMImmediate_is_not_16);
   10456 COMPILE_ASSERT(offsetof(BindUniformLocationCHROMIUMImmediate, header) == 0,
   10457                OffsetOf_BindUniformLocationCHROMIUMImmediate_header_not_0);
   10458 COMPILE_ASSERT(offsetof(BindUniformLocationCHROMIUMImmediate, program) == 4,
   10459                OffsetOf_BindUniformLocationCHROMIUMImmediate_program_not_4);
   10460 COMPILE_ASSERT(offsetof(BindUniformLocationCHROMIUMImmediate, location) == 8,
   10461                OffsetOf_BindUniformLocationCHROMIUMImmediate_location_not_8);
   10462 COMPILE_ASSERT(offsetof(BindUniformLocationCHROMIUMImmediate, data_size) == 12,
   10463                OffsetOf_BindUniformLocationCHROMIUMImmediate_data_size_not_12);
   10464 
   10465 struct BindUniformLocationCHROMIUMBucket {
   10466   typedef BindUniformLocationCHROMIUMBucket ValueType;
   10467   static const CommandId kCmdId = kBindUniformLocationCHROMIUMBucket;
   10468   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   10469 
   10470   static uint32 ComputeSize() {
   10471     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   10472   }
   10473 
   10474   void SetHeader() {
   10475     header.SetCmd<ValueType>();
   10476   }
   10477 
   10478   void Init(GLuint _program, GLint _location, uint32 _name_bucket_id) {
   10479     SetHeader();
   10480     program = _program;
   10481     location = _location;
   10482     name_bucket_id = _name_bucket_id;
   10483   }
   10484 
   10485   void* Set(
   10486       void* cmd, GLuint _program, GLint _location, uint32 _name_bucket_id) {
   10487     static_cast<ValueType*>(cmd)->Init(_program, _location, _name_bucket_id);
   10488     return NextCmdAddress<ValueType>(cmd);
   10489   }
   10490 
   10491   gpu::CommandHeader header;
   10492   uint32 program;
   10493   int32 location;
   10494   uint32 name_bucket_id;
   10495 };
   10496 
   10497 COMPILE_ASSERT(sizeof(BindUniformLocationCHROMIUMBucket) == 16,
   10498                Sizeof_BindUniformLocationCHROMIUMBucket_is_not_16);
   10499 COMPILE_ASSERT(offsetof(BindUniformLocationCHROMIUMBucket, header) == 0,
   10500                OffsetOf_BindUniformLocationCHROMIUMBucket_header_not_0);
   10501 COMPILE_ASSERT(offsetof(BindUniformLocationCHROMIUMBucket, program) == 4,
   10502                OffsetOf_BindUniformLocationCHROMIUMBucket_program_not_4);
   10503 COMPILE_ASSERT(offsetof(BindUniformLocationCHROMIUMBucket, location) == 8,
   10504                OffsetOf_BindUniformLocationCHROMIUMBucket_location_not_8);
   10505 COMPILE_ASSERT(
   10506     offsetof(BindUniformLocationCHROMIUMBucket, name_bucket_id) == 12,
   10507                OffsetOf_BindUniformLocationCHROMIUMBucket_name_bucket_id_not_12);  // NOLINT
   10508 
   10509 struct BindTexImage2DCHROMIUM {
   10510   typedef BindTexImage2DCHROMIUM ValueType;
   10511   static const CommandId kCmdId = kBindTexImage2DCHROMIUM;
   10512   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   10513 
   10514   static uint32 ComputeSize() {
   10515     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   10516   }
   10517 
   10518   void SetHeader() {
   10519     header.SetCmd<ValueType>();
   10520   }
   10521 
   10522   void Init(GLenum _target, GLint _imageId) {
   10523     SetHeader();
   10524     target = _target;
   10525     imageId = _imageId;
   10526   }
   10527 
   10528   void* Set(void* cmd, GLenum _target, GLint _imageId) {
   10529     static_cast<ValueType*>(cmd)->Init(_target, _imageId);
   10530     return NextCmdAddress<ValueType>(cmd);
   10531   }
   10532 
   10533   gpu::CommandHeader header;
   10534   uint32 target;
   10535   int32 imageId;
   10536 };
   10537 
   10538 COMPILE_ASSERT(sizeof(BindTexImage2DCHROMIUM) == 12,
   10539                Sizeof_BindTexImage2DCHROMIUM_is_not_12);
   10540 COMPILE_ASSERT(offsetof(BindTexImage2DCHROMIUM, header) == 0,
   10541                OffsetOf_BindTexImage2DCHROMIUM_header_not_0);
   10542 COMPILE_ASSERT(offsetof(BindTexImage2DCHROMIUM, target) == 4,
   10543                OffsetOf_BindTexImage2DCHROMIUM_target_not_4);
   10544 COMPILE_ASSERT(offsetof(BindTexImage2DCHROMIUM, imageId) == 8,
   10545                OffsetOf_BindTexImage2DCHROMIUM_imageId_not_8);
   10546 
   10547 struct ReleaseTexImage2DCHROMIUM {
   10548   typedef ReleaseTexImage2DCHROMIUM ValueType;
   10549   static const CommandId kCmdId = kReleaseTexImage2DCHROMIUM;
   10550   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   10551 
   10552   static uint32 ComputeSize() {
   10553     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   10554   }
   10555 
   10556   void SetHeader() {
   10557     header.SetCmd<ValueType>();
   10558   }
   10559 
   10560   void Init(GLenum _target, GLint _imageId) {
   10561     SetHeader();
   10562     target = _target;
   10563     imageId = _imageId;
   10564   }
   10565 
   10566   void* Set(void* cmd, GLenum _target, GLint _imageId) {
   10567     static_cast<ValueType*>(cmd)->Init(_target, _imageId);
   10568     return NextCmdAddress<ValueType>(cmd);
   10569   }
   10570 
   10571   gpu::CommandHeader header;
   10572   uint32 target;
   10573   int32 imageId;
   10574 };
   10575 
   10576 COMPILE_ASSERT(sizeof(ReleaseTexImage2DCHROMIUM) == 12,
   10577                Sizeof_ReleaseTexImage2DCHROMIUM_is_not_12);
   10578 COMPILE_ASSERT(offsetof(ReleaseTexImage2DCHROMIUM, header) == 0,
   10579                OffsetOf_ReleaseTexImage2DCHROMIUM_header_not_0);
   10580 COMPILE_ASSERT(offsetof(ReleaseTexImage2DCHROMIUM, target) == 4,
   10581                OffsetOf_ReleaseTexImage2DCHROMIUM_target_not_4);
   10582 COMPILE_ASSERT(offsetof(ReleaseTexImage2DCHROMIUM, imageId) == 8,
   10583                OffsetOf_ReleaseTexImage2DCHROMIUM_imageId_not_8);
   10584 
   10585 struct TraceBeginCHROMIUM {
   10586   typedef TraceBeginCHROMIUM ValueType;
   10587   static const CommandId kCmdId = kTraceBeginCHROMIUM;
   10588   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   10589 
   10590   static uint32 ComputeSize() {
   10591     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   10592   }
   10593 
   10594   void SetHeader() {
   10595     header.SetCmd<ValueType>();
   10596   }
   10597 
   10598   void Init(GLuint _bucket_id) {
   10599     SetHeader();
   10600     bucket_id = _bucket_id;
   10601   }
   10602 
   10603   void* Set(void* cmd, GLuint _bucket_id) {
   10604     static_cast<ValueType*>(cmd)->Init(_bucket_id);
   10605     return NextCmdAddress<ValueType>(cmd);
   10606   }
   10607 
   10608   gpu::CommandHeader header;
   10609   uint32 bucket_id;
   10610 };
   10611 
   10612 COMPILE_ASSERT(sizeof(TraceBeginCHROMIUM) == 8,
   10613                Sizeof_TraceBeginCHROMIUM_is_not_8);
   10614 COMPILE_ASSERT(offsetof(TraceBeginCHROMIUM, header) == 0,
   10615                OffsetOf_TraceBeginCHROMIUM_header_not_0);
   10616 COMPILE_ASSERT(offsetof(TraceBeginCHROMIUM, bucket_id) == 4,
   10617                OffsetOf_TraceBeginCHROMIUM_bucket_id_not_4);
   10618 
   10619 struct TraceEndCHROMIUM {
   10620   typedef TraceEndCHROMIUM ValueType;
   10621   static const CommandId kCmdId = kTraceEndCHROMIUM;
   10622   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   10623 
   10624   static uint32 ComputeSize() {
   10625     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   10626   }
   10627 
   10628   void SetHeader() {
   10629     header.SetCmd<ValueType>();
   10630   }
   10631 
   10632   void Init() {
   10633     SetHeader();
   10634   }
   10635 
   10636   void* Set(void* cmd) {
   10637     static_cast<ValueType*>(cmd)->Init();
   10638     return NextCmdAddress<ValueType>(cmd);
   10639   }
   10640 
   10641   gpu::CommandHeader header;
   10642 };
   10643 
   10644 COMPILE_ASSERT(sizeof(TraceEndCHROMIUM) == 4,
   10645                Sizeof_TraceEndCHROMIUM_is_not_4);
   10646 COMPILE_ASSERT(offsetof(TraceEndCHROMIUM, header) == 0,
   10647                OffsetOf_TraceEndCHROMIUM_header_not_0);
   10648 
   10649 struct AsyncTexSubImage2DCHROMIUM {
   10650   typedef AsyncTexSubImage2DCHROMIUM ValueType;
   10651   static const CommandId kCmdId = kAsyncTexSubImage2DCHROMIUM;
   10652   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   10653 
   10654   static uint32 ComputeSize() {
   10655     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   10656   }
   10657 
   10658   void SetHeader() {
   10659     header.SetCmd<ValueType>();
   10660   }
   10661 
   10662   void Init(
   10663       GLenum _target, GLint _level, GLint _xoffset, GLint _yoffset,
   10664       GLsizei _width, GLsizei _height, GLenum _format, GLenum _type,
   10665       uint32 _data_shm_id, uint32 _data_shm_offset) {
   10666     SetHeader();
   10667     target = _target;
   10668     level = _level;
   10669     xoffset = _xoffset;
   10670     yoffset = _yoffset;
   10671     width = _width;
   10672     height = _height;
   10673     format = _format;
   10674     type = _type;
   10675     data_shm_id = _data_shm_id;
   10676     data_shm_offset = _data_shm_offset;
   10677   }
   10678 
   10679   void* Set(
   10680       void* cmd, GLenum _target, GLint _level, GLint _xoffset, GLint _yoffset,
   10681       GLsizei _width, GLsizei _height, GLenum _format, GLenum _type,
   10682       uint32 _data_shm_id, uint32 _data_shm_offset) {
   10683     static_cast<ValueType*>(
   10684         cmd)->Init(
   10685             _target, _level, _xoffset, _yoffset, _width, _height, _format,
   10686             _type, _data_shm_id, _data_shm_offset);
   10687     return NextCmdAddress<ValueType>(cmd);
   10688   }
   10689 
   10690   gpu::CommandHeader header;
   10691   uint32 target;
   10692   int32 level;
   10693   int32 xoffset;
   10694   int32 yoffset;
   10695   int32 width;
   10696   int32 height;
   10697   uint32 format;
   10698   uint32 type;
   10699   uint32 data_shm_id;
   10700   uint32 data_shm_offset;
   10701 };
   10702 
   10703 COMPILE_ASSERT(sizeof(AsyncTexSubImage2DCHROMIUM) == 44,
   10704                Sizeof_AsyncTexSubImage2DCHROMIUM_is_not_44);
   10705 COMPILE_ASSERT(offsetof(AsyncTexSubImage2DCHROMIUM, header) == 0,
   10706                OffsetOf_AsyncTexSubImage2DCHROMIUM_header_not_0);
   10707 COMPILE_ASSERT(offsetof(AsyncTexSubImage2DCHROMIUM, target) == 4,
   10708                OffsetOf_AsyncTexSubImage2DCHROMIUM_target_not_4);
   10709 COMPILE_ASSERT(offsetof(AsyncTexSubImage2DCHROMIUM, level) == 8,
   10710                OffsetOf_AsyncTexSubImage2DCHROMIUM_level_not_8);
   10711 COMPILE_ASSERT(offsetof(AsyncTexSubImage2DCHROMIUM, xoffset) == 12,
   10712                OffsetOf_AsyncTexSubImage2DCHROMIUM_xoffset_not_12);
   10713 COMPILE_ASSERT(offsetof(AsyncTexSubImage2DCHROMIUM, yoffset) == 16,
   10714                OffsetOf_AsyncTexSubImage2DCHROMIUM_yoffset_not_16);
   10715 COMPILE_ASSERT(offsetof(AsyncTexSubImage2DCHROMIUM, width) == 20,
   10716                OffsetOf_AsyncTexSubImage2DCHROMIUM_width_not_20);
   10717 COMPILE_ASSERT(offsetof(AsyncTexSubImage2DCHROMIUM, height) == 24,
   10718                OffsetOf_AsyncTexSubImage2DCHROMIUM_height_not_24);
   10719 COMPILE_ASSERT(offsetof(AsyncTexSubImage2DCHROMIUM, format) == 28,
   10720                OffsetOf_AsyncTexSubImage2DCHROMIUM_format_not_28);
   10721 COMPILE_ASSERT(offsetof(AsyncTexSubImage2DCHROMIUM, type) == 32,
   10722                OffsetOf_AsyncTexSubImage2DCHROMIUM_type_not_32);
   10723 COMPILE_ASSERT(offsetof(AsyncTexSubImage2DCHROMIUM, data_shm_id) == 36,
   10724                OffsetOf_AsyncTexSubImage2DCHROMIUM_data_shm_id_not_36);
   10725 COMPILE_ASSERT(offsetof(AsyncTexSubImage2DCHROMIUM, data_shm_offset) == 40,
   10726                OffsetOf_AsyncTexSubImage2DCHROMIUM_data_shm_offset_not_40);
   10727 
   10728 struct AsyncTexImage2DCHROMIUM {
   10729   typedef AsyncTexImage2DCHROMIUM ValueType;
   10730   static const CommandId kCmdId = kAsyncTexImage2DCHROMIUM;
   10731   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   10732 
   10733   static uint32 ComputeSize() {
   10734     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   10735   }
   10736 
   10737   void SetHeader() {
   10738     header.SetCmd<ValueType>();
   10739   }
   10740 
   10741   void Init(
   10742       GLenum _target, GLint _level, GLint _internalformat, GLsizei _width,
   10743       GLsizei _height, GLint _border, GLenum _format, GLenum _type,
   10744       uint32 _pixels_shm_id, uint32 _pixels_shm_offset) {
   10745     SetHeader();
   10746     target = _target;
   10747     level = _level;
   10748     internalformat = _internalformat;
   10749     width = _width;
   10750     height = _height;
   10751     border = _border;
   10752     format = _format;
   10753     type = _type;
   10754     pixels_shm_id = _pixels_shm_id;
   10755     pixels_shm_offset = _pixels_shm_offset;
   10756   }
   10757 
   10758   void* Set(
   10759       void* cmd, GLenum _target, GLint _level, GLint _internalformat,
   10760       GLsizei _width, GLsizei _height, GLint _border, GLenum _format,
   10761       GLenum _type, uint32 _pixels_shm_id, uint32 _pixels_shm_offset) {
   10762     static_cast<ValueType*>(
   10763         cmd)->Init(
   10764             _target, _level, _internalformat, _width, _height, _border, _format,
   10765             _type, _pixels_shm_id, _pixels_shm_offset);
   10766     return NextCmdAddress<ValueType>(cmd);
   10767   }
   10768 
   10769   gpu::CommandHeader header;
   10770   uint32 target;
   10771   int32 level;
   10772   int32 internalformat;
   10773   int32 width;
   10774   int32 height;
   10775   int32 border;
   10776   uint32 format;
   10777   uint32 type;
   10778   uint32 pixels_shm_id;
   10779   uint32 pixels_shm_offset;
   10780 };
   10781 
   10782 COMPILE_ASSERT(sizeof(AsyncTexImage2DCHROMIUM) == 44,
   10783                Sizeof_AsyncTexImage2DCHROMIUM_is_not_44);
   10784 COMPILE_ASSERT(offsetof(AsyncTexImage2DCHROMIUM, header) == 0,
   10785                OffsetOf_AsyncTexImage2DCHROMIUM_header_not_0);
   10786 COMPILE_ASSERT(offsetof(AsyncTexImage2DCHROMIUM, target) == 4,
   10787                OffsetOf_AsyncTexImage2DCHROMIUM_target_not_4);
   10788 COMPILE_ASSERT(offsetof(AsyncTexImage2DCHROMIUM, level) == 8,
   10789                OffsetOf_AsyncTexImage2DCHROMIUM_level_not_8);
   10790 COMPILE_ASSERT(offsetof(AsyncTexImage2DCHROMIUM, internalformat) == 12,
   10791                OffsetOf_AsyncTexImage2DCHROMIUM_internalformat_not_12);
   10792 COMPILE_ASSERT(offsetof(AsyncTexImage2DCHROMIUM, width) == 16,
   10793                OffsetOf_AsyncTexImage2DCHROMIUM_width_not_16);
   10794 COMPILE_ASSERT(offsetof(AsyncTexImage2DCHROMIUM, height) == 20,
   10795                OffsetOf_AsyncTexImage2DCHROMIUM_height_not_20);
   10796 COMPILE_ASSERT(offsetof(AsyncTexImage2DCHROMIUM, border) == 24,
   10797                OffsetOf_AsyncTexImage2DCHROMIUM_border_not_24);
   10798 COMPILE_ASSERT(offsetof(AsyncTexImage2DCHROMIUM, format) == 28,
   10799                OffsetOf_AsyncTexImage2DCHROMIUM_format_not_28);
   10800 COMPILE_ASSERT(offsetof(AsyncTexImage2DCHROMIUM, type) == 32,
   10801                OffsetOf_AsyncTexImage2DCHROMIUM_type_not_32);
   10802 COMPILE_ASSERT(offsetof(AsyncTexImage2DCHROMIUM, pixels_shm_id) == 36,
   10803                OffsetOf_AsyncTexImage2DCHROMIUM_pixels_shm_id_not_36);
   10804 COMPILE_ASSERT(offsetof(AsyncTexImage2DCHROMIUM, pixels_shm_offset) == 40,
   10805                OffsetOf_AsyncTexImage2DCHROMIUM_pixels_shm_offset_not_40);
   10806 
   10807 struct WaitAsyncTexImage2DCHROMIUM {
   10808   typedef WaitAsyncTexImage2DCHROMIUM ValueType;
   10809   static const CommandId kCmdId = kWaitAsyncTexImage2DCHROMIUM;
   10810   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   10811 
   10812   static uint32 ComputeSize() {
   10813     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   10814   }
   10815 
   10816   void SetHeader() {
   10817     header.SetCmd<ValueType>();
   10818   }
   10819 
   10820   void Init(GLenum _target) {
   10821     SetHeader();
   10822     target = _target;
   10823   }
   10824 
   10825   void* Set(void* cmd, GLenum _target) {
   10826     static_cast<ValueType*>(cmd)->Init(_target);
   10827     return NextCmdAddress<ValueType>(cmd);
   10828   }
   10829 
   10830   gpu::CommandHeader header;
   10831   uint32 target;
   10832 };
   10833 
   10834 COMPILE_ASSERT(sizeof(WaitAsyncTexImage2DCHROMIUM) == 8,
   10835                Sizeof_WaitAsyncTexImage2DCHROMIUM_is_not_8);
   10836 COMPILE_ASSERT(offsetof(WaitAsyncTexImage2DCHROMIUM, header) == 0,
   10837                OffsetOf_WaitAsyncTexImage2DCHROMIUM_header_not_0);
   10838 COMPILE_ASSERT(offsetof(WaitAsyncTexImage2DCHROMIUM, target) == 4,
   10839                OffsetOf_WaitAsyncTexImage2DCHROMIUM_target_not_4);
   10840 
   10841 struct DiscardFramebufferEXT {
   10842   typedef DiscardFramebufferEXT ValueType;
   10843   static const CommandId kCmdId = kDiscardFramebufferEXT;
   10844   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   10845 
   10846   static uint32 ComputeSize() {
   10847     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   10848   }
   10849 
   10850   void SetHeader() {
   10851     header.SetCmd<ValueType>();
   10852   }
   10853 
   10854   void Init(
   10855       GLenum _target, GLsizei _count, uint32 _attachments_shm_id,
   10856       uint32 _attachments_shm_offset) {
   10857     SetHeader();
   10858     target = _target;
   10859     count = _count;
   10860     attachments_shm_id = _attachments_shm_id;
   10861     attachments_shm_offset = _attachments_shm_offset;
   10862   }
   10863 
   10864   void* Set(
   10865       void* cmd, GLenum _target, GLsizei _count, uint32 _attachments_shm_id,
   10866       uint32 _attachments_shm_offset) {
   10867     static_cast<ValueType*>(
   10868         cmd)->Init(
   10869             _target, _count, _attachments_shm_id, _attachments_shm_offset);
   10870     return NextCmdAddress<ValueType>(cmd);
   10871   }
   10872 
   10873   gpu::CommandHeader header;
   10874   uint32 target;
   10875   int32 count;
   10876   uint32 attachments_shm_id;
   10877   uint32 attachments_shm_offset;
   10878 };
   10879 
   10880 COMPILE_ASSERT(sizeof(DiscardFramebufferEXT) == 20,
   10881                Sizeof_DiscardFramebufferEXT_is_not_20);
   10882 COMPILE_ASSERT(offsetof(DiscardFramebufferEXT, header) == 0,
   10883                OffsetOf_DiscardFramebufferEXT_header_not_0);
   10884 COMPILE_ASSERT(offsetof(DiscardFramebufferEXT, target) == 4,
   10885                OffsetOf_DiscardFramebufferEXT_target_not_4);
   10886 COMPILE_ASSERT(offsetof(DiscardFramebufferEXT, count) == 8,
   10887                OffsetOf_DiscardFramebufferEXT_count_not_8);
   10888 COMPILE_ASSERT(offsetof(DiscardFramebufferEXT, attachments_shm_id) == 12,
   10889                OffsetOf_DiscardFramebufferEXT_attachments_shm_id_not_12);
   10890 COMPILE_ASSERT(offsetof(DiscardFramebufferEXT, attachments_shm_offset) == 16,
   10891                OffsetOf_DiscardFramebufferEXT_attachments_shm_offset_not_16);
   10892 
   10893 struct DiscardFramebufferEXTImmediate {
   10894   typedef DiscardFramebufferEXTImmediate ValueType;
   10895   static const CommandId kCmdId = kDiscardFramebufferEXTImmediate;
   10896   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   10897 
   10898   static uint32 ComputeDataSize(GLsizei count) {
   10899     return static_cast<uint32>(
   10900         sizeof(GLenum) * 1 * count);  // NOLINT
   10901   }
   10902 
   10903   static uint32 ComputeSize(GLsizei count) {
   10904     return static_cast<uint32>(
   10905         sizeof(ValueType) + ComputeDataSize(count));  // NOLINT
   10906   }
   10907 
   10908   void SetHeader(GLsizei count) {
   10909     header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
   10910   }
   10911 
   10912   void Init(GLenum _target, GLsizei _count, const GLenum* _attachments) {
   10913     SetHeader(_count);
   10914     target = _target;
   10915     count = _count;
   10916     memcpy(ImmediateDataAddress(this),
   10917            _attachments, ComputeDataSize(_count));
   10918   }
   10919 
   10920   void* Set(
   10921       void* cmd, GLenum _target, GLsizei _count, const GLenum* _attachments) {
   10922     static_cast<ValueType*>(cmd)->Init(_target, _count, _attachments);
   10923     const uint32 size = ComputeSize(_count);
   10924     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   10925   }
   10926 
   10927   gpu::CommandHeader header;
   10928   uint32 target;
   10929   int32 count;
   10930 };
   10931 
   10932 COMPILE_ASSERT(sizeof(DiscardFramebufferEXTImmediate) == 12,
   10933                Sizeof_DiscardFramebufferEXTImmediate_is_not_12);
   10934 COMPILE_ASSERT(offsetof(DiscardFramebufferEXTImmediate, header) == 0,
   10935                OffsetOf_DiscardFramebufferEXTImmediate_header_not_0);
   10936 COMPILE_ASSERT(offsetof(DiscardFramebufferEXTImmediate, target) == 4,
   10937                OffsetOf_DiscardFramebufferEXTImmediate_target_not_4);
   10938 COMPILE_ASSERT(offsetof(DiscardFramebufferEXTImmediate, count) == 8,
   10939                OffsetOf_DiscardFramebufferEXTImmediate_count_not_8);
   10940 
   10941 struct LoseContextCHROMIUM {
   10942   typedef LoseContextCHROMIUM ValueType;
   10943   static const CommandId kCmdId = kLoseContextCHROMIUM;
   10944   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   10945 
   10946   static uint32 ComputeSize() {
   10947     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   10948   }
   10949 
   10950   void SetHeader() {
   10951     header.SetCmd<ValueType>();
   10952   }
   10953 
   10954   void Init(GLenum _current, GLenum _other) {
   10955     SetHeader();
   10956     current = _current;
   10957     other = _other;
   10958   }
   10959 
   10960   void* Set(void* cmd, GLenum _current, GLenum _other) {
   10961     static_cast<ValueType*>(cmd)->Init(_current, _other);
   10962     return NextCmdAddress<ValueType>(cmd);
   10963   }
   10964 
   10965   gpu::CommandHeader header;
   10966   uint32 current;
   10967   uint32 other;
   10968 };
   10969 
   10970 COMPILE_ASSERT(sizeof(LoseContextCHROMIUM) == 12,
   10971                Sizeof_LoseContextCHROMIUM_is_not_12);
   10972 COMPILE_ASSERT(offsetof(LoseContextCHROMIUM, header) == 0,
   10973                OffsetOf_LoseContextCHROMIUM_header_not_0);
   10974 COMPILE_ASSERT(offsetof(LoseContextCHROMIUM, current) == 4,
   10975                OffsetOf_LoseContextCHROMIUM_current_not_4);
   10976 COMPILE_ASSERT(offsetof(LoseContextCHROMIUM, other) == 8,
   10977                OffsetOf_LoseContextCHROMIUM_other_not_8);
   10978 
   10979 struct WaitSyncPointCHROMIUM {
   10980   typedef WaitSyncPointCHROMIUM ValueType;
   10981   static const CommandId kCmdId = kWaitSyncPointCHROMIUM;
   10982   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   10983 
   10984   static uint32 ComputeSize() {
   10985     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   10986   }
   10987 
   10988   void SetHeader() {
   10989     header.SetCmd<ValueType>();
   10990   }
   10991 
   10992   void Init(GLuint _sync_point) {
   10993     SetHeader();
   10994     sync_point = _sync_point;
   10995   }
   10996 
   10997   void* Set(void* cmd, GLuint _sync_point) {
   10998     static_cast<ValueType*>(cmd)->Init(_sync_point);
   10999     return NextCmdAddress<ValueType>(cmd);
   11000   }
   11001 
   11002   gpu::CommandHeader header;
   11003   uint32 sync_point;
   11004 };
   11005 
   11006 COMPILE_ASSERT(sizeof(WaitSyncPointCHROMIUM) == 8,
   11007                Sizeof_WaitSyncPointCHROMIUM_is_not_8);
   11008 COMPILE_ASSERT(offsetof(WaitSyncPointCHROMIUM, header) == 0,
   11009                OffsetOf_WaitSyncPointCHROMIUM_header_not_0);
   11010 COMPILE_ASSERT(offsetof(WaitSyncPointCHROMIUM, sync_point) == 4,
   11011                OffsetOf_WaitSyncPointCHROMIUM_sync_point_not_4);
   11012 
   11013 struct DrawBuffersEXT {
   11014   typedef DrawBuffersEXT ValueType;
   11015   static const CommandId kCmdId = kDrawBuffersEXT;
   11016   static const cmd::ArgFlags kArgFlags = cmd::kFixed;
   11017 
   11018   static uint32 ComputeSize() {
   11019     return static_cast<uint32>(sizeof(ValueType));  // NOLINT
   11020   }
   11021 
   11022   void SetHeader() {
   11023     header.SetCmd<ValueType>();
   11024   }
   11025 
   11026   void Init(GLsizei _count, uint32 _bufs_shm_id, uint32 _bufs_shm_offset) {
   11027     SetHeader();
   11028     count = _count;
   11029     bufs_shm_id = _bufs_shm_id;
   11030     bufs_shm_offset = _bufs_shm_offset;
   11031   }
   11032 
   11033   void* Set(
   11034       void* cmd, GLsizei _count, uint32 _bufs_shm_id,
   11035       uint32 _bufs_shm_offset) {
   11036     static_cast<ValueType*>(cmd)->Init(_count, _bufs_shm_id, _bufs_shm_offset);
   11037     return NextCmdAddress<ValueType>(cmd);
   11038   }
   11039 
   11040   gpu::CommandHeader header;
   11041   int32 count;
   11042   uint32 bufs_shm_id;
   11043   uint32 bufs_shm_offset;
   11044 };
   11045 
   11046 COMPILE_ASSERT(sizeof(DrawBuffersEXT) == 16,
   11047                Sizeof_DrawBuffersEXT_is_not_16);
   11048 COMPILE_ASSERT(offsetof(DrawBuffersEXT, header) == 0,
   11049                OffsetOf_DrawBuffersEXT_header_not_0);
   11050 COMPILE_ASSERT(offsetof(DrawBuffersEXT, count) == 4,
   11051                OffsetOf_DrawBuffersEXT_count_not_4);
   11052 COMPILE_ASSERT(offsetof(DrawBuffersEXT, bufs_shm_id) == 8,
   11053                OffsetOf_DrawBuffersEXT_bufs_shm_id_not_8);
   11054 COMPILE_ASSERT(offsetof(DrawBuffersEXT, bufs_shm_offset) == 12,
   11055                OffsetOf_DrawBuffersEXT_bufs_shm_offset_not_12);
   11056 
   11057 struct DrawBuffersEXTImmediate {
   11058   typedef DrawBuffersEXTImmediate ValueType;
   11059   static const CommandId kCmdId = kDrawBuffersEXTImmediate;
   11060   static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
   11061 
   11062   static uint32 ComputeDataSize(GLsizei count) {
   11063     return static_cast<uint32>(
   11064         sizeof(GLenum) * 1 * count);  // NOLINT
   11065   }
   11066 
   11067   static uint32 ComputeSize(GLsizei count) {
   11068     return static_cast<uint32>(
   11069         sizeof(ValueType) + ComputeDataSize(count));  // NOLINT
   11070   }
   11071 
   11072   void SetHeader(GLsizei count) {
   11073     header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
   11074   }
   11075 
   11076   void Init(GLsizei _count, const GLenum* _bufs) {
   11077     SetHeader(_count);
   11078     count = _count;
   11079     memcpy(ImmediateDataAddress(this),
   11080            _bufs, ComputeDataSize(_count));
   11081   }
   11082 
   11083   void* Set(void* cmd, GLsizei _count, const GLenum* _bufs) {
   11084     static_cast<ValueType*>(cmd)->Init(_count, _bufs);
   11085     const uint32 size = ComputeSize(_count);
   11086     return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
   11087   }
   11088 
   11089   gpu::CommandHeader header;
   11090   int32 count;
   11091 };
   11092 
   11093 COMPILE_ASSERT(sizeof(DrawBuffersEXTImmediate) == 8,
   11094                Sizeof_DrawBuffersEXTImmediate_is_not_8);
   11095 COMPILE_ASSERT(offsetof(DrawBuffersEXTImmediate, header) == 0,
   11096                OffsetOf_DrawBuffersEXTImmediate_header_not_0);
   11097 COMPILE_ASSERT(offsetof(DrawBuffersEXTImmediate, count) == 4,
   11098                OffsetOf_DrawBuffersEXTImmediate_count_not_4);
   11099 
   11100 
   11101 #endif  // GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_FORMAT_AUTOGEN_H_
   11102 
   11103