Home | History | Annotate | Download | only in common
      1 // Copyright 2014 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 // It's formatted by clang-format using chromium coding style:
      8 //    clang-format -i -style=chromium filename
      9 // DO NOT EDIT!
     10 
     11 // This file contains unit tests for gles2 commmands
     12 // It is included by gles2_cmd_format_test.cc
     13 
     14 #ifndef GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_FORMAT_TEST_AUTOGEN_H_
     15 #define GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_FORMAT_TEST_AUTOGEN_H_
     16 
     17 TEST_F(GLES2FormatTest, ActiveTexture) {
     18   cmds::ActiveTexture& cmd = *GetBufferAs<cmds::ActiveTexture>();
     19   void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11));
     20   EXPECT_EQ(static_cast<uint32_t>(cmds::ActiveTexture::kCmdId),
     21             cmd.header.command);
     22   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
     23   EXPECT_EQ(static_cast<GLenum>(11), cmd.texture);
     24   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
     25 }
     26 
     27 TEST_F(GLES2FormatTest, AttachShader) {
     28   cmds::AttachShader& cmd = *GetBufferAs<cmds::AttachShader>();
     29   void* next_cmd =
     30       cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLuint>(12));
     31   EXPECT_EQ(static_cast<uint32_t>(cmds::AttachShader::kCmdId),
     32             cmd.header.command);
     33   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
     34   EXPECT_EQ(static_cast<GLuint>(11), cmd.program);
     35   EXPECT_EQ(static_cast<GLuint>(12), cmd.shader);
     36   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
     37 }
     38 
     39 TEST_F(GLES2FormatTest, BindAttribLocationBucket) {
     40   cmds::BindAttribLocationBucket& cmd =
     41       *GetBufferAs<cmds::BindAttribLocationBucket>();
     42   void* next_cmd = cmd.Set(&cmd,
     43                            static_cast<GLuint>(11),
     44                            static_cast<GLuint>(12),
     45                            static_cast<uint32_t>(13));
     46   EXPECT_EQ(static_cast<uint32_t>(cmds::BindAttribLocationBucket::kCmdId),
     47             cmd.header.command);
     48   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
     49   EXPECT_EQ(static_cast<GLuint>(11), cmd.program);
     50   EXPECT_EQ(static_cast<GLuint>(12), cmd.index);
     51   EXPECT_EQ(static_cast<uint32_t>(13), cmd.name_bucket_id);
     52   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
     53 }
     54 
     55 TEST_F(GLES2FormatTest, BindBuffer) {
     56   cmds::BindBuffer& cmd = *GetBufferAs<cmds::BindBuffer>();
     57   void* next_cmd =
     58       cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLuint>(12));
     59   EXPECT_EQ(static_cast<uint32_t>(cmds::BindBuffer::kCmdId),
     60             cmd.header.command);
     61   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
     62   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
     63   EXPECT_EQ(static_cast<GLuint>(12), cmd.buffer);
     64   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
     65 }
     66 
     67 TEST_F(GLES2FormatTest, BindFramebuffer) {
     68   cmds::BindFramebuffer& cmd = *GetBufferAs<cmds::BindFramebuffer>();
     69   void* next_cmd =
     70       cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLuint>(12));
     71   EXPECT_EQ(static_cast<uint32_t>(cmds::BindFramebuffer::kCmdId),
     72             cmd.header.command);
     73   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
     74   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
     75   EXPECT_EQ(static_cast<GLuint>(12), cmd.framebuffer);
     76   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
     77 }
     78 
     79 TEST_F(GLES2FormatTest, BindRenderbuffer) {
     80   cmds::BindRenderbuffer& cmd = *GetBufferAs<cmds::BindRenderbuffer>();
     81   void* next_cmd =
     82       cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLuint>(12));
     83   EXPECT_EQ(static_cast<uint32_t>(cmds::BindRenderbuffer::kCmdId),
     84             cmd.header.command);
     85   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
     86   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
     87   EXPECT_EQ(static_cast<GLuint>(12), cmd.renderbuffer);
     88   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
     89 }
     90 
     91 TEST_F(GLES2FormatTest, BindTexture) {
     92   cmds::BindTexture& cmd = *GetBufferAs<cmds::BindTexture>();
     93   void* next_cmd =
     94       cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLuint>(12));
     95   EXPECT_EQ(static_cast<uint32_t>(cmds::BindTexture::kCmdId),
     96             cmd.header.command);
     97   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
     98   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
     99   EXPECT_EQ(static_cast<GLuint>(12), cmd.texture);
    100   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    101 }
    102 
    103 TEST_F(GLES2FormatTest, BlendColor) {
    104   cmds::BlendColor& cmd = *GetBufferAs<cmds::BlendColor>();
    105   void* next_cmd = cmd.Set(&cmd,
    106                            static_cast<GLclampf>(11),
    107                            static_cast<GLclampf>(12),
    108                            static_cast<GLclampf>(13),
    109                            static_cast<GLclampf>(14));
    110   EXPECT_EQ(static_cast<uint32_t>(cmds::BlendColor::kCmdId),
    111             cmd.header.command);
    112   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    113   EXPECT_EQ(static_cast<GLclampf>(11), cmd.red);
    114   EXPECT_EQ(static_cast<GLclampf>(12), cmd.green);
    115   EXPECT_EQ(static_cast<GLclampf>(13), cmd.blue);
    116   EXPECT_EQ(static_cast<GLclampf>(14), cmd.alpha);
    117   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    118 }
    119 
    120 TEST_F(GLES2FormatTest, BlendEquation) {
    121   cmds::BlendEquation& cmd = *GetBufferAs<cmds::BlendEquation>();
    122   void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11));
    123   EXPECT_EQ(static_cast<uint32_t>(cmds::BlendEquation::kCmdId),
    124             cmd.header.command);
    125   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    126   EXPECT_EQ(static_cast<GLenum>(11), cmd.mode);
    127   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    128 }
    129 
    130 TEST_F(GLES2FormatTest, BlendEquationSeparate) {
    131   cmds::BlendEquationSeparate& cmd =
    132       *GetBufferAs<cmds::BlendEquationSeparate>();
    133   void* next_cmd =
    134       cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12));
    135   EXPECT_EQ(static_cast<uint32_t>(cmds::BlendEquationSeparate::kCmdId),
    136             cmd.header.command);
    137   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    138   EXPECT_EQ(static_cast<GLenum>(11), cmd.modeRGB);
    139   EXPECT_EQ(static_cast<GLenum>(12), cmd.modeAlpha);
    140   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    141 }
    142 
    143 TEST_F(GLES2FormatTest, BlendFunc) {
    144   cmds::BlendFunc& cmd = *GetBufferAs<cmds::BlendFunc>();
    145   void* next_cmd =
    146       cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12));
    147   EXPECT_EQ(static_cast<uint32_t>(cmds::BlendFunc::kCmdId), cmd.header.command);
    148   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    149   EXPECT_EQ(static_cast<GLenum>(11), cmd.sfactor);
    150   EXPECT_EQ(static_cast<GLenum>(12), cmd.dfactor);
    151   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    152 }
    153 
    154 TEST_F(GLES2FormatTest, BlendFuncSeparate) {
    155   cmds::BlendFuncSeparate& cmd = *GetBufferAs<cmds::BlendFuncSeparate>();
    156   void* next_cmd = cmd.Set(&cmd,
    157                            static_cast<GLenum>(11),
    158                            static_cast<GLenum>(12),
    159                            static_cast<GLenum>(13),
    160                            static_cast<GLenum>(14));
    161   EXPECT_EQ(static_cast<uint32_t>(cmds::BlendFuncSeparate::kCmdId),
    162             cmd.header.command);
    163   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    164   EXPECT_EQ(static_cast<GLenum>(11), cmd.srcRGB);
    165   EXPECT_EQ(static_cast<GLenum>(12), cmd.dstRGB);
    166   EXPECT_EQ(static_cast<GLenum>(13), cmd.srcAlpha);
    167   EXPECT_EQ(static_cast<GLenum>(14), cmd.dstAlpha);
    168   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    169 }
    170 
    171 TEST_F(GLES2FormatTest, BufferData) {
    172   cmds::BufferData& cmd = *GetBufferAs<cmds::BufferData>();
    173   void* next_cmd = cmd.Set(&cmd,
    174                            static_cast<GLenum>(11),
    175                            static_cast<GLsizeiptr>(12),
    176                            static_cast<uint32_t>(13),
    177                            static_cast<uint32_t>(14),
    178                            static_cast<GLenum>(15));
    179   EXPECT_EQ(static_cast<uint32_t>(cmds::BufferData::kCmdId),
    180             cmd.header.command);
    181   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    182   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
    183   EXPECT_EQ(static_cast<GLsizeiptr>(12), cmd.size);
    184   EXPECT_EQ(static_cast<uint32_t>(13), cmd.data_shm_id);
    185   EXPECT_EQ(static_cast<uint32_t>(14), cmd.data_shm_offset);
    186   EXPECT_EQ(static_cast<GLenum>(15), cmd.usage);
    187   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    188 }
    189 
    190 TEST_F(GLES2FormatTest, BufferSubData) {
    191   cmds::BufferSubData& cmd = *GetBufferAs<cmds::BufferSubData>();
    192   void* next_cmd = cmd.Set(&cmd,
    193                            static_cast<GLenum>(11),
    194                            static_cast<GLintptr>(12),
    195                            static_cast<GLsizeiptr>(13),
    196                            static_cast<uint32_t>(14),
    197                            static_cast<uint32_t>(15));
    198   EXPECT_EQ(static_cast<uint32_t>(cmds::BufferSubData::kCmdId),
    199             cmd.header.command);
    200   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    201   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
    202   EXPECT_EQ(static_cast<GLintptr>(12), cmd.offset);
    203   EXPECT_EQ(static_cast<GLsizeiptr>(13), cmd.size);
    204   EXPECT_EQ(static_cast<uint32_t>(14), cmd.data_shm_id);
    205   EXPECT_EQ(static_cast<uint32_t>(15), cmd.data_shm_offset);
    206   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    207 }
    208 
    209 TEST_F(GLES2FormatTest, CheckFramebufferStatus) {
    210   cmds::CheckFramebufferStatus& cmd =
    211       *GetBufferAs<cmds::CheckFramebufferStatus>();
    212   void* next_cmd = cmd.Set(&cmd,
    213                            static_cast<GLenum>(11),
    214                            static_cast<uint32_t>(12),
    215                            static_cast<uint32_t>(13));
    216   EXPECT_EQ(static_cast<uint32_t>(cmds::CheckFramebufferStatus::kCmdId),
    217             cmd.header.command);
    218   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    219   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
    220   EXPECT_EQ(static_cast<uint32_t>(12), cmd.result_shm_id);
    221   EXPECT_EQ(static_cast<uint32_t>(13), cmd.result_shm_offset);
    222   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    223 }
    224 
    225 TEST_F(GLES2FormatTest, Clear) {
    226   cmds::Clear& cmd = *GetBufferAs<cmds::Clear>();
    227   void* next_cmd = cmd.Set(&cmd, static_cast<GLbitfield>(11));
    228   EXPECT_EQ(static_cast<uint32_t>(cmds::Clear::kCmdId), cmd.header.command);
    229   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    230   EXPECT_EQ(static_cast<GLbitfield>(11), cmd.mask);
    231   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    232 }
    233 
    234 TEST_F(GLES2FormatTest, ClearColor) {
    235   cmds::ClearColor& cmd = *GetBufferAs<cmds::ClearColor>();
    236   void* next_cmd = cmd.Set(&cmd,
    237                            static_cast<GLclampf>(11),
    238                            static_cast<GLclampf>(12),
    239                            static_cast<GLclampf>(13),
    240                            static_cast<GLclampf>(14));
    241   EXPECT_EQ(static_cast<uint32_t>(cmds::ClearColor::kCmdId),
    242             cmd.header.command);
    243   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    244   EXPECT_EQ(static_cast<GLclampf>(11), cmd.red);
    245   EXPECT_EQ(static_cast<GLclampf>(12), cmd.green);
    246   EXPECT_EQ(static_cast<GLclampf>(13), cmd.blue);
    247   EXPECT_EQ(static_cast<GLclampf>(14), cmd.alpha);
    248   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    249 }
    250 
    251 TEST_F(GLES2FormatTest, ClearDepthf) {
    252   cmds::ClearDepthf& cmd = *GetBufferAs<cmds::ClearDepthf>();
    253   void* next_cmd = cmd.Set(&cmd, static_cast<GLclampf>(11));
    254   EXPECT_EQ(static_cast<uint32_t>(cmds::ClearDepthf::kCmdId),
    255             cmd.header.command);
    256   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    257   EXPECT_EQ(static_cast<GLclampf>(11), cmd.depth);
    258   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    259 }
    260 
    261 TEST_F(GLES2FormatTest, ClearStencil) {
    262   cmds::ClearStencil& cmd = *GetBufferAs<cmds::ClearStencil>();
    263   void* next_cmd = cmd.Set(&cmd, static_cast<GLint>(11));
    264   EXPECT_EQ(static_cast<uint32_t>(cmds::ClearStencil::kCmdId),
    265             cmd.header.command);
    266   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    267   EXPECT_EQ(static_cast<GLint>(11), cmd.s);
    268   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    269 }
    270 
    271 TEST_F(GLES2FormatTest, ColorMask) {
    272   cmds::ColorMask& cmd = *GetBufferAs<cmds::ColorMask>();
    273   void* next_cmd = cmd.Set(&cmd,
    274                            static_cast<GLboolean>(11),
    275                            static_cast<GLboolean>(12),
    276                            static_cast<GLboolean>(13),
    277                            static_cast<GLboolean>(14));
    278   EXPECT_EQ(static_cast<uint32_t>(cmds::ColorMask::kCmdId), cmd.header.command);
    279   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    280   EXPECT_EQ(static_cast<GLboolean>(11), cmd.red);
    281   EXPECT_EQ(static_cast<GLboolean>(12), cmd.green);
    282   EXPECT_EQ(static_cast<GLboolean>(13), cmd.blue);
    283   EXPECT_EQ(static_cast<GLboolean>(14), cmd.alpha);
    284   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    285 }
    286 
    287 TEST_F(GLES2FormatTest, CompileShader) {
    288   cmds::CompileShader& cmd = *GetBufferAs<cmds::CompileShader>();
    289   void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11));
    290   EXPECT_EQ(static_cast<uint32_t>(cmds::CompileShader::kCmdId),
    291             cmd.header.command);
    292   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    293   EXPECT_EQ(static_cast<GLuint>(11), cmd.shader);
    294   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    295 }
    296 
    297 TEST_F(GLES2FormatTest, CompressedTexImage2DBucket) {
    298   cmds::CompressedTexImage2DBucket& cmd =
    299       *GetBufferAs<cmds::CompressedTexImage2DBucket>();
    300   void* next_cmd = cmd.Set(&cmd,
    301                            static_cast<GLenum>(11),
    302                            static_cast<GLint>(12),
    303                            static_cast<GLenum>(13),
    304                            static_cast<GLsizei>(14),
    305                            static_cast<GLsizei>(15),
    306                            static_cast<GLuint>(16));
    307   EXPECT_EQ(static_cast<uint32_t>(cmds::CompressedTexImage2DBucket::kCmdId),
    308             cmd.header.command);
    309   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    310   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
    311   EXPECT_EQ(static_cast<GLint>(12), cmd.level);
    312   EXPECT_EQ(static_cast<GLenum>(13), cmd.internalformat);
    313   EXPECT_EQ(static_cast<GLsizei>(14), cmd.width);
    314   EXPECT_EQ(static_cast<GLsizei>(15), cmd.height);
    315   EXPECT_EQ(static_cast<GLuint>(16), cmd.bucket_id);
    316   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    317 }
    318 
    319 TEST_F(GLES2FormatTest, CompressedTexImage2D) {
    320   cmds::CompressedTexImage2D& cmd = *GetBufferAs<cmds::CompressedTexImage2D>();
    321   void* next_cmd = cmd.Set(&cmd,
    322                            static_cast<GLenum>(11),
    323                            static_cast<GLint>(12),
    324                            static_cast<GLenum>(13),
    325                            static_cast<GLsizei>(14),
    326                            static_cast<GLsizei>(15),
    327                            static_cast<GLsizei>(16),
    328                            static_cast<uint32_t>(17),
    329                            static_cast<uint32_t>(18));
    330   EXPECT_EQ(static_cast<uint32_t>(cmds::CompressedTexImage2D::kCmdId),
    331             cmd.header.command);
    332   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    333   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
    334   EXPECT_EQ(static_cast<GLint>(12), cmd.level);
    335   EXPECT_EQ(static_cast<GLenum>(13), cmd.internalformat);
    336   EXPECT_EQ(static_cast<GLsizei>(14), cmd.width);
    337   EXPECT_EQ(static_cast<GLsizei>(15), cmd.height);
    338   EXPECT_EQ(static_cast<GLsizei>(16), cmd.imageSize);
    339   EXPECT_EQ(static_cast<uint32_t>(17), cmd.data_shm_id);
    340   EXPECT_EQ(static_cast<uint32_t>(18), cmd.data_shm_offset);
    341   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    342 }
    343 
    344 TEST_F(GLES2FormatTest, CompressedTexSubImage2DBucket) {
    345   cmds::CompressedTexSubImage2DBucket& cmd =
    346       *GetBufferAs<cmds::CompressedTexSubImage2DBucket>();
    347   void* next_cmd = cmd.Set(&cmd,
    348                            static_cast<GLenum>(11),
    349                            static_cast<GLint>(12),
    350                            static_cast<GLint>(13),
    351                            static_cast<GLint>(14),
    352                            static_cast<GLsizei>(15),
    353                            static_cast<GLsizei>(16),
    354                            static_cast<GLenum>(17),
    355                            static_cast<GLuint>(18));
    356   EXPECT_EQ(static_cast<uint32_t>(cmds::CompressedTexSubImage2DBucket::kCmdId),
    357             cmd.header.command);
    358   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    359   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
    360   EXPECT_EQ(static_cast<GLint>(12), cmd.level);
    361   EXPECT_EQ(static_cast<GLint>(13), cmd.xoffset);
    362   EXPECT_EQ(static_cast<GLint>(14), cmd.yoffset);
    363   EXPECT_EQ(static_cast<GLsizei>(15), cmd.width);
    364   EXPECT_EQ(static_cast<GLsizei>(16), cmd.height);
    365   EXPECT_EQ(static_cast<GLenum>(17), cmd.format);
    366   EXPECT_EQ(static_cast<GLuint>(18), cmd.bucket_id);
    367   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    368 }
    369 
    370 TEST_F(GLES2FormatTest, CompressedTexSubImage2D) {
    371   cmds::CompressedTexSubImage2D& cmd =
    372       *GetBufferAs<cmds::CompressedTexSubImage2D>();
    373   void* next_cmd = cmd.Set(&cmd,
    374                            static_cast<GLenum>(11),
    375                            static_cast<GLint>(12),
    376                            static_cast<GLint>(13),
    377                            static_cast<GLint>(14),
    378                            static_cast<GLsizei>(15),
    379                            static_cast<GLsizei>(16),
    380                            static_cast<GLenum>(17),
    381                            static_cast<GLsizei>(18),
    382                            static_cast<uint32_t>(19),
    383                            static_cast<uint32_t>(20));
    384   EXPECT_EQ(static_cast<uint32_t>(cmds::CompressedTexSubImage2D::kCmdId),
    385             cmd.header.command);
    386   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    387   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
    388   EXPECT_EQ(static_cast<GLint>(12), cmd.level);
    389   EXPECT_EQ(static_cast<GLint>(13), cmd.xoffset);
    390   EXPECT_EQ(static_cast<GLint>(14), cmd.yoffset);
    391   EXPECT_EQ(static_cast<GLsizei>(15), cmd.width);
    392   EXPECT_EQ(static_cast<GLsizei>(16), cmd.height);
    393   EXPECT_EQ(static_cast<GLenum>(17), cmd.format);
    394   EXPECT_EQ(static_cast<GLsizei>(18), cmd.imageSize);
    395   EXPECT_EQ(static_cast<uint32_t>(19), cmd.data_shm_id);
    396   EXPECT_EQ(static_cast<uint32_t>(20), cmd.data_shm_offset);
    397   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    398 }
    399 
    400 TEST_F(GLES2FormatTest, CopyTexImage2D) {
    401   cmds::CopyTexImage2D& cmd = *GetBufferAs<cmds::CopyTexImage2D>();
    402   void* next_cmd = cmd.Set(&cmd,
    403                            static_cast<GLenum>(11),
    404                            static_cast<GLint>(12),
    405                            static_cast<GLenum>(13),
    406                            static_cast<GLint>(14),
    407                            static_cast<GLint>(15),
    408                            static_cast<GLsizei>(16),
    409                            static_cast<GLsizei>(17));
    410   EXPECT_EQ(static_cast<uint32_t>(cmds::CopyTexImage2D::kCmdId),
    411             cmd.header.command);
    412   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    413   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
    414   EXPECT_EQ(static_cast<GLint>(12), cmd.level);
    415   EXPECT_EQ(static_cast<GLenum>(13), cmd.internalformat);
    416   EXPECT_EQ(static_cast<GLint>(14), cmd.x);
    417   EXPECT_EQ(static_cast<GLint>(15), cmd.y);
    418   EXPECT_EQ(static_cast<GLsizei>(16), cmd.width);
    419   EXPECT_EQ(static_cast<GLsizei>(17), cmd.height);
    420   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    421 }
    422 
    423 TEST_F(GLES2FormatTest, CopyTexSubImage2D) {
    424   cmds::CopyTexSubImage2D& cmd = *GetBufferAs<cmds::CopyTexSubImage2D>();
    425   void* next_cmd = cmd.Set(&cmd,
    426                            static_cast<GLenum>(11),
    427                            static_cast<GLint>(12),
    428                            static_cast<GLint>(13),
    429                            static_cast<GLint>(14),
    430                            static_cast<GLint>(15),
    431                            static_cast<GLint>(16),
    432                            static_cast<GLsizei>(17),
    433                            static_cast<GLsizei>(18));
    434   EXPECT_EQ(static_cast<uint32_t>(cmds::CopyTexSubImage2D::kCmdId),
    435             cmd.header.command);
    436   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    437   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
    438   EXPECT_EQ(static_cast<GLint>(12), cmd.level);
    439   EXPECT_EQ(static_cast<GLint>(13), cmd.xoffset);
    440   EXPECT_EQ(static_cast<GLint>(14), cmd.yoffset);
    441   EXPECT_EQ(static_cast<GLint>(15), cmd.x);
    442   EXPECT_EQ(static_cast<GLint>(16), cmd.y);
    443   EXPECT_EQ(static_cast<GLsizei>(17), cmd.width);
    444   EXPECT_EQ(static_cast<GLsizei>(18), cmd.height);
    445   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    446 }
    447 
    448 TEST_F(GLES2FormatTest, CreateProgram) {
    449   cmds::CreateProgram& cmd = *GetBufferAs<cmds::CreateProgram>();
    450   void* next_cmd = cmd.Set(&cmd, static_cast<uint32_t>(11));
    451   EXPECT_EQ(static_cast<uint32_t>(cmds::CreateProgram::kCmdId),
    452             cmd.header.command);
    453   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    454   EXPECT_EQ(static_cast<uint32_t>(11), cmd.client_id);
    455   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    456 }
    457 
    458 TEST_F(GLES2FormatTest, CreateShader) {
    459   cmds::CreateShader& cmd = *GetBufferAs<cmds::CreateShader>();
    460   void* next_cmd =
    461       cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<uint32_t>(12));
    462   EXPECT_EQ(static_cast<uint32_t>(cmds::CreateShader::kCmdId),
    463             cmd.header.command);
    464   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    465   EXPECT_EQ(static_cast<GLenum>(11), cmd.type);
    466   EXPECT_EQ(static_cast<uint32_t>(12), cmd.client_id);
    467   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    468 }
    469 
    470 TEST_F(GLES2FormatTest, CullFace) {
    471   cmds::CullFace& cmd = *GetBufferAs<cmds::CullFace>();
    472   void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11));
    473   EXPECT_EQ(static_cast<uint32_t>(cmds::CullFace::kCmdId), cmd.header.command);
    474   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    475   EXPECT_EQ(static_cast<GLenum>(11), cmd.mode);
    476   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    477 }
    478 
    479 TEST_F(GLES2FormatTest, DeleteBuffersImmediate) {
    480   static GLuint ids[] = {
    481       12, 23, 34,
    482   };
    483   cmds::DeleteBuffersImmediate& cmd =
    484       *GetBufferAs<cmds::DeleteBuffersImmediate>();
    485   void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
    486   EXPECT_EQ(static_cast<uint32_t>(cmds::DeleteBuffersImmediate::kCmdId),
    487             cmd.header.command);
    488   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
    489             cmd.header.size * 4u);
    490   EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
    491   CheckBytesWrittenMatchesExpectedSize(
    492       next_cmd,
    493       sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
    494   // TODO(gman): Check that ids were inserted;
    495 }
    496 
    497 TEST_F(GLES2FormatTest, DeleteFramebuffersImmediate) {
    498   static GLuint ids[] = {
    499       12, 23, 34,
    500   };
    501   cmds::DeleteFramebuffersImmediate& cmd =
    502       *GetBufferAs<cmds::DeleteFramebuffersImmediate>();
    503   void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
    504   EXPECT_EQ(static_cast<uint32_t>(cmds::DeleteFramebuffersImmediate::kCmdId),
    505             cmd.header.command);
    506   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
    507             cmd.header.size * 4u);
    508   EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
    509   CheckBytesWrittenMatchesExpectedSize(
    510       next_cmd,
    511       sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
    512   // TODO(gman): Check that ids were inserted;
    513 }
    514 
    515 TEST_F(GLES2FormatTest, DeleteProgram) {
    516   cmds::DeleteProgram& cmd = *GetBufferAs<cmds::DeleteProgram>();
    517   void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11));
    518   EXPECT_EQ(static_cast<uint32_t>(cmds::DeleteProgram::kCmdId),
    519             cmd.header.command);
    520   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    521   EXPECT_EQ(static_cast<GLuint>(11), cmd.program);
    522   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    523 }
    524 
    525 TEST_F(GLES2FormatTest, DeleteRenderbuffersImmediate) {
    526   static GLuint ids[] = {
    527       12, 23, 34,
    528   };
    529   cmds::DeleteRenderbuffersImmediate& cmd =
    530       *GetBufferAs<cmds::DeleteRenderbuffersImmediate>();
    531   void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
    532   EXPECT_EQ(static_cast<uint32_t>(cmds::DeleteRenderbuffersImmediate::kCmdId),
    533             cmd.header.command);
    534   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
    535             cmd.header.size * 4u);
    536   EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
    537   CheckBytesWrittenMatchesExpectedSize(
    538       next_cmd,
    539       sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
    540   // TODO(gman): Check that ids were inserted;
    541 }
    542 
    543 TEST_F(GLES2FormatTest, DeleteShader) {
    544   cmds::DeleteShader& cmd = *GetBufferAs<cmds::DeleteShader>();
    545   void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11));
    546   EXPECT_EQ(static_cast<uint32_t>(cmds::DeleteShader::kCmdId),
    547             cmd.header.command);
    548   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    549   EXPECT_EQ(static_cast<GLuint>(11), cmd.shader);
    550   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    551 }
    552 
    553 TEST_F(GLES2FormatTest, DeleteTexturesImmediate) {
    554   static GLuint ids[] = {
    555       12, 23, 34,
    556   };
    557   cmds::DeleteTexturesImmediate& cmd =
    558       *GetBufferAs<cmds::DeleteTexturesImmediate>();
    559   void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
    560   EXPECT_EQ(static_cast<uint32_t>(cmds::DeleteTexturesImmediate::kCmdId),
    561             cmd.header.command);
    562   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
    563             cmd.header.size * 4u);
    564   EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
    565   CheckBytesWrittenMatchesExpectedSize(
    566       next_cmd,
    567       sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
    568   // TODO(gman): Check that ids were inserted;
    569 }
    570 
    571 TEST_F(GLES2FormatTest, DepthFunc) {
    572   cmds::DepthFunc& cmd = *GetBufferAs<cmds::DepthFunc>();
    573   void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11));
    574   EXPECT_EQ(static_cast<uint32_t>(cmds::DepthFunc::kCmdId), cmd.header.command);
    575   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    576   EXPECT_EQ(static_cast<GLenum>(11), cmd.func);
    577   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    578 }
    579 
    580 TEST_F(GLES2FormatTest, DepthMask) {
    581   cmds::DepthMask& cmd = *GetBufferAs<cmds::DepthMask>();
    582   void* next_cmd = cmd.Set(&cmd, static_cast<GLboolean>(11));
    583   EXPECT_EQ(static_cast<uint32_t>(cmds::DepthMask::kCmdId), cmd.header.command);
    584   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    585   EXPECT_EQ(static_cast<GLboolean>(11), cmd.flag);
    586   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    587 }
    588 
    589 TEST_F(GLES2FormatTest, DepthRangef) {
    590   cmds::DepthRangef& cmd = *GetBufferAs<cmds::DepthRangef>();
    591   void* next_cmd =
    592       cmd.Set(&cmd, static_cast<GLclampf>(11), static_cast<GLclampf>(12));
    593   EXPECT_EQ(static_cast<uint32_t>(cmds::DepthRangef::kCmdId),
    594             cmd.header.command);
    595   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    596   EXPECT_EQ(static_cast<GLclampf>(11), cmd.zNear);
    597   EXPECT_EQ(static_cast<GLclampf>(12), cmd.zFar);
    598   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    599 }
    600 
    601 TEST_F(GLES2FormatTest, DetachShader) {
    602   cmds::DetachShader& cmd = *GetBufferAs<cmds::DetachShader>();
    603   void* next_cmd =
    604       cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLuint>(12));
    605   EXPECT_EQ(static_cast<uint32_t>(cmds::DetachShader::kCmdId),
    606             cmd.header.command);
    607   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    608   EXPECT_EQ(static_cast<GLuint>(11), cmd.program);
    609   EXPECT_EQ(static_cast<GLuint>(12), cmd.shader);
    610   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    611 }
    612 
    613 TEST_F(GLES2FormatTest, Disable) {
    614   cmds::Disable& cmd = *GetBufferAs<cmds::Disable>();
    615   void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11));
    616   EXPECT_EQ(static_cast<uint32_t>(cmds::Disable::kCmdId), cmd.header.command);
    617   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    618   EXPECT_EQ(static_cast<GLenum>(11), cmd.cap);
    619   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    620 }
    621 
    622 TEST_F(GLES2FormatTest, DisableVertexAttribArray) {
    623   cmds::DisableVertexAttribArray& cmd =
    624       *GetBufferAs<cmds::DisableVertexAttribArray>();
    625   void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11));
    626   EXPECT_EQ(static_cast<uint32_t>(cmds::DisableVertexAttribArray::kCmdId),
    627             cmd.header.command);
    628   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    629   EXPECT_EQ(static_cast<GLuint>(11), cmd.index);
    630   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    631 }
    632 
    633 TEST_F(GLES2FormatTest, DrawArrays) {
    634   cmds::DrawArrays& cmd = *GetBufferAs<cmds::DrawArrays>();
    635   void* next_cmd = cmd.Set(&cmd,
    636                            static_cast<GLenum>(11),
    637                            static_cast<GLint>(12),
    638                            static_cast<GLsizei>(13));
    639   EXPECT_EQ(static_cast<uint32_t>(cmds::DrawArrays::kCmdId),
    640             cmd.header.command);
    641   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    642   EXPECT_EQ(static_cast<GLenum>(11), cmd.mode);
    643   EXPECT_EQ(static_cast<GLint>(12), cmd.first);
    644   EXPECT_EQ(static_cast<GLsizei>(13), cmd.count);
    645   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    646 }
    647 
    648 TEST_F(GLES2FormatTest, DrawElements) {
    649   cmds::DrawElements& cmd = *GetBufferAs<cmds::DrawElements>();
    650   void* next_cmd = cmd.Set(&cmd,
    651                            static_cast<GLenum>(11),
    652                            static_cast<GLsizei>(12),
    653                            static_cast<GLenum>(13),
    654                            static_cast<GLuint>(14));
    655   EXPECT_EQ(static_cast<uint32_t>(cmds::DrawElements::kCmdId),
    656             cmd.header.command);
    657   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    658   EXPECT_EQ(static_cast<GLenum>(11), cmd.mode);
    659   EXPECT_EQ(static_cast<GLsizei>(12), cmd.count);
    660   EXPECT_EQ(static_cast<GLenum>(13), cmd.type);
    661   EXPECT_EQ(static_cast<GLuint>(14), cmd.index_offset);
    662   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    663 }
    664 
    665 TEST_F(GLES2FormatTest, Enable) {
    666   cmds::Enable& cmd = *GetBufferAs<cmds::Enable>();
    667   void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11));
    668   EXPECT_EQ(static_cast<uint32_t>(cmds::Enable::kCmdId), cmd.header.command);
    669   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    670   EXPECT_EQ(static_cast<GLenum>(11), cmd.cap);
    671   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    672 }
    673 
    674 TEST_F(GLES2FormatTest, EnableVertexAttribArray) {
    675   cmds::EnableVertexAttribArray& cmd =
    676       *GetBufferAs<cmds::EnableVertexAttribArray>();
    677   void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11));
    678   EXPECT_EQ(static_cast<uint32_t>(cmds::EnableVertexAttribArray::kCmdId),
    679             cmd.header.command);
    680   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    681   EXPECT_EQ(static_cast<GLuint>(11), cmd.index);
    682   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    683 }
    684 
    685 TEST_F(GLES2FormatTest, Finish) {
    686   cmds::Finish& cmd = *GetBufferAs<cmds::Finish>();
    687   void* next_cmd = cmd.Set(&cmd);
    688   EXPECT_EQ(static_cast<uint32_t>(cmds::Finish::kCmdId), cmd.header.command);
    689   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    690   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    691 }
    692 
    693 TEST_F(GLES2FormatTest, Flush) {
    694   cmds::Flush& cmd = *GetBufferAs<cmds::Flush>();
    695   void* next_cmd = cmd.Set(&cmd);
    696   EXPECT_EQ(static_cast<uint32_t>(cmds::Flush::kCmdId), cmd.header.command);
    697   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    698   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    699 }
    700 
    701 TEST_F(GLES2FormatTest, FramebufferRenderbuffer) {
    702   cmds::FramebufferRenderbuffer& cmd =
    703       *GetBufferAs<cmds::FramebufferRenderbuffer>();
    704   void* next_cmd = cmd.Set(&cmd,
    705                            static_cast<GLenum>(11),
    706                            static_cast<GLenum>(12),
    707                            static_cast<GLenum>(13),
    708                            static_cast<GLuint>(14));
    709   EXPECT_EQ(static_cast<uint32_t>(cmds::FramebufferRenderbuffer::kCmdId),
    710             cmd.header.command);
    711   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    712   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
    713   EXPECT_EQ(static_cast<GLenum>(12), cmd.attachment);
    714   EXPECT_EQ(static_cast<GLenum>(13), cmd.renderbuffertarget);
    715   EXPECT_EQ(static_cast<GLuint>(14), cmd.renderbuffer);
    716   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    717 }
    718 
    719 TEST_F(GLES2FormatTest, FramebufferTexture2D) {
    720   cmds::FramebufferTexture2D& cmd = *GetBufferAs<cmds::FramebufferTexture2D>();
    721   void* next_cmd = cmd.Set(&cmd,
    722                            static_cast<GLenum>(11),
    723                            static_cast<GLenum>(12),
    724                            static_cast<GLenum>(13),
    725                            static_cast<GLuint>(14));
    726   EXPECT_EQ(static_cast<uint32_t>(cmds::FramebufferTexture2D::kCmdId),
    727             cmd.header.command);
    728   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    729   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
    730   EXPECT_EQ(static_cast<GLenum>(12), cmd.attachment);
    731   EXPECT_EQ(static_cast<GLenum>(13), cmd.textarget);
    732   EXPECT_EQ(static_cast<GLuint>(14), cmd.texture);
    733   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    734 }
    735 
    736 TEST_F(GLES2FormatTest, FrontFace) {
    737   cmds::FrontFace& cmd = *GetBufferAs<cmds::FrontFace>();
    738   void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11));
    739   EXPECT_EQ(static_cast<uint32_t>(cmds::FrontFace::kCmdId), cmd.header.command);
    740   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    741   EXPECT_EQ(static_cast<GLenum>(11), cmd.mode);
    742   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    743 }
    744 
    745 TEST_F(GLES2FormatTest, GenBuffersImmediate) {
    746   static GLuint ids[] = {
    747       12, 23, 34,
    748   };
    749   cmds::GenBuffersImmediate& cmd = *GetBufferAs<cmds::GenBuffersImmediate>();
    750   void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
    751   EXPECT_EQ(static_cast<uint32_t>(cmds::GenBuffersImmediate::kCmdId),
    752             cmd.header.command);
    753   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
    754             cmd.header.size * 4u);
    755   EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
    756   CheckBytesWrittenMatchesExpectedSize(
    757       next_cmd,
    758       sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
    759   // TODO(gman): Check that ids were inserted;
    760 }
    761 
    762 TEST_F(GLES2FormatTest, GenerateMipmap) {
    763   cmds::GenerateMipmap& cmd = *GetBufferAs<cmds::GenerateMipmap>();
    764   void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11));
    765   EXPECT_EQ(static_cast<uint32_t>(cmds::GenerateMipmap::kCmdId),
    766             cmd.header.command);
    767   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    768   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
    769   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    770 }
    771 
    772 TEST_F(GLES2FormatTest, GenFramebuffersImmediate) {
    773   static GLuint ids[] = {
    774       12, 23, 34,
    775   };
    776   cmds::GenFramebuffersImmediate& cmd =
    777       *GetBufferAs<cmds::GenFramebuffersImmediate>();
    778   void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
    779   EXPECT_EQ(static_cast<uint32_t>(cmds::GenFramebuffersImmediate::kCmdId),
    780             cmd.header.command);
    781   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
    782             cmd.header.size * 4u);
    783   EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
    784   CheckBytesWrittenMatchesExpectedSize(
    785       next_cmd,
    786       sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
    787   // TODO(gman): Check that ids were inserted;
    788 }
    789 
    790 TEST_F(GLES2FormatTest, GenRenderbuffersImmediate) {
    791   static GLuint ids[] = {
    792       12, 23, 34,
    793   };
    794   cmds::GenRenderbuffersImmediate& cmd =
    795       *GetBufferAs<cmds::GenRenderbuffersImmediate>();
    796   void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
    797   EXPECT_EQ(static_cast<uint32_t>(cmds::GenRenderbuffersImmediate::kCmdId),
    798             cmd.header.command);
    799   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
    800             cmd.header.size * 4u);
    801   EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
    802   CheckBytesWrittenMatchesExpectedSize(
    803       next_cmd,
    804       sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
    805   // TODO(gman): Check that ids were inserted;
    806 }
    807 
    808 TEST_F(GLES2FormatTest, GenTexturesImmediate) {
    809   static GLuint ids[] = {
    810       12, 23, 34,
    811   };
    812   cmds::GenTexturesImmediate& cmd = *GetBufferAs<cmds::GenTexturesImmediate>();
    813   void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
    814   EXPECT_EQ(static_cast<uint32_t>(cmds::GenTexturesImmediate::kCmdId),
    815             cmd.header.command);
    816   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
    817             cmd.header.size * 4u);
    818   EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
    819   CheckBytesWrittenMatchesExpectedSize(
    820       next_cmd,
    821       sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
    822   // TODO(gman): Check that ids were inserted;
    823 }
    824 
    825 TEST_F(GLES2FormatTest, GetActiveAttrib) {
    826   cmds::GetActiveAttrib& cmd = *GetBufferAs<cmds::GetActiveAttrib>();
    827   void* next_cmd = cmd.Set(&cmd,
    828                            static_cast<GLuint>(11),
    829                            static_cast<GLuint>(12),
    830                            static_cast<uint32_t>(13),
    831                            static_cast<uint32_t>(14),
    832                            static_cast<uint32_t>(15));
    833   EXPECT_EQ(static_cast<uint32_t>(cmds::GetActiveAttrib::kCmdId),
    834             cmd.header.command);
    835   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    836   EXPECT_EQ(static_cast<GLuint>(11), cmd.program);
    837   EXPECT_EQ(static_cast<GLuint>(12), cmd.index);
    838   EXPECT_EQ(static_cast<uint32_t>(13), cmd.name_bucket_id);
    839   EXPECT_EQ(static_cast<uint32_t>(14), cmd.result_shm_id);
    840   EXPECT_EQ(static_cast<uint32_t>(15), cmd.result_shm_offset);
    841   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    842 }
    843 
    844 TEST_F(GLES2FormatTest, GetActiveUniform) {
    845   cmds::GetActiveUniform& cmd = *GetBufferAs<cmds::GetActiveUniform>();
    846   void* next_cmd = cmd.Set(&cmd,
    847                            static_cast<GLuint>(11),
    848                            static_cast<GLuint>(12),
    849                            static_cast<uint32_t>(13),
    850                            static_cast<uint32_t>(14),
    851                            static_cast<uint32_t>(15));
    852   EXPECT_EQ(static_cast<uint32_t>(cmds::GetActiveUniform::kCmdId),
    853             cmd.header.command);
    854   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    855   EXPECT_EQ(static_cast<GLuint>(11), cmd.program);
    856   EXPECT_EQ(static_cast<GLuint>(12), cmd.index);
    857   EXPECT_EQ(static_cast<uint32_t>(13), cmd.name_bucket_id);
    858   EXPECT_EQ(static_cast<uint32_t>(14), cmd.result_shm_id);
    859   EXPECT_EQ(static_cast<uint32_t>(15), cmd.result_shm_offset);
    860   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    861 }
    862 
    863 TEST_F(GLES2FormatTest, GetAttachedShaders) {
    864   cmds::GetAttachedShaders& cmd = *GetBufferAs<cmds::GetAttachedShaders>();
    865   void* next_cmd = cmd.Set(&cmd,
    866                            static_cast<GLuint>(11),
    867                            static_cast<uint32_t>(12),
    868                            static_cast<uint32_t>(13),
    869                            static_cast<uint32_t>(14));
    870   EXPECT_EQ(static_cast<uint32_t>(cmds::GetAttachedShaders::kCmdId),
    871             cmd.header.command);
    872   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    873   EXPECT_EQ(static_cast<GLuint>(11), cmd.program);
    874   EXPECT_EQ(static_cast<uint32_t>(12), cmd.result_shm_id);
    875   EXPECT_EQ(static_cast<uint32_t>(13), cmd.result_shm_offset);
    876   EXPECT_EQ(static_cast<uint32_t>(14), cmd.result_size);
    877   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    878 }
    879 
    880 // TODO(gman): Write test for GetAttribLocation
    881 TEST_F(GLES2FormatTest, GetBooleanv) {
    882   cmds::GetBooleanv& cmd = *GetBufferAs<cmds::GetBooleanv>();
    883   void* next_cmd = cmd.Set(&cmd,
    884                            static_cast<GLenum>(11),
    885                            static_cast<uint32_t>(12),
    886                            static_cast<uint32_t>(13));
    887   EXPECT_EQ(static_cast<uint32_t>(cmds::GetBooleanv::kCmdId),
    888             cmd.header.command);
    889   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    890   EXPECT_EQ(static_cast<GLenum>(11), cmd.pname);
    891   EXPECT_EQ(static_cast<uint32_t>(12), cmd.params_shm_id);
    892   EXPECT_EQ(static_cast<uint32_t>(13), cmd.params_shm_offset);
    893   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    894 }
    895 
    896 TEST_F(GLES2FormatTest, GetBufferParameteriv) {
    897   cmds::GetBufferParameteriv& cmd = *GetBufferAs<cmds::GetBufferParameteriv>();
    898   void* next_cmd = cmd.Set(&cmd,
    899                            static_cast<GLenum>(11),
    900                            static_cast<GLenum>(12),
    901                            static_cast<uint32_t>(13),
    902                            static_cast<uint32_t>(14));
    903   EXPECT_EQ(static_cast<uint32_t>(cmds::GetBufferParameteriv::kCmdId),
    904             cmd.header.command);
    905   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    906   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
    907   EXPECT_EQ(static_cast<GLenum>(12), cmd.pname);
    908   EXPECT_EQ(static_cast<uint32_t>(13), cmd.params_shm_id);
    909   EXPECT_EQ(static_cast<uint32_t>(14), cmd.params_shm_offset);
    910   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    911 }
    912 
    913 TEST_F(GLES2FormatTest, GetError) {
    914   cmds::GetError& cmd = *GetBufferAs<cmds::GetError>();
    915   void* next_cmd =
    916       cmd.Set(&cmd, static_cast<uint32_t>(11), static_cast<uint32_t>(12));
    917   EXPECT_EQ(static_cast<uint32_t>(cmds::GetError::kCmdId), cmd.header.command);
    918   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    919   EXPECT_EQ(static_cast<uint32_t>(11), cmd.result_shm_id);
    920   EXPECT_EQ(static_cast<uint32_t>(12), cmd.result_shm_offset);
    921   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    922 }
    923 
    924 TEST_F(GLES2FormatTest, GetFloatv) {
    925   cmds::GetFloatv& cmd = *GetBufferAs<cmds::GetFloatv>();
    926   void* next_cmd = cmd.Set(&cmd,
    927                            static_cast<GLenum>(11),
    928                            static_cast<uint32_t>(12),
    929                            static_cast<uint32_t>(13));
    930   EXPECT_EQ(static_cast<uint32_t>(cmds::GetFloatv::kCmdId), cmd.header.command);
    931   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    932   EXPECT_EQ(static_cast<GLenum>(11), cmd.pname);
    933   EXPECT_EQ(static_cast<uint32_t>(12), cmd.params_shm_id);
    934   EXPECT_EQ(static_cast<uint32_t>(13), cmd.params_shm_offset);
    935   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    936 }
    937 
    938 TEST_F(GLES2FormatTest, GetFramebufferAttachmentParameteriv) {
    939   cmds::GetFramebufferAttachmentParameteriv& cmd =
    940       *GetBufferAs<cmds::GetFramebufferAttachmentParameteriv>();
    941   void* next_cmd = cmd.Set(&cmd,
    942                            static_cast<GLenum>(11),
    943                            static_cast<GLenum>(12),
    944                            static_cast<GLenum>(13),
    945                            static_cast<uint32_t>(14),
    946                            static_cast<uint32_t>(15));
    947   EXPECT_EQ(
    948       static_cast<uint32_t>(cmds::GetFramebufferAttachmentParameteriv::kCmdId),
    949       cmd.header.command);
    950   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    951   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
    952   EXPECT_EQ(static_cast<GLenum>(12), cmd.attachment);
    953   EXPECT_EQ(static_cast<GLenum>(13), cmd.pname);
    954   EXPECT_EQ(static_cast<uint32_t>(14), cmd.params_shm_id);
    955   EXPECT_EQ(static_cast<uint32_t>(15), cmd.params_shm_offset);
    956   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    957 }
    958 
    959 TEST_F(GLES2FormatTest, GetIntegerv) {
    960   cmds::GetIntegerv& cmd = *GetBufferAs<cmds::GetIntegerv>();
    961   void* next_cmd = cmd.Set(&cmd,
    962                            static_cast<GLenum>(11),
    963                            static_cast<uint32_t>(12),
    964                            static_cast<uint32_t>(13));
    965   EXPECT_EQ(static_cast<uint32_t>(cmds::GetIntegerv::kCmdId),
    966             cmd.header.command);
    967   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    968   EXPECT_EQ(static_cast<GLenum>(11), cmd.pname);
    969   EXPECT_EQ(static_cast<uint32_t>(12), cmd.params_shm_id);
    970   EXPECT_EQ(static_cast<uint32_t>(13), cmd.params_shm_offset);
    971   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    972 }
    973 
    974 TEST_F(GLES2FormatTest, GetProgramiv) {
    975   cmds::GetProgramiv& cmd = *GetBufferAs<cmds::GetProgramiv>();
    976   void* next_cmd = cmd.Set(&cmd,
    977                            static_cast<GLuint>(11),
    978                            static_cast<GLenum>(12),
    979                            static_cast<uint32_t>(13),
    980                            static_cast<uint32_t>(14));
    981   EXPECT_EQ(static_cast<uint32_t>(cmds::GetProgramiv::kCmdId),
    982             cmd.header.command);
    983   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    984   EXPECT_EQ(static_cast<GLuint>(11), cmd.program);
    985   EXPECT_EQ(static_cast<GLenum>(12), cmd.pname);
    986   EXPECT_EQ(static_cast<uint32_t>(13), cmd.params_shm_id);
    987   EXPECT_EQ(static_cast<uint32_t>(14), cmd.params_shm_offset);
    988   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
    989 }
    990 
    991 TEST_F(GLES2FormatTest, GetProgramInfoLog) {
    992   cmds::GetProgramInfoLog& cmd = *GetBufferAs<cmds::GetProgramInfoLog>();
    993   void* next_cmd =
    994       cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<uint32_t>(12));
    995   EXPECT_EQ(static_cast<uint32_t>(cmds::GetProgramInfoLog::kCmdId),
    996             cmd.header.command);
    997   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
    998   EXPECT_EQ(static_cast<GLuint>(11), cmd.program);
    999   EXPECT_EQ(static_cast<uint32_t>(12), cmd.bucket_id);
   1000   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1001 }
   1002 
   1003 TEST_F(GLES2FormatTest, GetRenderbufferParameteriv) {
   1004   cmds::GetRenderbufferParameteriv& cmd =
   1005       *GetBufferAs<cmds::GetRenderbufferParameteriv>();
   1006   void* next_cmd = cmd.Set(&cmd,
   1007                            static_cast<GLenum>(11),
   1008                            static_cast<GLenum>(12),
   1009                            static_cast<uint32_t>(13),
   1010                            static_cast<uint32_t>(14));
   1011   EXPECT_EQ(static_cast<uint32_t>(cmds::GetRenderbufferParameteriv::kCmdId),
   1012             cmd.header.command);
   1013   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1014   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   1015   EXPECT_EQ(static_cast<GLenum>(12), cmd.pname);
   1016   EXPECT_EQ(static_cast<uint32_t>(13), cmd.params_shm_id);
   1017   EXPECT_EQ(static_cast<uint32_t>(14), cmd.params_shm_offset);
   1018   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1019 }
   1020 
   1021 TEST_F(GLES2FormatTest, GetShaderiv) {
   1022   cmds::GetShaderiv& cmd = *GetBufferAs<cmds::GetShaderiv>();
   1023   void* next_cmd = cmd.Set(&cmd,
   1024                            static_cast<GLuint>(11),
   1025                            static_cast<GLenum>(12),
   1026                            static_cast<uint32_t>(13),
   1027                            static_cast<uint32_t>(14));
   1028   EXPECT_EQ(static_cast<uint32_t>(cmds::GetShaderiv::kCmdId),
   1029             cmd.header.command);
   1030   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1031   EXPECT_EQ(static_cast<GLuint>(11), cmd.shader);
   1032   EXPECT_EQ(static_cast<GLenum>(12), cmd.pname);
   1033   EXPECT_EQ(static_cast<uint32_t>(13), cmd.params_shm_id);
   1034   EXPECT_EQ(static_cast<uint32_t>(14), cmd.params_shm_offset);
   1035   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1036 }
   1037 
   1038 TEST_F(GLES2FormatTest, GetShaderInfoLog) {
   1039   cmds::GetShaderInfoLog& cmd = *GetBufferAs<cmds::GetShaderInfoLog>();
   1040   void* next_cmd =
   1041       cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<uint32_t>(12));
   1042   EXPECT_EQ(static_cast<uint32_t>(cmds::GetShaderInfoLog::kCmdId),
   1043             cmd.header.command);
   1044   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1045   EXPECT_EQ(static_cast<GLuint>(11), cmd.shader);
   1046   EXPECT_EQ(static_cast<uint32_t>(12), cmd.bucket_id);
   1047   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1048 }
   1049 
   1050 TEST_F(GLES2FormatTest, GetShaderPrecisionFormat) {
   1051   cmds::GetShaderPrecisionFormat& cmd =
   1052       *GetBufferAs<cmds::GetShaderPrecisionFormat>();
   1053   void* next_cmd = cmd.Set(&cmd,
   1054                            static_cast<GLenum>(11),
   1055                            static_cast<GLenum>(12),
   1056                            static_cast<uint32_t>(13),
   1057                            static_cast<uint32_t>(14));
   1058   EXPECT_EQ(static_cast<uint32_t>(cmds::GetShaderPrecisionFormat::kCmdId),
   1059             cmd.header.command);
   1060   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1061   EXPECT_EQ(static_cast<GLenum>(11), cmd.shadertype);
   1062   EXPECT_EQ(static_cast<GLenum>(12), cmd.precisiontype);
   1063   EXPECT_EQ(static_cast<uint32_t>(13), cmd.result_shm_id);
   1064   EXPECT_EQ(static_cast<uint32_t>(14), cmd.result_shm_offset);
   1065   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1066 }
   1067 
   1068 TEST_F(GLES2FormatTest, GetShaderSource) {
   1069   cmds::GetShaderSource& cmd = *GetBufferAs<cmds::GetShaderSource>();
   1070   void* next_cmd =
   1071       cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<uint32_t>(12));
   1072   EXPECT_EQ(static_cast<uint32_t>(cmds::GetShaderSource::kCmdId),
   1073             cmd.header.command);
   1074   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1075   EXPECT_EQ(static_cast<GLuint>(11), cmd.shader);
   1076   EXPECT_EQ(static_cast<uint32_t>(12), cmd.bucket_id);
   1077   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1078 }
   1079 
   1080 TEST_F(GLES2FormatTest, GetString) {
   1081   cmds::GetString& cmd = *GetBufferAs<cmds::GetString>();
   1082   void* next_cmd =
   1083       cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<uint32_t>(12));
   1084   EXPECT_EQ(static_cast<uint32_t>(cmds::GetString::kCmdId), cmd.header.command);
   1085   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1086   EXPECT_EQ(static_cast<GLenum>(11), cmd.name);
   1087   EXPECT_EQ(static_cast<uint32_t>(12), cmd.bucket_id);
   1088   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1089 }
   1090 
   1091 TEST_F(GLES2FormatTest, GetTexParameterfv) {
   1092   cmds::GetTexParameterfv& cmd = *GetBufferAs<cmds::GetTexParameterfv>();
   1093   void* next_cmd = cmd.Set(&cmd,
   1094                            static_cast<GLenum>(11),
   1095                            static_cast<GLenum>(12),
   1096                            static_cast<uint32_t>(13),
   1097                            static_cast<uint32_t>(14));
   1098   EXPECT_EQ(static_cast<uint32_t>(cmds::GetTexParameterfv::kCmdId),
   1099             cmd.header.command);
   1100   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1101   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   1102   EXPECT_EQ(static_cast<GLenum>(12), cmd.pname);
   1103   EXPECT_EQ(static_cast<uint32_t>(13), cmd.params_shm_id);
   1104   EXPECT_EQ(static_cast<uint32_t>(14), cmd.params_shm_offset);
   1105   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1106 }
   1107 
   1108 TEST_F(GLES2FormatTest, GetTexParameteriv) {
   1109   cmds::GetTexParameteriv& cmd = *GetBufferAs<cmds::GetTexParameteriv>();
   1110   void* next_cmd = cmd.Set(&cmd,
   1111                            static_cast<GLenum>(11),
   1112                            static_cast<GLenum>(12),
   1113                            static_cast<uint32_t>(13),
   1114                            static_cast<uint32_t>(14));
   1115   EXPECT_EQ(static_cast<uint32_t>(cmds::GetTexParameteriv::kCmdId),
   1116             cmd.header.command);
   1117   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1118   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   1119   EXPECT_EQ(static_cast<GLenum>(12), cmd.pname);
   1120   EXPECT_EQ(static_cast<uint32_t>(13), cmd.params_shm_id);
   1121   EXPECT_EQ(static_cast<uint32_t>(14), cmd.params_shm_offset);
   1122   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1123 }
   1124 
   1125 TEST_F(GLES2FormatTest, GetUniformfv) {
   1126   cmds::GetUniformfv& cmd = *GetBufferAs<cmds::GetUniformfv>();
   1127   void* next_cmd = cmd.Set(&cmd,
   1128                            static_cast<GLuint>(11),
   1129                            static_cast<GLint>(12),
   1130                            static_cast<uint32_t>(13),
   1131                            static_cast<uint32_t>(14));
   1132   EXPECT_EQ(static_cast<uint32_t>(cmds::GetUniformfv::kCmdId),
   1133             cmd.header.command);
   1134   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1135   EXPECT_EQ(static_cast<GLuint>(11), cmd.program);
   1136   EXPECT_EQ(static_cast<GLint>(12), cmd.location);
   1137   EXPECT_EQ(static_cast<uint32_t>(13), cmd.params_shm_id);
   1138   EXPECT_EQ(static_cast<uint32_t>(14), cmd.params_shm_offset);
   1139   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1140 }
   1141 
   1142 TEST_F(GLES2FormatTest, GetUniformiv) {
   1143   cmds::GetUniformiv& cmd = *GetBufferAs<cmds::GetUniformiv>();
   1144   void* next_cmd = cmd.Set(&cmd,
   1145                            static_cast<GLuint>(11),
   1146                            static_cast<GLint>(12),
   1147                            static_cast<uint32_t>(13),
   1148                            static_cast<uint32_t>(14));
   1149   EXPECT_EQ(static_cast<uint32_t>(cmds::GetUniformiv::kCmdId),
   1150             cmd.header.command);
   1151   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1152   EXPECT_EQ(static_cast<GLuint>(11), cmd.program);
   1153   EXPECT_EQ(static_cast<GLint>(12), cmd.location);
   1154   EXPECT_EQ(static_cast<uint32_t>(13), cmd.params_shm_id);
   1155   EXPECT_EQ(static_cast<uint32_t>(14), cmd.params_shm_offset);
   1156   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1157 }
   1158 
   1159 // TODO(gman): Write test for GetUniformLocation
   1160 TEST_F(GLES2FormatTest, GetVertexAttribfv) {
   1161   cmds::GetVertexAttribfv& cmd = *GetBufferAs<cmds::GetVertexAttribfv>();
   1162   void* next_cmd = cmd.Set(&cmd,
   1163                            static_cast<GLuint>(11),
   1164                            static_cast<GLenum>(12),
   1165                            static_cast<uint32_t>(13),
   1166                            static_cast<uint32_t>(14));
   1167   EXPECT_EQ(static_cast<uint32_t>(cmds::GetVertexAttribfv::kCmdId),
   1168             cmd.header.command);
   1169   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1170   EXPECT_EQ(static_cast<GLuint>(11), cmd.index);
   1171   EXPECT_EQ(static_cast<GLenum>(12), cmd.pname);
   1172   EXPECT_EQ(static_cast<uint32_t>(13), cmd.params_shm_id);
   1173   EXPECT_EQ(static_cast<uint32_t>(14), cmd.params_shm_offset);
   1174   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1175 }
   1176 
   1177 TEST_F(GLES2FormatTest, GetVertexAttribiv) {
   1178   cmds::GetVertexAttribiv& cmd = *GetBufferAs<cmds::GetVertexAttribiv>();
   1179   void* next_cmd = cmd.Set(&cmd,
   1180                            static_cast<GLuint>(11),
   1181                            static_cast<GLenum>(12),
   1182                            static_cast<uint32_t>(13),
   1183                            static_cast<uint32_t>(14));
   1184   EXPECT_EQ(static_cast<uint32_t>(cmds::GetVertexAttribiv::kCmdId),
   1185             cmd.header.command);
   1186   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1187   EXPECT_EQ(static_cast<GLuint>(11), cmd.index);
   1188   EXPECT_EQ(static_cast<GLenum>(12), cmd.pname);
   1189   EXPECT_EQ(static_cast<uint32_t>(13), cmd.params_shm_id);
   1190   EXPECT_EQ(static_cast<uint32_t>(14), cmd.params_shm_offset);
   1191   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1192 }
   1193 
   1194 TEST_F(GLES2FormatTest, GetVertexAttribPointerv) {
   1195   cmds::GetVertexAttribPointerv& cmd =
   1196       *GetBufferAs<cmds::GetVertexAttribPointerv>();
   1197   void* next_cmd = cmd.Set(&cmd,
   1198                            static_cast<GLuint>(11),
   1199                            static_cast<GLenum>(12),
   1200                            static_cast<uint32_t>(13),
   1201                            static_cast<uint32_t>(14));
   1202   EXPECT_EQ(static_cast<uint32_t>(cmds::GetVertexAttribPointerv::kCmdId),
   1203             cmd.header.command);
   1204   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1205   EXPECT_EQ(static_cast<GLuint>(11), cmd.index);
   1206   EXPECT_EQ(static_cast<GLenum>(12), cmd.pname);
   1207   EXPECT_EQ(static_cast<uint32_t>(13), cmd.pointer_shm_id);
   1208   EXPECT_EQ(static_cast<uint32_t>(14), cmd.pointer_shm_offset);
   1209   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1210 }
   1211 
   1212 TEST_F(GLES2FormatTest, Hint) {
   1213   cmds::Hint& cmd = *GetBufferAs<cmds::Hint>();
   1214   void* next_cmd =
   1215       cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12));
   1216   EXPECT_EQ(static_cast<uint32_t>(cmds::Hint::kCmdId), cmd.header.command);
   1217   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1218   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   1219   EXPECT_EQ(static_cast<GLenum>(12), cmd.mode);
   1220   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1221 }
   1222 
   1223 TEST_F(GLES2FormatTest, IsBuffer) {
   1224   cmds::IsBuffer& cmd = *GetBufferAs<cmds::IsBuffer>();
   1225   void* next_cmd = cmd.Set(&cmd,
   1226                            static_cast<GLuint>(11),
   1227                            static_cast<uint32_t>(12),
   1228                            static_cast<uint32_t>(13));
   1229   EXPECT_EQ(static_cast<uint32_t>(cmds::IsBuffer::kCmdId), cmd.header.command);
   1230   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1231   EXPECT_EQ(static_cast<GLuint>(11), cmd.buffer);
   1232   EXPECT_EQ(static_cast<uint32_t>(12), cmd.result_shm_id);
   1233   EXPECT_EQ(static_cast<uint32_t>(13), cmd.result_shm_offset);
   1234   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1235 }
   1236 
   1237 TEST_F(GLES2FormatTest, IsEnabled) {
   1238   cmds::IsEnabled& cmd = *GetBufferAs<cmds::IsEnabled>();
   1239   void* next_cmd = cmd.Set(&cmd,
   1240                            static_cast<GLenum>(11),
   1241                            static_cast<uint32_t>(12),
   1242                            static_cast<uint32_t>(13));
   1243   EXPECT_EQ(static_cast<uint32_t>(cmds::IsEnabled::kCmdId), cmd.header.command);
   1244   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1245   EXPECT_EQ(static_cast<GLenum>(11), cmd.cap);
   1246   EXPECT_EQ(static_cast<uint32_t>(12), cmd.result_shm_id);
   1247   EXPECT_EQ(static_cast<uint32_t>(13), cmd.result_shm_offset);
   1248   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1249 }
   1250 
   1251 TEST_F(GLES2FormatTest, IsFramebuffer) {
   1252   cmds::IsFramebuffer& cmd = *GetBufferAs<cmds::IsFramebuffer>();
   1253   void* next_cmd = cmd.Set(&cmd,
   1254                            static_cast<GLuint>(11),
   1255                            static_cast<uint32_t>(12),
   1256                            static_cast<uint32_t>(13));
   1257   EXPECT_EQ(static_cast<uint32_t>(cmds::IsFramebuffer::kCmdId),
   1258             cmd.header.command);
   1259   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1260   EXPECT_EQ(static_cast<GLuint>(11), cmd.framebuffer);
   1261   EXPECT_EQ(static_cast<uint32_t>(12), cmd.result_shm_id);
   1262   EXPECT_EQ(static_cast<uint32_t>(13), cmd.result_shm_offset);
   1263   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1264 }
   1265 
   1266 TEST_F(GLES2FormatTest, IsProgram) {
   1267   cmds::IsProgram& cmd = *GetBufferAs<cmds::IsProgram>();
   1268   void* next_cmd = cmd.Set(&cmd,
   1269                            static_cast<GLuint>(11),
   1270                            static_cast<uint32_t>(12),
   1271                            static_cast<uint32_t>(13));
   1272   EXPECT_EQ(static_cast<uint32_t>(cmds::IsProgram::kCmdId), cmd.header.command);
   1273   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1274   EXPECT_EQ(static_cast<GLuint>(11), cmd.program);
   1275   EXPECT_EQ(static_cast<uint32_t>(12), cmd.result_shm_id);
   1276   EXPECT_EQ(static_cast<uint32_t>(13), cmd.result_shm_offset);
   1277   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1278 }
   1279 
   1280 TEST_F(GLES2FormatTest, IsRenderbuffer) {
   1281   cmds::IsRenderbuffer& cmd = *GetBufferAs<cmds::IsRenderbuffer>();
   1282   void* next_cmd = cmd.Set(&cmd,
   1283                            static_cast<GLuint>(11),
   1284                            static_cast<uint32_t>(12),
   1285                            static_cast<uint32_t>(13));
   1286   EXPECT_EQ(static_cast<uint32_t>(cmds::IsRenderbuffer::kCmdId),
   1287             cmd.header.command);
   1288   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1289   EXPECT_EQ(static_cast<GLuint>(11), cmd.renderbuffer);
   1290   EXPECT_EQ(static_cast<uint32_t>(12), cmd.result_shm_id);
   1291   EXPECT_EQ(static_cast<uint32_t>(13), cmd.result_shm_offset);
   1292   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1293 }
   1294 
   1295 TEST_F(GLES2FormatTest, IsShader) {
   1296   cmds::IsShader& cmd = *GetBufferAs<cmds::IsShader>();
   1297   void* next_cmd = cmd.Set(&cmd,
   1298                            static_cast<GLuint>(11),
   1299                            static_cast<uint32_t>(12),
   1300                            static_cast<uint32_t>(13));
   1301   EXPECT_EQ(static_cast<uint32_t>(cmds::IsShader::kCmdId), cmd.header.command);
   1302   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1303   EXPECT_EQ(static_cast<GLuint>(11), cmd.shader);
   1304   EXPECT_EQ(static_cast<uint32_t>(12), cmd.result_shm_id);
   1305   EXPECT_EQ(static_cast<uint32_t>(13), cmd.result_shm_offset);
   1306   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1307 }
   1308 
   1309 TEST_F(GLES2FormatTest, IsTexture) {
   1310   cmds::IsTexture& cmd = *GetBufferAs<cmds::IsTexture>();
   1311   void* next_cmd = cmd.Set(&cmd,
   1312                            static_cast<GLuint>(11),
   1313                            static_cast<uint32_t>(12),
   1314                            static_cast<uint32_t>(13));
   1315   EXPECT_EQ(static_cast<uint32_t>(cmds::IsTexture::kCmdId), cmd.header.command);
   1316   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1317   EXPECT_EQ(static_cast<GLuint>(11), cmd.texture);
   1318   EXPECT_EQ(static_cast<uint32_t>(12), cmd.result_shm_id);
   1319   EXPECT_EQ(static_cast<uint32_t>(13), cmd.result_shm_offset);
   1320   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1321 }
   1322 
   1323 TEST_F(GLES2FormatTest, LineWidth) {
   1324   cmds::LineWidth& cmd = *GetBufferAs<cmds::LineWidth>();
   1325   void* next_cmd = cmd.Set(&cmd, static_cast<GLfloat>(11));
   1326   EXPECT_EQ(static_cast<uint32_t>(cmds::LineWidth::kCmdId), cmd.header.command);
   1327   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1328   EXPECT_EQ(static_cast<GLfloat>(11), cmd.width);
   1329   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1330 }
   1331 
   1332 TEST_F(GLES2FormatTest, LinkProgram) {
   1333   cmds::LinkProgram& cmd = *GetBufferAs<cmds::LinkProgram>();
   1334   void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11));
   1335   EXPECT_EQ(static_cast<uint32_t>(cmds::LinkProgram::kCmdId),
   1336             cmd.header.command);
   1337   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1338   EXPECT_EQ(static_cast<GLuint>(11), cmd.program);
   1339   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1340 }
   1341 
   1342 TEST_F(GLES2FormatTest, PixelStorei) {
   1343   cmds::PixelStorei& cmd = *GetBufferAs<cmds::PixelStorei>();
   1344   void* next_cmd =
   1345       cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLint>(12));
   1346   EXPECT_EQ(static_cast<uint32_t>(cmds::PixelStorei::kCmdId),
   1347             cmd.header.command);
   1348   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1349   EXPECT_EQ(static_cast<GLenum>(11), cmd.pname);
   1350   EXPECT_EQ(static_cast<GLint>(12), cmd.param);
   1351   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1352 }
   1353 
   1354 TEST_F(GLES2FormatTest, PolygonOffset) {
   1355   cmds::PolygonOffset& cmd = *GetBufferAs<cmds::PolygonOffset>();
   1356   void* next_cmd =
   1357       cmd.Set(&cmd, static_cast<GLfloat>(11), static_cast<GLfloat>(12));
   1358   EXPECT_EQ(static_cast<uint32_t>(cmds::PolygonOffset::kCmdId),
   1359             cmd.header.command);
   1360   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1361   EXPECT_EQ(static_cast<GLfloat>(11), cmd.factor);
   1362   EXPECT_EQ(static_cast<GLfloat>(12), cmd.units);
   1363   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1364 }
   1365 
   1366 TEST_F(GLES2FormatTest, ReadPixels) {
   1367   cmds::ReadPixels& cmd = *GetBufferAs<cmds::ReadPixels>();
   1368   void* next_cmd = cmd.Set(&cmd,
   1369                            static_cast<GLint>(11),
   1370                            static_cast<GLint>(12),
   1371                            static_cast<GLsizei>(13),
   1372                            static_cast<GLsizei>(14),
   1373                            static_cast<GLenum>(15),
   1374                            static_cast<GLenum>(16),
   1375                            static_cast<uint32_t>(17),
   1376                            static_cast<uint32_t>(18),
   1377                            static_cast<uint32_t>(19),
   1378                            static_cast<uint32_t>(20),
   1379                            static_cast<GLboolean>(21));
   1380   EXPECT_EQ(static_cast<uint32_t>(cmds::ReadPixels::kCmdId),
   1381             cmd.header.command);
   1382   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1383   EXPECT_EQ(static_cast<GLint>(11), cmd.x);
   1384   EXPECT_EQ(static_cast<GLint>(12), cmd.y);
   1385   EXPECT_EQ(static_cast<GLsizei>(13), cmd.width);
   1386   EXPECT_EQ(static_cast<GLsizei>(14), cmd.height);
   1387   EXPECT_EQ(static_cast<GLenum>(15), cmd.format);
   1388   EXPECT_EQ(static_cast<GLenum>(16), cmd.type);
   1389   EXPECT_EQ(static_cast<uint32_t>(17), cmd.pixels_shm_id);
   1390   EXPECT_EQ(static_cast<uint32_t>(18), cmd.pixels_shm_offset);
   1391   EXPECT_EQ(static_cast<uint32_t>(19), cmd.result_shm_id);
   1392   EXPECT_EQ(static_cast<uint32_t>(20), cmd.result_shm_offset);
   1393   EXPECT_EQ(static_cast<GLboolean>(21), cmd.async);
   1394   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1395 }
   1396 
   1397 TEST_F(GLES2FormatTest, ReleaseShaderCompiler) {
   1398   cmds::ReleaseShaderCompiler& cmd =
   1399       *GetBufferAs<cmds::ReleaseShaderCompiler>();
   1400   void* next_cmd = cmd.Set(&cmd);
   1401   EXPECT_EQ(static_cast<uint32_t>(cmds::ReleaseShaderCompiler::kCmdId),
   1402             cmd.header.command);
   1403   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1404   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1405 }
   1406 
   1407 TEST_F(GLES2FormatTest, RenderbufferStorage) {
   1408   cmds::RenderbufferStorage& cmd = *GetBufferAs<cmds::RenderbufferStorage>();
   1409   void* next_cmd = cmd.Set(&cmd,
   1410                            static_cast<GLenum>(11),
   1411                            static_cast<GLenum>(12),
   1412                            static_cast<GLsizei>(13),
   1413                            static_cast<GLsizei>(14));
   1414   EXPECT_EQ(static_cast<uint32_t>(cmds::RenderbufferStorage::kCmdId),
   1415             cmd.header.command);
   1416   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1417   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   1418   EXPECT_EQ(static_cast<GLenum>(12), cmd.internalformat);
   1419   EXPECT_EQ(static_cast<GLsizei>(13), cmd.width);
   1420   EXPECT_EQ(static_cast<GLsizei>(14), cmd.height);
   1421   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1422 }
   1423 
   1424 TEST_F(GLES2FormatTest, SampleCoverage) {
   1425   cmds::SampleCoverage& cmd = *GetBufferAs<cmds::SampleCoverage>();
   1426   void* next_cmd =
   1427       cmd.Set(&cmd, static_cast<GLclampf>(11), static_cast<GLboolean>(12));
   1428   EXPECT_EQ(static_cast<uint32_t>(cmds::SampleCoverage::kCmdId),
   1429             cmd.header.command);
   1430   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1431   EXPECT_EQ(static_cast<GLclampf>(11), cmd.value);
   1432   EXPECT_EQ(static_cast<GLboolean>(12), cmd.invert);
   1433   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1434 }
   1435 
   1436 TEST_F(GLES2FormatTest, Scissor) {
   1437   cmds::Scissor& cmd = *GetBufferAs<cmds::Scissor>();
   1438   void* next_cmd = cmd.Set(&cmd,
   1439                            static_cast<GLint>(11),
   1440                            static_cast<GLint>(12),
   1441                            static_cast<GLsizei>(13),
   1442                            static_cast<GLsizei>(14));
   1443   EXPECT_EQ(static_cast<uint32_t>(cmds::Scissor::kCmdId), cmd.header.command);
   1444   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1445   EXPECT_EQ(static_cast<GLint>(11), cmd.x);
   1446   EXPECT_EQ(static_cast<GLint>(12), cmd.y);
   1447   EXPECT_EQ(static_cast<GLsizei>(13), cmd.width);
   1448   EXPECT_EQ(static_cast<GLsizei>(14), cmd.height);
   1449   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1450 }
   1451 
   1452 TEST_F(GLES2FormatTest, ShaderBinary) {
   1453   cmds::ShaderBinary& cmd = *GetBufferAs<cmds::ShaderBinary>();
   1454   void* next_cmd = cmd.Set(&cmd,
   1455                            static_cast<GLsizei>(11),
   1456                            static_cast<uint32_t>(12),
   1457                            static_cast<uint32_t>(13),
   1458                            static_cast<GLenum>(14),
   1459                            static_cast<uint32_t>(15),
   1460                            static_cast<uint32_t>(16),
   1461                            static_cast<GLsizei>(17));
   1462   EXPECT_EQ(static_cast<uint32_t>(cmds::ShaderBinary::kCmdId),
   1463             cmd.header.command);
   1464   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1465   EXPECT_EQ(static_cast<GLsizei>(11), cmd.n);
   1466   EXPECT_EQ(static_cast<uint32_t>(12), cmd.shaders_shm_id);
   1467   EXPECT_EQ(static_cast<uint32_t>(13), cmd.shaders_shm_offset);
   1468   EXPECT_EQ(static_cast<GLenum>(14), cmd.binaryformat);
   1469   EXPECT_EQ(static_cast<uint32_t>(15), cmd.binary_shm_id);
   1470   EXPECT_EQ(static_cast<uint32_t>(16), cmd.binary_shm_offset);
   1471   EXPECT_EQ(static_cast<GLsizei>(17), cmd.length);
   1472   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1473 }
   1474 
   1475 TEST_F(GLES2FormatTest, ShaderSourceBucket) {
   1476   cmds::ShaderSourceBucket& cmd = *GetBufferAs<cmds::ShaderSourceBucket>();
   1477   void* next_cmd =
   1478       cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<uint32_t>(12));
   1479   EXPECT_EQ(static_cast<uint32_t>(cmds::ShaderSourceBucket::kCmdId),
   1480             cmd.header.command);
   1481   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1482   EXPECT_EQ(static_cast<GLuint>(11), cmd.shader);
   1483   EXPECT_EQ(static_cast<uint32_t>(12), cmd.data_bucket_id);
   1484   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1485 }
   1486 
   1487 TEST_F(GLES2FormatTest, StencilFunc) {
   1488   cmds::StencilFunc& cmd = *GetBufferAs<cmds::StencilFunc>();
   1489   void* next_cmd = cmd.Set(&cmd,
   1490                            static_cast<GLenum>(11),
   1491                            static_cast<GLint>(12),
   1492                            static_cast<GLuint>(13));
   1493   EXPECT_EQ(static_cast<uint32_t>(cmds::StencilFunc::kCmdId),
   1494             cmd.header.command);
   1495   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1496   EXPECT_EQ(static_cast<GLenum>(11), cmd.func);
   1497   EXPECT_EQ(static_cast<GLint>(12), cmd.ref);
   1498   EXPECT_EQ(static_cast<GLuint>(13), cmd.mask);
   1499   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1500 }
   1501 
   1502 TEST_F(GLES2FormatTest, StencilFuncSeparate) {
   1503   cmds::StencilFuncSeparate& cmd = *GetBufferAs<cmds::StencilFuncSeparate>();
   1504   void* next_cmd = cmd.Set(&cmd,
   1505                            static_cast<GLenum>(11),
   1506                            static_cast<GLenum>(12),
   1507                            static_cast<GLint>(13),
   1508                            static_cast<GLuint>(14));
   1509   EXPECT_EQ(static_cast<uint32_t>(cmds::StencilFuncSeparate::kCmdId),
   1510             cmd.header.command);
   1511   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1512   EXPECT_EQ(static_cast<GLenum>(11), cmd.face);
   1513   EXPECT_EQ(static_cast<GLenum>(12), cmd.func);
   1514   EXPECT_EQ(static_cast<GLint>(13), cmd.ref);
   1515   EXPECT_EQ(static_cast<GLuint>(14), cmd.mask);
   1516   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1517 }
   1518 
   1519 TEST_F(GLES2FormatTest, StencilMask) {
   1520   cmds::StencilMask& cmd = *GetBufferAs<cmds::StencilMask>();
   1521   void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11));
   1522   EXPECT_EQ(static_cast<uint32_t>(cmds::StencilMask::kCmdId),
   1523             cmd.header.command);
   1524   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1525   EXPECT_EQ(static_cast<GLuint>(11), cmd.mask);
   1526   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1527 }
   1528 
   1529 TEST_F(GLES2FormatTest, StencilMaskSeparate) {
   1530   cmds::StencilMaskSeparate& cmd = *GetBufferAs<cmds::StencilMaskSeparate>();
   1531   void* next_cmd =
   1532       cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLuint>(12));
   1533   EXPECT_EQ(static_cast<uint32_t>(cmds::StencilMaskSeparate::kCmdId),
   1534             cmd.header.command);
   1535   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1536   EXPECT_EQ(static_cast<GLenum>(11), cmd.face);
   1537   EXPECT_EQ(static_cast<GLuint>(12), cmd.mask);
   1538   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1539 }
   1540 
   1541 TEST_F(GLES2FormatTest, StencilOp) {
   1542   cmds::StencilOp& cmd = *GetBufferAs<cmds::StencilOp>();
   1543   void* next_cmd = cmd.Set(&cmd,
   1544                            static_cast<GLenum>(11),
   1545                            static_cast<GLenum>(12),
   1546                            static_cast<GLenum>(13));
   1547   EXPECT_EQ(static_cast<uint32_t>(cmds::StencilOp::kCmdId), cmd.header.command);
   1548   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1549   EXPECT_EQ(static_cast<GLenum>(11), cmd.fail);
   1550   EXPECT_EQ(static_cast<GLenum>(12), cmd.zfail);
   1551   EXPECT_EQ(static_cast<GLenum>(13), cmd.zpass);
   1552   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1553 }
   1554 
   1555 TEST_F(GLES2FormatTest, StencilOpSeparate) {
   1556   cmds::StencilOpSeparate& cmd = *GetBufferAs<cmds::StencilOpSeparate>();
   1557   void* next_cmd = cmd.Set(&cmd,
   1558                            static_cast<GLenum>(11),
   1559                            static_cast<GLenum>(12),
   1560                            static_cast<GLenum>(13),
   1561                            static_cast<GLenum>(14));
   1562   EXPECT_EQ(static_cast<uint32_t>(cmds::StencilOpSeparate::kCmdId),
   1563             cmd.header.command);
   1564   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1565   EXPECT_EQ(static_cast<GLenum>(11), cmd.face);
   1566   EXPECT_EQ(static_cast<GLenum>(12), cmd.fail);
   1567   EXPECT_EQ(static_cast<GLenum>(13), cmd.zfail);
   1568   EXPECT_EQ(static_cast<GLenum>(14), cmd.zpass);
   1569   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1570 }
   1571 
   1572 TEST_F(GLES2FormatTest, TexImage2D) {
   1573   cmds::TexImage2D& cmd = *GetBufferAs<cmds::TexImage2D>();
   1574   void* next_cmd = cmd.Set(&cmd,
   1575                            static_cast<GLenum>(11),
   1576                            static_cast<GLint>(12),
   1577                            static_cast<GLint>(13),
   1578                            static_cast<GLsizei>(14),
   1579                            static_cast<GLsizei>(15),
   1580                            static_cast<GLenum>(16),
   1581                            static_cast<GLenum>(17),
   1582                            static_cast<uint32_t>(18),
   1583                            static_cast<uint32_t>(19));
   1584   EXPECT_EQ(static_cast<uint32_t>(cmds::TexImage2D::kCmdId),
   1585             cmd.header.command);
   1586   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1587   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   1588   EXPECT_EQ(static_cast<GLint>(12), cmd.level);
   1589   EXPECT_EQ(static_cast<GLint>(13), cmd.internalformat);
   1590   EXPECT_EQ(static_cast<GLsizei>(14), cmd.width);
   1591   EXPECT_EQ(static_cast<GLsizei>(15), cmd.height);
   1592   EXPECT_EQ(static_cast<GLenum>(16), cmd.format);
   1593   EXPECT_EQ(static_cast<GLenum>(17), cmd.type);
   1594   EXPECT_EQ(static_cast<uint32_t>(18), cmd.pixels_shm_id);
   1595   EXPECT_EQ(static_cast<uint32_t>(19), cmd.pixels_shm_offset);
   1596   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1597 }
   1598 
   1599 TEST_F(GLES2FormatTest, TexParameterf) {
   1600   cmds::TexParameterf& cmd = *GetBufferAs<cmds::TexParameterf>();
   1601   void* next_cmd = cmd.Set(&cmd,
   1602                            static_cast<GLenum>(11),
   1603                            static_cast<GLenum>(12),
   1604                            static_cast<GLfloat>(13));
   1605   EXPECT_EQ(static_cast<uint32_t>(cmds::TexParameterf::kCmdId),
   1606             cmd.header.command);
   1607   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1608   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   1609   EXPECT_EQ(static_cast<GLenum>(12), cmd.pname);
   1610   EXPECT_EQ(static_cast<GLfloat>(13), cmd.param);
   1611   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1612 }
   1613 
   1614 TEST_F(GLES2FormatTest, TexParameterfvImmediate) {
   1615   const int kSomeBaseValueToTestWith = 51;
   1616   static GLfloat data[] = {
   1617       static_cast<GLfloat>(kSomeBaseValueToTestWith + 0),
   1618   };
   1619   cmds::TexParameterfvImmediate& cmd =
   1620       *GetBufferAs<cmds::TexParameterfvImmediate>();
   1621   void* next_cmd =
   1622       cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12), data);
   1623   EXPECT_EQ(static_cast<uint32_t>(cmds::TexParameterfvImmediate::kCmdId),
   1624             cmd.header.command);
   1625   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)),
   1626             cmd.header.size * 4u);
   1627   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   1628   EXPECT_EQ(static_cast<GLenum>(12), cmd.pname);
   1629   CheckBytesWrittenMatchesExpectedSize(
   1630       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   1631   // TODO(gman): Check that data was inserted;
   1632 }
   1633 
   1634 TEST_F(GLES2FormatTest, TexParameteri) {
   1635   cmds::TexParameteri& cmd = *GetBufferAs<cmds::TexParameteri>();
   1636   void* next_cmd = cmd.Set(&cmd,
   1637                            static_cast<GLenum>(11),
   1638                            static_cast<GLenum>(12),
   1639                            static_cast<GLint>(13));
   1640   EXPECT_EQ(static_cast<uint32_t>(cmds::TexParameteri::kCmdId),
   1641             cmd.header.command);
   1642   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1643   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   1644   EXPECT_EQ(static_cast<GLenum>(12), cmd.pname);
   1645   EXPECT_EQ(static_cast<GLint>(13), cmd.param);
   1646   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1647 }
   1648 
   1649 TEST_F(GLES2FormatTest, TexParameterivImmediate) {
   1650   const int kSomeBaseValueToTestWith = 51;
   1651   static GLint data[] = {
   1652       static_cast<GLint>(kSomeBaseValueToTestWith + 0),
   1653   };
   1654   cmds::TexParameterivImmediate& cmd =
   1655       *GetBufferAs<cmds::TexParameterivImmediate>();
   1656   void* next_cmd =
   1657       cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12), data);
   1658   EXPECT_EQ(static_cast<uint32_t>(cmds::TexParameterivImmediate::kCmdId),
   1659             cmd.header.command);
   1660   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)),
   1661             cmd.header.size * 4u);
   1662   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   1663   EXPECT_EQ(static_cast<GLenum>(12), cmd.pname);
   1664   CheckBytesWrittenMatchesExpectedSize(
   1665       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   1666   // TODO(gman): Check that data was inserted;
   1667 }
   1668 
   1669 TEST_F(GLES2FormatTest, TexSubImage2D) {
   1670   cmds::TexSubImage2D& cmd = *GetBufferAs<cmds::TexSubImage2D>();
   1671   void* next_cmd = cmd.Set(&cmd,
   1672                            static_cast<GLenum>(11),
   1673                            static_cast<GLint>(12),
   1674                            static_cast<GLint>(13),
   1675                            static_cast<GLint>(14),
   1676                            static_cast<GLsizei>(15),
   1677                            static_cast<GLsizei>(16),
   1678                            static_cast<GLenum>(17),
   1679                            static_cast<GLenum>(18),
   1680                            static_cast<uint32_t>(19),
   1681                            static_cast<uint32_t>(20),
   1682                            static_cast<GLboolean>(21));
   1683   EXPECT_EQ(static_cast<uint32_t>(cmds::TexSubImage2D::kCmdId),
   1684             cmd.header.command);
   1685   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1686   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   1687   EXPECT_EQ(static_cast<GLint>(12), cmd.level);
   1688   EXPECT_EQ(static_cast<GLint>(13), cmd.xoffset);
   1689   EXPECT_EQ(static_cast<GLint>(14), cmd.yoffset);
   1690   EXPECT_EQ(static_cast<GLsizei>(15), cmd.width);
   1691   EXPECT_EQ(static_cast<GLsizei>(16), cmd.height);
   1692   EXPECT_EQ(static_cast<GLenum>(17), cmd.format);
   1693   EXPECT_EQ(static_cast<GLenum>(18), cmd.type);
   1694   EXPECT_EQ(static_cast<uint32_t>(19), cmd.pixels_shm_id);
   1695   EXPECT_EQ(static_cast<uint32_t>(20), cmd.pixels_shm_offset);
   1696   EXPECT_EQ(static_cast<GLboolean>(21), cmd.internal);
   1697   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1698 }
   1699 
   1700 TEST_F(GLES2FormatTest, Uniform1f) {
   1701   cmds::Uniform1f& cmd = *GetBufferAs<cmds::Uniform1f>();
   1702   void* next_cmd =
   1703       cmd.Set(&cmd, static_cast<GLint>(11), static_cast<GLfloat>(12));
   1704   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform1f::kCmdId), cmd.header.command);
   1705   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1706   EXPECT_EQ(static_cast<GLint>(11), cmd.location);
   1707   EXPECT_EQ(static_cast<GLfloat>(12), cmd.x);
   1708   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1709 }
   1710 
   1711 TEST_F(GLES2FormatTest, Uniform1fvImmediate) {
   1712   const int kSomeBaseValueToTestWith = 51;
   1713   static GLfloat data[] = {
   1714       static_cast<GLfloat>(kSomeBaseValueToTestWith + 0),
   1715       static_cast<GLfloat>(kSomeBaseValueToTestWith + 1),
   1716   };
   1717   cmds::Uniform1fvImmediate& cmd = *GetBufferAs<cmds::Uniform1fvImmediate>();
   1718   const GLsizei kNumElements = 2;
   1719   const size_t kExpectedCmdSize =
   1720       sizeof(cmd) + kNumElements * sizeof(GLfloat) * 1;
   1721   void* next_cmd =
   1722       cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
   1723   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform1fvImmediate::kCmdId),
   1724             cmd.header.command);
   1725   EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
   1726   EXPECT_EQ(static_cast<GLint>(1), cmd.location);
   1727   EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
   1728   CheckBytesWrittenMatchesExpectedSize(
   1729       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   1730   // TODO(gman): Check that data was inserted;
   1731 }
   1732 
   1733 TEST_F(GLES2FormatTest, Uniform1i) {
   1734   cmds::Uniform1i& cmd = *GetBufferAs<cmds::Uniform1i>();
   1735   void* next_cmd =
   1736       cmd.Set(&cmd, static_cast<GLint>(11), static_cast<GLint>(12));
   1737   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform1i::kCmdId), cmd.header.command);
   1738   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1739   EXPECT_EQ(static_cast<GLint>(11), cmd.location);
   1740   EXPECT_EQ(static_cast<GLint>(12), cmd.x);
   1741   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1742 }
   1743 
   1744 TEST_F(GLES2FormatTest, Uniform1ivImmediate) {
   1745   const int kSomeBaseValueToTestWith = 51;
   1746   static GLint data[] = {
   1747       static_cast<GLint>(kSomeBaseValueToTestWith + 0),
   1748       static_cast<GLint>(kSomeBaseValueToTestWith + 1),
   1749   };
   1750   cmds::Uniform1ivImmediate& cmd = *GetBufferAs<cmds::Uniform1ivImmediate>();
   1751   const GLsizei kNumElements = 2;
   1752   const size_t kExpectedCmdSize =
   1753       sizeof(cmd) + kNumElements * sizeof(GLint) * 1;
   1754   void* next_cmd =
   1755       cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
   1756   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform1ivImmediate::kCmdId),
   1757             cmd.header.command);
   1758   EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
   1759   EXPECT_EQ(static_cast<GLint>(1), cmd.location);
   1760   EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
   1761   CheckBytesWrittenMatchesExpectedSize(
   1762       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   1763   // TODO(gman): Check that data was inserted;
   1764 }
   1765 
   1766 TEST_F(GLES2FormatTest, Uniform2f) {
   1767   cmds::Uniform2f& cmd = *GetBufferAs<cmds::Uniform2f>();
   1768   void* next_cmd = cmd.Set(&cmd,
   1769                            static_cast<GLint>(11),
   1770                            static_cast<GLfloat>(12),
   1771                            static_cast<GLfloat>(13));
   1772   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform2f::kCmdId), cmd.header.command);
   1773   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1774   EXPECT_EQ(static_cast<GLint>(11), cmd.location);
   1775   EXPECT_EQ(static_cast<GLfloat>(12), cmd.x);
   1776   EXPECT_EQ(static_cast<GLfloat>(13), cmd.y);
   1777   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1778 }
   1779 
   1780 TEST_F(GLES2FormatTest, Uniform2fvImmediate) {
   1781   const int kSomeBaseValueToTestWith = 51;
   1782   static GLfloat data[] = {
   1783       static_cast<GLfloat>(kSomeBaseValueToTestWith + 0),
   1784       static_cast<GLfloat>(kSomeBaseValueToTestWith + 1),
   1785       static_cast<GLfloat>(kSomeBaseValueToTestWith + 2),
   1786       static_cast<GLfloat>(kSomeBaseValueToTestWith + 3),
   1787   };
   1788   cmds::Uniform2fvImmediate& cmd = *GetBufferAs<cmds::Uniform2fvImmediate>();
   1789   const GLsizei kNumElements = 2;
   1790   const size_t kExpectedCmdSize =
   1791       sizeof(cmd) + kNumElements * sizeof(GLfloat) * 2;
   1792   void* next_cmd =
   1793       cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
   1794   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform2fvImmediate::kCmdId),
   1795             cmd.header.command);
   1796   EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
   1797   EXPECT_EQ(static_cast<GLint>(1), cmd.location);
   1798   EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
   1799   CheckBytesWrittenMatchesExpectedSize(
   1800       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   1801   // TODO(gman): Check that data was inserted;
   1802 }
   1803 
   1804 TEST_F(GLES2FormatTest, Uniform2i) {
   1805   cmds::Uniform2i& cmd = *GetBufferAs<cmds::Uniform2i>();
   1806   void* next_cmd = cmd.Set(&cmd,
   1807                            static_cast<GLint>(11),
   1808                            static_cast<GLint>(12),
   1809                            static_cast<GLint>(13));
   1810   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform2i::kCmdId), cmd.header.command);
   1811   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1812   EXPECT_EQ(static_cast<GLint>(11), cmd.location);
   1813   EXPECT_EQ(static_cast<GLint>(12), cmd.x);
   1814   EXPECT_EQ(static_cast<GLint>(13), cmd.y);
   1815   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1816 }
   1817 
   1818 TEST_F(GLES2FormatTest, Uniform2ivImmediate) {
   1819   const int kSomeBaseValueToTestWith = 51;
   1820   static GLint data[] = {
   1821       static_cast<GLint>(kSomeBaseValueToTestWith + 0),
   1822       static_cast<GLint>(kSomeBaseValueToTestWith + 1),
   1823       static_cast<GLint>(kSomeBaseValueToTestWith + 2),
   1824       static_cast<GLint>(kSomeBaseValueToTestWith + 3),
   1825   };
   1826   cmds::Uniform2ivImmediate& cmd = *GetBufferAs<cmds::Uniform2ivImmediate>();
   1827   const GLsizei kNumElements = 2;
   1828   const size_t kExpectedCmdSize =
   1829       sizeof(cmd) + kNumElements * sizeof(GLint) * 2;
   1830   void* next_cmd =
   1831       cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
   1832   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform2ivImmediate::kCmdId),
   1833             cmd.header.command);
   1834   EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
   1835   EXPECT_EQ(static_cast<GLint>(1), cmd.location);
   1836   EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
   1837   CheckBytesWrittenMatchesExpectedSize(
   1838       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   1839   // TODO(gman): Check that data was inserted;
   1840 }
   1841 
   1842 TEST_F(GLES2FormatTest, Uniform3f) {
   1843   cmds::Uniform3f& cmd = *GetBufferAs<cmds::Uniform3f>();
   1844   void* next_cmd = cmd.Set(&cmd,
   1845                            static_cast<GLint>(11),
   1846                            static_cast<GLfloat>(12),
   1847                            static_cast<GLfloat>(13),
   1848                            static_cast<GLfloat>(14));
   1849   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform3f::kCmdId), cmd.header.command);
   1850   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1851   EXPECT_EQ(static_cast<GLint>(11), cmd.location);
   1852   EXPECT_EQ(static_cast<GLfloat>(12), cmd.x);
   1853   EXPECT_EQ(static_cast<GLfloat>(13), cmd.y);
   1854   EXPECT_EQ(static_cast<GLfloat>(14), cmd.z);
   1855   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1856 }
   1857 
   1858 TEST_F(GLES2FormatTest, Uniform3fvImmediate) {
   1859   const int kSomeBaseValueToTestWith = 51;
   1860   static GLfloat data[] = {
   1861       static_cast<GLfloat>(kSomeBaseValueToTestWith + 0),
   1862       static_cast<GLfloat>(kSomeBaseValueToTestWith + 1),
   1863       static_cast<GLfloat>(kSomeBaseValueToTestWith + 2),
   1864       static_cast<GLfloat>(kSomeBaseValueToTestWith + 3),
   1865       static_cast<GLfloat>(kSomeBaseValueToTestWith + 4),
   1866       static_cast<GLfloat>(kSomeBaseValueToTestWith + 5),
   1867   };
   1868   cmds::Uniform3fvImmediate& cmd = *GetBufferAs<cmds::Uniform3fvImmediate>();
   1869   const GLsizei kNumElements = 2;
   1870   const size_t kExpectedCmdSize =
   1871       sizeof(cmd) + kNumElements * sizeof(GLfloat) * 3;
   1872   void* next_cmd =
   1873       cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
   1874   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform3fvImmediate::kCmdId),
   1875             cmd.header.command);
   1876   EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
   1877   EXPECT_EQ(static_cast<GLint>(1), cmd.location);
   1878   EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
   1879   CheckBytesWrittenMatchesExpectedSize(
   1880       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   1881   // TODO(gman): Check that data was inserted;
   1882 }
   1883 
   1884 TEST_F(GLES2FormatTest, Uniform3i) {
   1885   cmds::Uniform3i& cmd = *GetBufferAs<cmds::Uniform3i>();
   1886   void* next_cmd = cmd.Set(&cmd,
   1887                            static_cast<GLint>(11),
   1888                            static_cast<GLint>(12),
   1889                            static_cast<GLint>(13),
   1890                            static_cast<GLint>(14));
   1891   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform3i::kCmdId), cmd.header.command);
   1892   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1893   EXPECT_EQ(static_cast<GLint>(11), cmd.location);
   1894   EXPECT_EQ(static_cast<GLint>(12), cmd.x);
   1895   EXPECT_EQ(static_cast<GLint>(13), cmd.y);
   1896   EXPECT_EQ(static_cast<GLint>(14), cmd.z);
   1897   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1898 }
   1899 
   1900 TEST_F(GLES2FormatTest, Uniform3ivImmediate) {
   1901   const int kSomeBaseValueToTestWith = 51;
   1902   static GLint data[] = {
   1903       static_cast<GLint>(kSomeBaseValueToTestWith + 0),
   1904       static_cast<GLint>(kSomeBaseValueToTestWith + 1),
   1905       static_cast<GLint>(kSomeBaseValueToTestWith + 2),
   1906       static_cast<GLint>(kSomeBaseValueToTestWith + 3),
   1907       static_cast<GLint>(kSomeBaseValueToTestWith + 4),
   1908       static_cast<GLint>(kSomeBaseValueToTestWith + 5),
   1909   };
   1910   cmds::Uniform3ivImmediate& cmd = *GetBufferAs<cmds::Uniform3ivImmediate>();
   1911   const GLsizei kNumElements = 2;
   1912   const size_t kExpectedCmdSize =
   1913       sizeof(cmd) + kNumElements * sizeof(GLint) * 3;
   1914   void* next_cmd =
   1915       cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
   1916   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform3ivImmediate::kCmdId),
   1917             cmd.header.command);
   1918   EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
   1919   EXPECT_EQ(static_cast<GLint>(1), cmd.location);
   1920   EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
   1921   CheckBytesWrittenMatchesExpectedSize(
   1922       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   1923   // TODO(gman): Check that data was inserted;
   1924 }
   1925 
   1926 TEST_F(GLES2FormatTest, Uniform4f) {
   1927   cmds::Uniform4f& cmd = *GetBufferAs<cmds::Uniform4f>();
   1928   void* next_cmd = cmd.Set(&cmd,
   1929                            static_cast<GLint>(11),
   1930                            static_cast<GLfloat>(12),
   1931                            static_cast<GLfloat>(13),
   1932                            static_cast<GLfloat>(14),
   1933                            static_cast<GLfloat>(15));
   1934   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform4f::kCmdId), cmd.header.command);
   1935   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1936   EXPECT_EQ(static_cast<GLint>(11), cmd.location);
   1937   EXPECT_EQ(static_cast<GLfloat>(12), cmd.x);
   1938   EXPECT_EQ(static_cast<GLfloat>(13), cmd.y);
   1939   EXPECT_EQ(static_cast<GLfloat>(14), cmd.z);
   1940   EXPECT_EQ(static_cast<GLfloat>(15), cmd.w);
   1941   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1942 }
   1943 
   1944 TEST_F(GLES2FormatTest, Uniform4fvImmediate) {
   1945   const int kSomeBaseValueToTestWith = 51;
   1946   static GLfloat data[] = {
   1947       static_cast<GLfloat>(kSomeBaseValueToTestWith + 0),
   1948       static_cast<GLfloat>(kSomeBaseValueToTestWith + 1),
   1949       static_cast<GLfloat>(kSomeBaseValueToTestWith + 2),
   1950       static_cast<GLfloat>(kSomeBaseValueToTestWith + 3),
   1951       static_cast<GLfloat>(kSomeBaseValueToTestWith + 4),
   1952       static_cast<GLfloat>(kSomeBaseValueToTestWith + 5),
   1953       static_cast<GLfloat>(kSomeBaseValueToTestWith + 6),
   1954       static_cast<GLfloat>(kSomeBaseValueToTestWith + 7),
   1955   };
   1956   cmds::Uniform4fvImmediate& cmd = *GetBufferAs<cmds::Uniform4fvImmediate>();
   1957   const GLsizei kNumElements = 2;
   1958   const size_t kExpectedCmdSize =
   1959       sizeof(cmd) + kNumElements * sizeof(GLfloat) * 4;
   1960   void* next_cmd =
   1961       cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
   1962   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform4fvImmediate::kCmdId),
   1963             cmd.header.command);
   1964   EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
   1965   EXPECT_EQ(static_cast<GLint>(1), cmd.location);
   1966   EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
   1967   CheckBytesWrittenMatchesExpectedSize(
   1968       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   1969   // TODO(gman): Check that data was inserted;
   1970 }
   1971 
   1972 TEST_F(GLES2FormatTest, Uniform4i) {
   1973   cmds::Uniform4i& cmd = *GetBufferAs<cmds::Uniform4i>();
   1974   void* next_cmd = cmd.Set(&cmd,
   1975                            static_cast<GLint>(11),
   1976                            static_cast<GLint>(12),
   1977                            static_cast<GLint>(13),
   1978                            static_cast<GLint>(14),
   1979                            static_cast<GLint>(15));
   1980   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform4i::kCmdId), cmd.header.command);
   1981   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   1982   EXPECT_EQ(static_cast<GLint>(11), cmd.location);
   1983   EXPECT_EQ(static_cast<GLint>(12), cmd.x);
   1984   EXPECT_EQ(static_cast<GLint>(13), cmd.y);
   1985   EXPECT_EQ(static_cast<GLint>(14), cmd.z);
   1986   EXPECT_EQ(static_cast<GLint>(15), cmd.w);
   1987   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   1988 }
   1989 
   1990 TEST_F(GLES2FormatTest, Uniform4ivImmediate) {
   1991   const int kSomeBaseValueToTestWith = 51;
   1992   static GLint data[] = {
   1993       static_cast<GLint>(kSomeBaseValueToTestWith + 0),
   1994       static_cast<GLint>(kSomeBaseValueToTestWith + 1),
   1995       static_cast<GLint>(kSomeBaseValueToTestWith + 2),
   1996       static_cast<GLint>(kSomeBaseValueToTestWith + 3),
   1997       static_cast<GLint>(kSomeBaseValueToTestWith + 4),
   1998       static_cast<GLint>(kSomeBaseValueToTestWith + 5),
   1999       static_cast<GLint>(kSomeBaseValueToTestWith + 6),
   2000       static_cast<GLint>(kSomeBaseValueToTestWith + 7),
   2001   };
   2002   cmds::Uniform4ivImmediate& cmd = *GetBufferAs<cmds::Uniform4ivImmediate>();
   2003   const GLsizei kNumElements = 2;
   2004   const size_t kExpectedCmdSize =
   2005       sizeof(cmd) + kNumElements * sizeof(GLint) * 4;
   2006   void* next_cmd =
   2007       cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
   2008   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform4ivImmediate::kCmdId),
   2009             cmd.header.command);
   2010   EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
   2011   EXPECT_EQ(static_cast<GLint>(1), cmd.location);
   2012   EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
   2013   CheckBytesWrittenMatchesExpectedSize(
   2014       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   2015   // TODO(gman): Check that data was inserted;
   2016 }
   2017 
   2018 TEST_F(GLES2FormatTest, UniformMatrix2fvImmediate) {
   2019   const int kSomeBaseValueToTestWith = 51;
   2020   static GLfloat data[] = {
   2021       static_cast<GLfloat>(kSomeBaseValueToTestWith + 0),
   2022       static_cast<GLfloat>(kSomeBaseValueToTestWith + 1),
   2023       static_cast<GLfloat>(kSomeBaseValueToTestWith + 2),
   2024       static_cast<GLfloat>(kSomeBaseValueToTestWith + 3),
   2025       static_cast<GLfloat>(kSomeBaseValueToTestWith + 4),
   2026       static_cast<GLfloat>(kSomeBaseValueToTestWith + 5),
   2027       static_cast<GLfloat>(kSomeBaseValueToTestWith + 6),
   2028       static_cast<GLfloat>(kSomeBaseValueToTestWith + 7),
   2029   };
   2030   cmds::UniformMatrix2fvImmediate& cmd =
   2031       *GetBufferAs<cmds::UniformMatrix2fvImmediate>();
   2032   const GLsizei kNumElements = 2;
   2033   const size_t kExpectedCmdSize =
   2034       sizeof(cmd) + kNumElements * sizeof(GLfloat) * 4;
   2035   void* next_cmd =
   2036       cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
   2037   EXPECT_EQ(static_cast<uint32_t>(cmds::UniformMatrix2fvImmediate::kCmdId),
   2038             cmd.header.command);
   2039   EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
   2040   EXPECT_EQ(static_cast<GLint>(1), cmd.location);
   2041   EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
   2042   CheckBytesWrittenMatchesExpectedSize(
   2043       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   2044   // TODO(gman): Check that data was inserted;
   2045 }
   2046 
   2047 TEST_F(GLES2FormatTest, UniformMatrix3fvImmediate) {
   2048   const int kSomeBaseValueToTestWith = 51;
   2049   static GLfloat data[] = {
   2050       static_cast<GLfloat>(kSomeBaseValueToTestWith + 0),
   2051       static_cast<GLfloat>(kSomeBaseValueToTestWith + 1),
   2052       static_cast<GLfloat>(kSomeBaseValueToTestWith + 2),
   2053       static_cast<GLfloat>(kSomeBaseValueToTestWith + 3),
   2054       static_cast<GLfloat>(kSomeBaseValueToTestWith + 4),
   2055       static_cast<GLfloat>(kSomeBaseValueToTestWith + 5),
   2056       static_cast<GLfloat>(kSomeBaseValueToTestWith + 6),
   2057       static_cast<GLfloat>(kSomeBaseValueToTestWith + 7),
   2058       static_cast<GLfloat>(kSomeBaseValueToTestWith + 8),
   2059       static_cast<GLfloat>(kSomeBaseValueToTestWith + 9),
   2060       static_cast<GLfloat>(kSomeBaseValueToTestWith + 10),
   2061       static_cast<GLfloat>(kSomeBaseValueToTestWith + 11),
   2062       static_cast<GLfloat>(kSomeBaseValueToTestWith + 12),
   2063       static_cast<GLfloat>(kSomeBaseValueToTestWith + 13),
   2064       static_cast<GLfloat>(kSomeBaseValueToTestWith + 14),
   2065       static_cast<GLfloat>(kSomeBaseValueToTestWith + 15),
   2066       static_cast<GLfloat>(kSomeBaseValueToTestWith + 16),
   2067       static_cast<GLfloat>(kSomeBaseValueToTestWith + 17),
   2068   };
   2069   cmds::UniformMatrix3fvImmediate& cmd =
   2070       *GetBufferAs<cmds::UniformMatrix3fvImmediate>();
   2071   const GLsizei kNumElements = 2;
   2072   const size_t kExpectedCmdSize =
   2073       sizeof(cmd) + kNumElements * sizeof(GLfloat) * 9;
   2074   void* next_cmd =
   2075       cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
   2076   EXPECT_EQ(static_cast<uint32_t>(cmds::UniformMatrix3fvImmediate::kCmdId),
   2077             cmd.header.command);
   2078   EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
   2079   EXPECT_EQ(static_cast<GLint>(1), cmd.location);
   2080   EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
   2081   CheckBytesWrittenMatchesExpectedSize(
   2082       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   2083   // TODO(gman): Check that data was inserted;
   2084 }
   2085 
   2086 TEST_F(GLES2FormatTest, UniformMatrix4fvImmediate) {
   2087   const int kSomeBaseValueToTestWith = 51;
   2088   static GLfloat data[] = {
   2089       static_cast<GLfloat>(kSomeBaseValueToTestWith + 0),
   2090       static_cast<GLfloat>(kSomeBaseValueToTestWith + 1),
   2091       static_cast<GLfloat>(kSomeBaseValueToTestWith + 2),
   2092       static_cast<GLfloat>(kSomeBaseValueToTestWith + 3),
   2093       static_cast<GLfloat>(kSomeBaseValueToTestWith + 4),
   2094       static_cast<GLfloat>(kSomeBaseValueToTestWith + 5),
   2095       static_cast<GLfloat>(kSomeBaseValueToTestWith + 6),
   2096       static_cast<GLfloat>(kSomeBaseValueToTestWith + 7),
   2097       static_cast<GLfloat>(kSomeBaseValueToTestWith + 8),
   2098       static_cast<GLfloat>(kSomeBaseValueToTestWith + 9),
   2099       static_cast<GLfloat>(kSomeBaseValueToTestWith + 10),
   2100       static_cast<GLfloat>(kSomeBaseValueToTestWith + 11),
   2101       static_cast<GLfloat>(kSomeBaseValueToTestWith + 12),
   2102       static_cast<GLfloat>(kSomeBaseValueToTestWith + 13),
   2103       static_cast<GLfloat>(kSomeBaseValueToTestWith + 14),
   2104       static_cast<GLfloat>(kSomeBaseValueToTestWith + 15),
   2105       static_cast<GLfloat>(kSomeBaseValueToTestWith + 16),
   2106       static_cast<GLfloat>(kSomeBaseValueToTestWith + 17),
   2107       static_cast<GLfloat>(kSomeBaseValueToTestWith + 18),
   2108       static_cast<GLfloat>(kSomeBaseValueToTestWith + 19),
   2109       static_cast<GLfloat>(kSomeBaseValueToTestWith + 20),
   2110       static_cast<GLfloat>(kSomeBaseValueToTestWith + 21),
   2111       static_cast<GLfloat>(kSomeBaseValueToTestWith + 22),
   2112       static_cast<GLfloat>(kSomeBaseValueToTestWith + 23),
   2113       static_cast<GLfloat>(kSomeBaseValueToTestWith + 24),
   2114       static_cast<GLfloat>(kSomeBaseValueToTestWith + 25),
   2115       static_cast<GLfloat>(kSomeBaseValueToTestWith + 26),
   2116       static_cast<GLfloat>(kSomeBaseValueToTestWith + 27),
   2117       static_cast<GLfloat>(kSomeBaseValueToTestWith + 28),
   2118       static_cast<GLfloat>(kSomeBaseValueToTestWith + 29),
   2119       static_cast<GLfloat>(kSomeBaseValueToTestWith + 30),
   2120       static_cast<GLfloat>(kSomeBaseValueToTestWith + 31),
   2121   };
   2122   cmds::UniformMatrix4fvImmediate& cmd =
   2123       *GetBufferAs<cmds::UniformMatrix4fvImmediate>();
   2124   const GLsizei kNumElements = 2;
   2125   const size_t kExpectedCmdSize =
   2126       sizeof(cmd) + kNumElements * sizeof(GLfloat) * 16;
   2127   void* next_cmd =
   2128       cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
   2129   EXPECT_EQ(static_cast<uint32_t>(cmds::UniformMatrix4fvImmediate::kCmdId),
   2130             cmd.header.command);
   2131   EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
   2132   EXPECT_EQ(static_cast<GLint>(1), cmd.location);
   2133   EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
   2134   CheckBytesWrittenMatchesExpectedSize(
   2135       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   2136   // TODO(gman): Check that data was inserted;
   2137 }
   2138 
   2139 TEST_F(GLES2FormatTest, UseProgram) {
   2140   cmds::UseProgram& cmd = *GetBufferAs<cmds::UseProgram>();
   2141   void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11));
   2142   EXPECT_EQ(static_cast<uint32_t>(cmds::UseProgram::kCmdId),
   2143             cmd.header.command);
   2144   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2145   EXPECT_EQ(static_cast<GLuint>(11), cmd.program);
   2146   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2147 }
   2148 
   2149 TEST_F(GLES2FormatTest, ValidateProgram) {
   2150   cmds::ValidateProgram& cmd = *GetBufferAs<cmds::ValidateProgram>();
   2151   void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11));
   2152   EXPECT_EQ(static_cast<uint32_t>(cmds::ValidateProgram::kCmdId),
   2153             cmd.header.command);
   2154   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2155   EXPECT_EQ(static_cast<GLuint>(11), cmd.program);
   2156   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2157 }
   2158 
   2159 TEST_F(GLES2FormatTest, VertexAttrib1f) {
   2160   cmds::VertexAttrib1f& cmd = *GetBufferAs<cmds::VertexAttrib1f>();
   2161   void* next_cmd =
   2162       cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLfloat>(12));
   2163   EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttrib1f::kCmdId),
   2164             cmd.header.command);
   2165   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2166   EXPECT_EQ(static_cast<GLuint>(11), cmd.indx);
   2167   EXPECT_EQ(static_cast<GLfloat>(12), cmd.x);
   2168   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2169 }
   2170 
   2171 TEST_F(GLES2FormatTest, VertexAttrib1fvImmediate) {
   2172   const int kSomeBaseValueToTestWith = 51;
   2173   static GLfloat data[] = {
   2174       static_cast<GLfloat>(kSomeBaseValueToTestWith + 0),
   2175   };
   2176   cmds::VertexAttrib1fvImmediate& cmd =
   2177       *GetBufferAs<cmds::VertexAttrib1fvImmediate>();
   2178   void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11), data);
   2179   EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttrib1fvImmediate::kCmdId),
   2180             cmd.header.command);
   2181   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)),
   2182             cmd.header.size * 4u);
   2183   EXPECT_EQ(static_cast<GLuint>(11), cmd.indx);
   2184   CheckBytesWrittenMatchesExpectedSize(
   2185       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   2186   // TODO(gman): Check that data was inserted;
   2187 }
   2188 
   2189 TEST_F(GLES2FormatTest, VertexAttrib2f) {
   2190   cmds::VertexAttrib2f& cmd = *GetBufferAs<cmds::VertexAttrib2f>();
   2191   void* next_cmd = cmd.Set(&cmd,
   2192                            static_cast<GLuint>(11),
   2193                            static_cast<GLfloat>(12),
   2194                            static_cast<GLfloat>(13));
   2195   EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttrib2f::kCmdId),
   2196             cmd.header.command);
   2197   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2198   EXPECT_EQ(static_cast<GLuint>(11), cmd.indx);
   2199   EXPECT_EQ(static_cast<GLfloat>(12), cmd.x);
   2200   EXPECT_EQ(static_cast<GLfloat>(13), cmd.y);
   2201   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2202 }
   2203 
   2204 TEST_F(GLES2FormatTest, VertexAttrib2fvImmediate) {
   2205   const int kSomeBaseValueToTestWith = 51;
   2206   static GLfloat data[] = {
   2207       static_cast<GLfloat>(kSomeBaseValueToTestWith + 0),
   2208       static_cast<GLfloat>(kSomeBaseValueToTestWith + 1),
   2209   };
   2210   cmds::VertexAttrib2fvImmediate& cmd =
   2211       *GetBufferAs<cmds::VertexAttrib2fvImmediate>();
   2212   void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11), data);
   2213   EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttrib2fvImmediate::kCmdId),
   2214             cmd.header.command);
   2215   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)),
   2216             cmd.header.size * 4u);
   2217   EXPECT_EQ(static_cast<GLuint>(11), cmd.indx);
   2218   CheckBytesWrittenMatchesExpectedSize(
   2219       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   2220   // TODO(gman): Check that data was inserted;
   2221 }
   2222 
   2223 TEST_F(GLES2FormatTest, VertexAttrib3f) {
   2224   cmds::VertexAttrib3f& cmd = *GetBufferAs<cmds::VertexAttrib3f>();
   2225   void* next_cmd = cmd.Set(&cmd,
   2226                            static_cast<GLuint>(11),
   2227                            static_cast<GLfloat>(12),
   2228                            static_cast<GLfloat>(13),
   2229                            static_cast<GLfloat>(14));
   2230   EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttrib3f::kCmdId),
   2231             cmd.header.command);
   2232   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2233   EXPECT_EQ(static_cast<GLuint>(11), cmd.indx);
   2234   EXPECT_EQ(static_cast<GLfloat>(12), cmd.x);
   2235   EXPECT_EQ(static_cast<GLfloat>(13), cmd.y);
   2236   EXPECT_EQ(static_cast<GLfloat>(14), cmd.z);
   2237   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2238 }
   2239 
   2240 TEST_F(GLES2FormatTest, VertexAttrib3fvImmediate) {
   2241   const int kSomeBaseValueToTestWith = 51;
   2242   static GLfloat data[] = {
   2243       static_cast<GLfloat>(kSomeBaseValueToTestWith + 0),
   2244       static_cast<GLfloat>(kSomeBaseValueToTestWith + 1),
   2245       static_cast<GLfloat>(kSomeBaseValueToTestWith + 2),
   2246   };
   2247   cmds::VertexAttrib3fvImmediate& cmd =
   2248       *GetBufferAs<cmds::VertexAttrib3fvImmediate>();
   2249   void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11), data);
   2250   EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttrib3fvImmediate::kCmdId),
   2251             cmd.header.command);
   2252   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)),
   2253             cmd.header.size * 4u);
   2254   EXPECT_EQ(static_cast<GLuint>(11), cmd.indx);
   2255   CheckBytesWrittenMatchesExpectedSize(
   2256       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   2257   // TODO(gman): Check that data was inserted;
   2258 }
   2259 
   2260 TEST_F(GLES2FormatTest, VertexAttrib4f) {
   2261   cmds::VertexAttrib4f& cmd = *GetBufferAs<cmds::VertexAttrib4f>();
   2262   void* next_cmd = cmd.Set(&cmd,
   2263                            static_cast<GLuint>(11),
   2264                            static_cast<GLfloat>(12),
   2265                            static_cast<GLfloat>(13),
   2266                            static_cast<GLfloat>(14),
   2267                            static_cast<GLfloat>(15));
   2268   EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttrib4f::kCmdId),
   2269             cmd.header.command);
   2270   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2271   EXPECT_EQ(static_cast<GLuint>(11), cmd.indx);
   2272   EXPECT_EQ(static_cast<GLfloat>(12), cmd.x);
   2273   EXPECT_EQ(static_cast<GLfloat>(13), cmd.y);
   2274   EXPECT_EQ(static_cast<GLfloat>(14), cmd.z);
   2275   EXPECT_EQ(static_cast<GLfloat>(15), cmd.w);
   2276   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2277 }
   2278 
   2279 TEST_F(GLES2FormatTest, VertexAttrib4fvImmediate) {
   2280   const int kSomeBaseValueToTestWith = 51;
   2281   static GLfloat data[] = {
   2282       static_cast<GLfloat>(kSomeBaseValueToTestWith + 0),
   2283       static_cast<GLfloat>(kSomeBaseValueToTestWith + 1),
   2284       static_cast<GLfloat>(kSomeBaseValueToTestWith + 2),
   2285       static_cast<GLfloat>(kSomeBaseValueToTestWith + 3),
   2286   };
   2287   cmds::VertexAttrib4fvImmediate& cmd =
   2288       *GetBufferAs<cmds::VertexAttrib4fvImmediate>();
   2289   void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11), data);
   2290   EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttrib4fvImmediate::kCmdId),
   2291             cmd.header.command);
   2292   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)),
   2293             cmd.header.size * 4u);
   2294   EXPECT_EQ(static_cast<GLuint>(11), cmd.indx);
   2295   CheckBytesWrittenMatchesExpectedSize(
   2296       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   2297   // TODO(gman): Check that data was inserted;
   2298 }
   2299 
   2300 TEST_F(GLES2FormatTest, VertexAttribPointer) {
   2301   cmds::VertexAttribPointer& cmd = *GetBufferAs<cmds::VertexAttribPointer>();
   2302   void* next_cmd = cmd.Set(&cmd,
   2303                            static_cast<GLuint>(11),
   2304                            static_cast<GLint>(12),
   2305                            static_cast<GLenum>(13),
   2306                            static_cast<GLboolean>(14),
   2307                            static_cast<GLsizei>(15),
   2308                            static_cast<GLuint>(16));
   2309   EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttribPointer::kCmdId),
   2310             cmd.header.command);
   2311   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2312   EXPECT_EQ(static_cast<GLuint>(11), cmd.indx);
   2313   EXPECT_EQ(static_cast<GLint>(12), cmd.size);
   2314   EXPECT_EQ(static_cast<GLenum>(13), cmd.type);
   2315   EXPECT_EQ(static_cast<GLboolean>(14), cmd.normalized);
   2316   EXPECT_EQ(static_cast<GLsizei>(15), cmd.stride);
   2317   EXPECT_EQ(static_cast<GLuint>(16), cmd.offset);
   2318   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2319 }
   2320 
   2321 TEST_F(GLES2FormatTest, Viewport) {
   2322   cmds::Viewport& cmd = *GetBufferAs<cmds::Viewport>();
   2323   void* next_cmd = cmd.Set(&cmd,
   2324                            static_cast<GLint>(11),
   2325                            static_cast<GLint>(12),
   2326                            static_cast<GLsizei>(13),
   2327                            static_cast<GLsizei>(14));
   2328   EXPECT_EQ(static_cast<uint32_t>(cmds::Viewport::kCmdId), cmd.header.command);
   2329   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2330   EXPECT_EQ(static_cast<GLint>(11), cmd.x);
   2331   EXPECT_EQ(static_cast<GLint>(12), cmd.y);
   2332   EXPECT_EQ(static_cast<GLsizei>(13), cmd.width);
   2333   EXPECT_EQ(static_cast<GLsizei>(14), cmd.height);
   2334   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2335 }
   2336 
   2337 TEST_F(GLES2FormatTest, BlitFramebufferCHROMIUM) {
   2338   cmds::BlitFramebufferCHROMIUM& cmd =
   2339       *GetBufferAs<cmds::BlitFramebufferCHROMIUM>();
   2340   void* next_cmd = cmd.Set(&cmd,
   2341                            static_cast<GLint>(11),
   2342                            static_cast<GLint>(12),
   2343                            static_cast<GLint>(13),
   2344                            static_cast<GLint>(14),
   2345                            static_cast<GLint>(15),
   2346                            static_cast<GLint>(16),
   2347                            static_cast<GLint>(17),
   2348                            static_cast<GLint>(18),
   2349                            static_cast<GLbitfield>(19),
   2350                            static_cast<GLenum>(20));
   2351   EXPECT_EQ(static_cast<uint32_t>(cmds::BlitFramebufferCHROMIUM::kCmdId),
   2352             cmd.header.command);
   2353   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2354   EXPECT_EQ(static_cast<GLint>(11), cmd.srcX0);
   2355   EXPECT_EQ(static_cast<GLint>(12), cmd.srcY0);
   2356   EXPECT_EQ(static_cast<GLint>(13), cmd.srcX1);
   2357   EXPECT_EQ(static_cast<GLint>(14), cmd.srcY1);
   2358   EXPECT_EQ(static_cast<GLint>(15), cmd.dstX0);
   2359   EXPECT_EQ(static_cast<GLint>(16), cmd.dstY0);
   2360   EXPECT_EQ(static_cast<GLint>(17), cmd.dstX1);
   2361   EXPECT_EQ(static_cast<GLint>(18), cmd.dstY1);
   2362   EXPECT_EQ(static_cast<GLbitfield>(19), cmd.mask);
   2363   EXPECT_EQ(static_cast<GLenum>(20), cmd.filter);
   2364   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2365 }
   2366 
   2367 TEST_F(GLES2FormatTest, RenderbufferStorageMultisampleCHROMIUM) {
   2368   cmds::RenderbufferStorageMultisampleCHROMIUM& cmd =
   2369       *GetBufferAs<cmds::RenderbufferStorageMultisampleCHROMIUM>();
   2370   void* next_cmd = cmd.Set(&cmd,
   2371                            static_cast<GLenum>(11),
   2372                            static_cast<GLsizei>(12),
   2373                            static_cast<GLenum>(13),
   2374                            static_cast<GLsizei>(14),
   2375                            static_cast<GLsizei>(15));
   2376   EXPECT_EQ(static_cast<uint32_t>(
   2377                 cmds::RenderbufferStorageMultisampleCHROMIUM::kCmdId),
   2378             cmd.header.command);
   2379   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2380   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   2381   EXPECT_EQ(static_cast<GLsizei>(12), cmd.samples);
   2382   EXPECT_EQ(static_cast<GLenum>(13), cmd.internalformat);
   2383   EXPECT_EQ(static_cast<GLsizei>(14), cmd.width);
   2384   EXPECT_EQ(static_cast<GLsizei>(15), cmd.height);
   2385   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2386 }
   2387 
   2388 TEST_F(GLES2FormatTest, RenderbufferStorageMultisampleEXT) {
   2389   cmds::RenderbufferStorageMultisampleEXT& cmd =
   2390       *GetBufferAs<cmds::RenderbufferStorageMultisampleEXT>();
   2391   void* next_cmd = cmd.Set(&cmd,
   2392                            static_cast<GLenum>(11),
   2393                            static_cast<GLsizei>(12),
   2394                            static_cast<GLenum>(13),
   2395                            static_cast<GLsizei>(14),
   2396                            static_cast<GLsizei>(15));
   2397   EXPECT_EQ(
   2398       static_cast<uint32_t>(cmds::RenderbufferStorageMultisampleEXT::kCmdId),
   2399       cmd.header.command);
   2400   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2401   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   2402   EXPECT_EQ(static_cast<GLsizei>(12), cmd.samples);
   2403   EXPECT_EQ(static_cast<GLenum>(13), cmd.internalformat);
   2404   EXPECT_EQ(static_cast<GLsizei>(14), cmd.width);
   2405   EXPECT_EQ(static_cast<GLsizei>(15), cmd.height);
   2406   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2407 }
   2408 
   2409 TEST_F(GLES2FormatTest, FramebufferTexture2DMultisampleEXT) {
   2410   cmds::FramebufferTexture2DMultisampleEXT& cmd =
   2411       *GetBufferAs<cmds::FramebufferTexture2DMultisampleEXT>();
   2412   void* next_cmd = cmd.Set(&cmd,
   2413                            static_cast<GLenum>(11),
   2414                            static_cast<GLenum>(12),
   2415                            static_cast<GLenum>(13),
   2416                            static_cast<GLuint>(14),
   2417                            static_cast<GLsizei>(15));
   2418   EXPECT_EQ(
   2419       static_cast<uint32_t>(cmds::FramebufferTexture2DMultisampleEXT::kCmdId),
   2420       cmd.header.command);
   2421   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2422   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   2423   EXPECT_EQ(static_cast<GLenum>(12), cmd.attachment);
   2424   EXPECT_EQ(static_cast<GLenum>(13), cmd.textarget);
   2425   EXPECT_EQ(static_cast<GLuint>(14), cmd.texture);
   2426   EXPECT_EQ(static_cast<GLsizei>(15), cmd.samples);
   2427   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2428 }
   2429 
   2430 TEST_F(GLES2FormatTest, TexStorage2DEXT) {
   2431   cmds::TexStorage2DEXT& cmd = *GetBufferAs<cmds::TexStorage2DEXT>();
   2432   void* next_cmd = cmd.Set(&cmd,
   2433                            static_cast<GLenum>(11),
   2434                            static_cast<GLsizei>(12),
   2435                            static_cast<GLenum>(13),
   2436                            static_cast<GLsizei>(14),
   2437                            static_cast<GLsizei>(15));
   2438   EXPECT_EQ(static_cast<uint32_t>(cmds::TexStorage2DEXT::kCmdId),
   2439             cmd.header.command);
   2440   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2441   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   2442   EXPECT_EQ(static_cast<GLsizei>(12), cmd.levels);
   2443   EXPECT_EQ(static_cast<GLenum>(13), cmd.internalFormat);
   2444   EXPECT_EQ(static_cast<GLsizei>(14), cmd.width);
   2445   EXPECT_EQ(static_cast<GLsizei>(15), cmd.height);
   2446   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2447 }
   2448 
   2449 TEST_F(GLES2FormatTest, GenQueriesEXTImmediate) {
   2450   static GLuint ids[] = {
   2451       12, 23, 34,
   2452   };
   2453   cmds::GenQueriesEXTImmediate& cmd =
   2454       *GetBufferAs<cmds::GenQueriesEXTImmediate>();
   2455   void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
   2456   EXPECT_EQ(static_cast<uint32_t>(cmds::GenQueriesEXTImmediate::kCmdId),
   2457             cmd.header.command);
   2458   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
   2459             cmd.header.size * 4u);
   2460   EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
   2461   CheckBytesWrittenMatchesExpectedSize(
   2462       next_cmd,
   2463       sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
   2464   // TODO(gman): Check that ids were inserted;
   2465 }
   2466 
   2467 TEST_F(GLES2FormatTest, DeleteQueriesEXTImmediate) {
   2468   static GLuint ids[] = {
   2469       12, 23, 34,
   2470   };
   2471   cmds::DeleteQueriesEXTImmediate& cmd =
   2472       *GetBufferAs<cmds::DeleteQueriesEXTImmediate>();
   2473   void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
   2474   EXPECT_EQ(static_cast<uint32_t>(cmds::DeleteQueriesEXTImmediate::kCmdId),
   2475             cmd.header.command);
   2476   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
   2477             cmd.header.size * 4u);
   2478   EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
   2479   CheckBytesWrittenMatchesExpectedSize(
   2480       next_cmd,
   2481       sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
   2482   // TODO(gman): Check that ids were inserted;
   2483 }
   2484 
   2485 TEST_F(GLES2FormatTest, BeginQueryEXT) {
   2486   cmds::BeginQueryEXT& cmd = *GetBufferAs<cmds::BeginQueryEXT>();
   2487   void* next_cmd = cmd.Set(&cmd,
   2488                            static_cast<GLenum>(11),
   2489                            static_cast<GLuint>(12),
   2490                            static_cast<uint32_t>(13),
   2491                            static_cast<uint32_t>(14));
   2492   EXPECT_EQ(static_cast<uint32_t>(cmds::BeginQueryEXT::kCmdId),
   2493             cmd.header.command);
   2494   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2495   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   2496   EXPECT_EQ(static_cast<GLuint>(12), cmd.id);
   2497   EXPECT_EQ(static_cast<uint32_t>(13), cmd.sync_data_shm_id);
   2498   EXPECT_EQ(static_cast<uint32_t>(14), cmd.sync_data_shm_offset);
   2499   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2500 }
   2501 
   2502 TEST_F(GLES2FormatTest, EndQueryEXT) {
   2503   cmds::EndQueryEXT& cmd = *GetBufferAs<cmds::EndQueryEXT>();
   2504   void* next_cmd =
   2505       cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLuint>(12));
   2506   EXPECT_EQ(static_cast<uint32_t>(cmds::EndQueryEXT::kCmdId),
   2507             cmd.header.command);
   2508   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2509   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   2510   EXPECT_EQ(static_cast<GLuint>(12), cmd.submit_count);
   2511   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2512 }
   2513 
   2514 TEST_F(GLES2FormatTest, InsertEventMarkerEXT) {
   2515   cmds::InsertEventMarkerEXT& cmd = *GetBufferAs<cmds::InsertEventMarkerEXT>();
   2516   void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11));
   2517   EXPECT_EQ(static_cast<uint32_t>(cmds::InsertEventMarkerEXT::kCmdId),
   2518             cmd.header.command);
   2519   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2520   EXPECT_EQ(static_cast<GLuint>(11), cmd.bucket_id);
   2521   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2522 }
   2523 
   2524 TEST_F(GLES2FormatTest, PushGroupMarkerEXT) {
   2525   cmds::PushGroupMarkerEXT& cmd = *GetBufferAs<cmds::PushGroupMarkerEXT>();
   2526   void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11));
   2527   EXPECT_EQ(static_cast<uint32_t>(cmds::PushGroupMarkerEXT::kCmdId),
   2528             cmd.header.command);
   2529   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2530   EXPECT_EQ(static_cast<GLuint>(11), cmd.bucket_id);
   2531   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2532 }
   2533 
   2534 TEST_F(GLES2FormatTest, PopGroupMarkerEXT) {
   2535   cmds::PopGroupMarkerEXT& cmd = *GetBufferAs<cmds::PopGroupMarkerEXT>();
   2536   void* next_cmd = cmd.Set(&cmd);
   2537   EXPECT_EQ(static_cast<uint32_t>(cmds::PopGroupMarkerEXT::kCmdId),
   2538             cmd.header.command);
   2539   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2540   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2541 }
   2542 
   2543 TEST_F(GLES2FormatTest, GenVertexArraysOESImmediate) {
   2544   static GLuint ids[] = {
   2545       12, 23, 34,
   2546   };
   2547   cmds::GenVertexArraysOESImmediate& cmd =
   2548       *GetBufferAs<cmds::GenVertexArraysOESImmediate>();
   2549   void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
   2550   EXPECT_EQ(static_cast<uint32_t>(cmds::GenVertexArraysOESImmediate::kCmdId),
   2551             cmd.header.command);
   2552   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
   2553             cmd.header.size * 4u);
   2554   EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
   2555   CheckBytesWrittenMatchesExpectedSize(
   2556       next_cmd,
   2557       sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
   2558   // TODO(gman): Check that ids were inserted;
   2559 }
   2560 
   2561 TEST_F(GLES2FormatTest, DeleteVertexArraysOESImmediate) {
   2562   static GLuint ids[] = {
   2563       12, 23, 34,
   2564   };
   2565   cmds::DeleteVertexArraysOESImmediate& cmd =
   2566       *GetBufferAs<cmds::DeleteVertexArraysOESImmediate>();
   2567   void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(arraysize(ids)), ids);
   2568   EXPECT_EQ(static_cast<uint32_t>(cmds::DeleteVertexArraysOESImmediate::kCmdId),
   2569             cmd.header.command);
   2570   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u),
   2571             cmd.header.size * 4u);
   2572   EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);
   2573   CheckBytesWrittenMatchesExpectedSize(
   2574       next_cmd,
   2575       sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));
   2576   // TODO(gman): Check that ids were inserted;
   2577 }
   2578 
   2579 TEST_F(GLES2FormatTest, IsVertexArrayOES) {
   2580   cmds::IsVertexArrayOES& cmd = *GetBufferAs<cmds::IsVertexArrayOES>();
   2581   void* next_cmd = cmd.Set(&cmd,
   2582                            static_cast<GLuint>(11),
   2583                            static_cast<uint32_t>(12),
   2584                            static_cast<uint32_t>(13));
   2585   EXPECT_EQ(static_cast<uint32_t>(cmds::IsVertexArrayOES::kCmdId),
   2586             cmd.header.command);
   2587   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2588   EXPECT_EQ(static_cast<GLuint>(11), cmd.array);
   2589   EXPECT_EQ(static_cast<uint32_t>(12), cmd.result_shm_id);
   2590   EXPECT_EQ(static_cast<uint32_t>(13), cmd.result_shm_offset);
   2591   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2592 }
   2593 
   2594 TEST_F(GLES2FormatTest, BindVertexArrayOES) {
   2595   cmds::BindVertexArrayOES& cmd = *GetBufferAs<cmds::BindVertexArrayOES>();
   2596   void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11));
   2597   EXPECT_EQ(static_cast<uint32_t>(cmds::BindVertexArrayOES::kCmdId),
   2598             cmd.header.command);
   2599   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2600   EXPECT_EQ(static_cast<GLuint>(11), cmd.array);
   2601   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2602 }
   2603 
   2604 TEST_F(GLES2FormatTest, SwapBuffers) {
   2605   cmds::SwapBuffers& cmd = *GetBufferAs<cmds::SwapBuffers>();
   2606   void* next_cmd = cmd.Set(&cmd);
   2607   EXPECT_EQ(static_cast<uint32_t>(cmds::SwapBuffers::kCmdId),
   2608             cmd.header.command);
   2609   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2610   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2611 }
   2612 
   2613 TEST_F(GLES2FormatTest, GetMaxValueInBufferCHROMIUM) {
   2614   cmds::GetMaxValueInBufferCHROMIUM& cmd =
   2615       *GetBufferAs<cmds::GetMaxValueInBufferCHROMIUM>();
   2616   void* next_cmd = cmd.Set(&cmd,
   2617                            static_cast<GLuint>(11),
   2618                            static_cast<GLsizei>(12),
   2619                            static_cast<GLenum>(13),
   2620                            static_cast<GLuint>(14),
   2621                            static_cast<uint32_t>(15),
   2622                            static_cast<uint32_t>(16));
   2623   EXPECT_EQ(static_cast<uint32_t>(cmds::GetMaxValueInBufferCHROMIUM::kCmdId),
   2624             cmd.header.command);
   2625   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2626   EXPECT_EQ(static_cast<GLuint>(11), cmd.buffer_id);
   2627   EXPECT_EQ(static_cast<GLsizei>(12), cmd.count);
   2628   EXPECT_EQ(static_cast<GLenum>(13), cmd.type);
   2629   EXPECT_EQ(static_cast<GLuint>(14), cmd.offset);
   2630   EXPECT_EQ(static_cast<uint32_t>(15), cmd.result_shm_id);
   2631   EXPECT_EQ(static_cast<uint32_t>(16), cmd.result_shm_offset);
   2632   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2633 }
   2634 
   2635 TEST_F(GLES2FormatTest, GenSharedIdsCHROMIUM) {
   2636   cmds::GenSharedIdsCHROMIUM& cmd = *GetBufferAs<cmds::GenSharedIdsCHROMIUM>();
   2637   void* next_cmd = cmd.Set(&cmd,
   2638                            static_cast<GLuint>(11),
   2639                            static_cast<GLuint>(12),
   2640                            static_cast<GLsizei>(13),
   2641                            static_cast<uint32_t>(14),
   2642                            static_cast<uint32_t>(15));
   2643   EXPECT_EQ(static_cast<uint32_t>(cmds::GenSharedIdsCHROMIUM::kCmdId),
   2644             cmd.header.command);
   2645   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2646   EXPECT_EQ(static_cast<GLuint>(11), cmd.namespace_id);
   2647   EXPECT_EQ(static_cast<GLuint>(12), cmd.id_offset);
   2648   EXPECT_EQ(static_cast<GLsizei>(13), cmd.n);
   2649   EXPECT_EQ(static_cast<uint32_t>(14), cmd.ids_shm_id);
   2650   EXPECT_EQ(static_cast<uint32_t>(15), cmd.ids_shm_offset);
   2651   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2652 }
   2653 
   2654 TEST_F(GLES2FormatTest, DeleteSharedIdsCHROMIUM) {
   2655   cmds::DeleteSharedIdsCHROMIUM& cmd =
   2656       *GetBufferAs<cmds::DeleteSharedIdsCHROMIUM>();
   2657   void* next_cmd = cmd.Set(&cmd,
   2658                            static_cast<GLuint>(11),
   2659                            static_cast<GLsizei>(12),
   2660                            static_cast<uint32_t>(13),
   2661                            static_cast<uint32_t>(14));
   2662   EXPECT_EQ(static_cast<uint32_t>(cmds::DeleteSharedIdsCHROMIUM::kCmdId),
   2663             cmd.header.command);
   2664   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2665   EXPECT_EQ(static_cast<GLuint>(11), cmd.namespace_id);
   2666   EXPECT_EQ(static_cast<GLsizei>(12), cmd.n);
   2667   EXPECT_EQ(static_cast<uint32_t>(13), cmd.ids_shm_id);
   2668   EXPECT_EQ(static_cast<uint32_t>(14), cmd.ids_shm_offset);
   2669   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2670 }
   2671 
   2672 TEST_F(GLES2FormatTest, RegisterSharedIdsCHROMIUM) {
   2673   cmds::RegisterSharedIdsCHROMIUM& cmd =
   2674       *GetBufferAs<cmds::RegisterSharedIdsCHROMIUM>();
   2675   void* next_cmd = cmd.Set(&cmd,
   2676                            static_cast<GLuint>(11),
   2677                            static_cast<GLsizei>(12),
   2678                            static_cast<uint32_t>(13),
   2679                            static_cast<uint32_t>(14));
   2680   EXPECT_EQ(static_cast<uint32_t>(cmds::RegisterSharedIdsCHROMIUM::kCmdId),
   2681             cmd.header.command);
   2682   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2683   EXPECT_EQ(static_cast<GLuint>(11), cmd.namespace_id);
   2684   EXPECT_EQ(static_cast<GLsizei>(12), cmd.n);
   2685   EXPECT_EQ(static_cast<uint32_t>(13), cmd.ids_shm_id);
   2686   EXPECT_EQ(static_cast<uint32_t>(14), cmd.ids_shm_offset);
   2687   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2688 }
   2689 
   2690 TEST_F(GLES2FormatTest, EnableFeatureCHROMIUM) {
   2691   cmds::EnableFeatureCHROMIUM& cmd =
   2692       *GetBufferAs<cmds::EnableFeatureCHROMIUM>();
   2693   void* next_cmd = cmd.Set(&cmd,
   2694                            static_cast<GLuint>(11),
   2695                            static_cast<uint32_t>(12),
   2696                            static_cast<uint32_t>(13));
   2697   EXPECT_EQ(static_cast<uint32_t>(cmds::EnableFeatureCHROMIUM::kCmdId),
   2698             cmd.header.command);
   2699   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2700   EXPECT_EQ(static_cast<GLuint>(11), cmd.bucket_id);
   2701   EXPECT_EQ(static_cast<uint32_t>(12), cmd.result_shm_id);
   2702   EXPECT_EQ(static_cast<uint32_t>(13), cmd.result_shm_offset);
   2703   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2704 }
   2705 
   2706 TEST_F(GLES2FormatTest, ResizeCHROMIUM) {
   2707   cmds::ResizeCHROMIUM& cmd = *GetBufferAs<cmds::ResizeCHROMIUM>();
   2708   void* next_cmd = cmd.Set(&cmd,
   2709                            static_cast<GLuint>(11),
   2710                            static_cast<GLuint>(12),
   2711                            static_cast<GLfloat>(13));
   2712   EXPECT_EQ(static_cast<uint32_t>(cmds::ResizeCHROMIUM::kCmdId),
   2713             cmd.header.command);
   2714   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2715   EXPECT_EQ(static_cast<GLuint>(11), cmd.width);
   2716   EXPECT_EQ(static_cast<GLuint>(12), cmd.height);
   2717   EXPECT_EQ(static_cast<GLfloat>(13), cmd.scale_factor);
   2718   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2719 }
   2720 
   2721 TEST_F(GLES2FormatTest, GetRequestableExtensionsCHROMIUM) {
   2722   cmds::GetRequestableExtensionsCHROMIUM& cmd =
   2723       *GetBufferAs<cmds::GetRequestableExtensionsCHROMIUM>();
   2724   void* next_cmd = cmd.Set(&cmd, static_cast<uint32_t>(11));
   2725   EXPECT_EQ(
   2726       static_cast<uint32_t>(cmds::GetRequestableExtensionsCHROMIUM::kCmdId),
   2727       cmd.header.command);
   2728   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2729   EXPECT_EQ(static_cast<uint32_t>(11), cmd.bucket_id);
   2730   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2731 }
   2732 
   2733 TEST_F(GLES2FormatTest, RequestExtensionCHROMIUM) {
   2734   cmds::RequestExtensionCHROMIUM& cmd =
   2735       *GetBufferAs<cmds::RequestExtensionCHROMIUM>();
   2736   void* next_cmd = cmd.Set(&cmd, static_cast<uint32_t>(11));
   2737   EXPECT_EQ(static_cast<uint32_t>(cmds::RequestExtensionCHROMIUM::kCmdId),
   2738             cmd.header.command);
   2739   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2740   EXPECT_EQ(static_cast<uint32_t>(11), cmd.bucket_id);
   2741   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2742 }
   2743 
   2744 TEST_F(GLES2FormatTest, GetMultipleIntegervCHROMIUM) {
   2745   cmds::GetMultipleIntegervCHROMIUM& cmd =
   2746       *GetBufferAs<cmds::GetMultipleIntegervCHROMIUM>();
   2747   void* next_cmd = cmd.Set(&cmd,
   2748                            static_cast<uint32_t>(11),
   2749                            static_cast<uint32_t>(12),
   2750                            static_cast<GLuint>(13),
   2751                            static_cast<uint32_t>(14),
   2752                            static_cast<uint32_t>(15),
   2753                            static_cast<GLsizeiptr>(16));
   2754   EXPECT_EQ(static_cast<uint32_t>(cmds::GetMultipleIntegervCHROMIUM::kCmdId),
   2755             cmd.header.command);
   2756   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2757   EXPECT_EQ(static_cast<uint32_t>(11), cmd.pnames_shm_id);
   2758   EXPECT_EQ(static_cast<uint32_t>(12), cmd.pnames_shm_offset);
   2759   EXPECT_EQ(static_cast<GLuint>(13), cmd.count);
   2760   EXPECT_EQ(static_cast<uint32_t>(14), cmd.results_shm_id);
   2761   EXPECT_EQ(static_cast<uint32_t>(15), cmd.results_shm_offset);
   2762   EXPECT_EQ(static_cast<GLsizeiptr>(16), cmd.size);
   2763   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2764 }
   2765 
   2766 TEST_F(GLES2FormatTest, GetProgramInfoCHROMIUM) {
   2767   cmds::GetProgramInfoCHROMIUM& cmd =
   2768       *GetBufferAs<cmds::GetProgramInfoCHROMIUM>();
   2769   void* next_cmd =
   2770       cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<uint32_t>(12));
   2771   EXPECT_EQ(static_cast<uint32_t>(cmds::GetProgramInfoCHROMIUM::kCmdId),
   2772             cmd.header.command);
   2773   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2774   EXPECT_EQ(static_cast<GLuint>(11), cmd.program);
   2775   EXPECT_EQ(static_cast<uint32_t>(12), cmd.bucket_id);
   2776   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2777 }
   2778 
   2779 TEST_F(GLES2FormatTest, GetTranslatedShaderSourceANGLE) {
   2780   cmds::GetTranslatedShaderSourceANGLE& cmd =
   2781       *GetBufferAs<cmds::GetTranslatedShaderSourceANGLE>();
   2782   void* next_cmd =
   2783       cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<uint32_t>(12));
   2784   EXPECT_EQ(static_cast<uint32_t>(cmds::GetTranslatedShaderSourceANGLE::kCmdId),
   2785             cmd.header.command);
   2786   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2787   EXPECT_EQ(static_cast<GLuint>(11), cmd.shader);
   2788   EXPECT_EQ(static_cast<uint32_t>(12), cmd.bucket_id);
   2789   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2790 }
   2791 
   2792 TEST_F(GLES2FormatTest, PostSubBufferCHROMIUM) {
   2793   cmds::PostSubBufferCHROMIUM& cmd =
   2794       *GetBufferAs<cmds::PostSubBufferCHROMIUM>();
   2795   void* next_cmd = cmd.Set(&cmd,
   2796                            static_cast<GLint>(11),
   2797                            static_cast<GLint>(12),
   2798                            static_cast<GLint>(13),
   2799                            static_cast<GLint>(14));
   2800   EXPECT_EQ(static_cast<uint32_t>(cmds::PostSubBufferCHROMIUM::kCmdId),
   2801             cmd.header.command);
   2802   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2803   EXPECT_EQ(static_cast<GLint>(11), cmd.x);
   2804   EXPECT_EQ(static_cast<GLint>(12), cmd.y);
   2805   EXPECT_EQ(static_cast<GLint>(13), cmd.width);
   2806   EXPECT_EQ(static_cast<GLint>(14), cmd.height);
   2807   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2808 }
   2809 
   2810 TEST_F(GLES2FormatTest, TexImageIOSurface2DCHROMIUM) {
   2811   cmds::TexImageIOSurface2DCHROMIUM& cmd =
   2812       *GetBufferAs<cmds::TexImageIOSurface2DCHROMIUM>();
   2813   void* next_cmd = cmd.Set(&cmd,
   2814                            static_cast<GLenum>(11),
   2815                            static_cast<GLsizei>(12),
   2816                            static_cast<GLsizei>(13),
   2817                            static_cast<GLuint>(14),
   2818                            static_cast<GLuint>(15));
   2819   EXPECT_EQ(static_cast<uint32_t>(cmds::TexImageIOSurface2DCHROMIUM::kCmdId),
   2820             cmd.header.command);
   2821   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2822   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   2823   EXPECT_EQ(static_cast<GLsizei>(12), cmd.width);
   2824   EXPECT_EQ(static_cast<GLsizei>(13), cmd.height);
   2825   EXPECT_EQ(static_cast<GLuint>(14), cmd.ioSurfaceId);
   2826   EXPECT_EQ(static_cast<GLuint>(15), cmd.plane);
   2827   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2828 }
   2829 
   2830 TEST_F(GLES2FormatTest, CopyTextureCHROMIUM) {
   2831   cmds::CopyTextureCHROMIUM& cmd = *GetBufferAs<cmds::CopyTextureCHROMIUM>();
   2832   void* next_cmd = cmd.Set(&cmd,
   2833                            static_cast<GLenum>(11),
   2834                            static_cast<GLenum>(12),
   2835                            static_cast<GLenum>(13),
   2836                            static_cast<GLint>(14),
   2837                            static_cast<GLint>(15),
   2838                            static_cast<GLenum>(16));
   2839   EXPECT_EQ(static_cast<uint32_t>(cmds::CopyTextureCHROMIUM::kCmdId),
   2840             cmd.header.command);
   2841   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2842   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   2843   EXPECT_EQ(static_cast<GLenum>(12), cmd.source_id);
   2844   EXPECT_EQ(static_cast<GLenum>(13), cmd.dest_id);
   2845   EXPECT_EQ(static_cast<GLint>(14), cmd.level);
   2846   EXPECT_EQ(static_cast<GLint>(15), cmd.internalformat);
   2847   EXPECT_EQ(static_cast<GLenum>(16), cmd.dest_type);
   2848   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2849 }
   2850 
   2851 TEST_F(GLES2FormatTest, DrawArraysInstancedANGLE) {
   2852   cmds::DrawArraysInstancedANGLE& cmd =
   2853       *GetBufferAs<cmds::DrawArraysInstancedANGLE>();
   2854   void* next_cmd = cmd.Set(&cmd,
   2855                            static_cast<GLenum>(11),
   2856                            static_cast<GLint>(12),
   2857                            static_cast<GLsizei>(13),
   2858                            static_cast<GLsizei>(14));
   2859   EXPECT_EQ(static_cast<uint32_t>(cmds::DrawArraysInstancedANGLE::kCmdId),
   2860             cmd.header.command);
   2861   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2862   EXPECT_EQ(static_cast<GLenum>(11), cmd.mode);
   2863   EXPECT_EQ(static_cast<GLint>(12), cmd.first);
   2864   EXPECT_EQ(static_cast<GLsizei>(13), cmd.count);
   2865   EXPECT_EQ(static_cast<GLsizei>(14), cmd.primcount);
   2866   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2867 }
   2868 
   2869 TEST_F(GLES2FormatTest, DrawElementsInstancedANGLE) {
   2870   cmds::DrawElementsInstancedANGLE& cmd =
   2871       *GetBufferAs<cmds::DrawElementsInstancedANGLE>();
   2872   void* next_cmd = cmd.Set(&cmd,
   2873                            static_cast<GLenum>(11),
   2874                            static_cast<GLsizei>(12),
   2875                            static_cast<GLenum>(13),
   2876                            static_cast<GLuint>(14),
   2877                            static_cast<GLsizei>(15));
   2878   EXPECT_EQ(static_cast<uint32_t>(cmds::DrawElementsInstancedANGLE::kCmdId),
   2879             cmd.header.command);
   2880   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2881   EXPECT_EQ(static_cast<GLenum>(11), cmd.mode);
   2882   EXPECT_EQ(static_cast<GLsizei>(12), cmd.count);
   2883   EXPECT_EQ(static_cast<GLenum>(13), cmd.type);
   2884   EXPECT_EQ(static_cast<GLuint>(14), cmd.index_offset);
   2885   EXPECT_EQ(static_cast<GLsizei>(15), cmd.primcount);
   2886   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2887 }
   2888 
   2889 TEST_F(GLES2FormatTest, VertexAttribDivisorANGLE) {
   2890   cmds::VertexAttribDivisorANGLE& cmd =
   2891       *GetBufferAs<cmds::VertexAttribDivisorANGLE>();
   2892   void* next_cmd =
   2893       cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLuint>(12));
   2894   EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttribDivisorANGLE::kCmdId),
   2895             cmd.header.command);
   2896   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   2897   EXPECT_EQ(static_cast<GLuint>(11), cmd.index);
   2898   EXPECT_EQ(static_cast<GLuint>(12), cmd.divisor);
   2899   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   2900 }
   2901 
   2902 // TODO(gman): Write test for GenMailboxCHROMIUM
   2903 TEST_F(GLES2FormatTest, ProduceTextureCHROMIUMImmediate) {
   2904   const int kSomeBaseValueToTestWith = 51;
   2905   static GLbyte data[] = {
   2906       static_cast<GLbyte>(kSomeBaseValueToTestWith + 0),
   2907       static_cast<GLbyte>(kSomeBaseValueToTestWith + 1),
   2908       static_cast<GLbyte>(kSomeBaseValueToTestWith + 2),
   2909       static_cast<GLbyte>(kSomeBaseValueToTestWith + 3),
   2910       static_cast<GLbyte>(kSomeBaseValueToTestWith + 4),
   2911       static_cast<GLbyte>(kSomeBaseValueToTestWith + 5),
   2912       static_cast<GLbyte>(kSomeBaseValueToTestWith + 6),
   2913       static_cast<GLbyte>(kSomeBaseValueToTestWith + 7),
   2914       static_cast<GLbyte>(kSomeBaseValueToTestWith + 8),
   2915       static_cast<GLbyte>(kSomeBaseValueToTestWith + 9),
   2916       static_cast<GLbyte>(kSomeBaseValueToTestWith + 10),
   2917       static_cast<GLbyte>(kSomeBaseValueToTestWith + 11),
   2918       static_cast<GLbyte>(kSomeBaseValueToTestWith + 12),
   2919       static_cast<GLbyte>(kSomeBaseValueToTestWith + 13),
   2920       static_cast<GLbyte>(kSomeBaseValueToTestWith + 14),
   2921       static_cast<GLbyte>(kSomeBaseValueToTestWith + 15),
   2922       static_cast<GLbyte>(kSomeBaseValueToTestWith + 16),
   2923       static_cast<GLbyte>(kSomeBaseValueToTestWith + 17),
   2924       static_cast<GLbyte>(kSomeBaseValueToTestWith + 18),
   2925       static_cast<GLbyte>(kSomeBaseValueToTestWith + 19),
   2926       static_cast<GLbyte>(kSomeBaseValueToTestWith + 20),
   2927       static_cast<GLbyte>(kSomeBaseValueToTestWith + 21),
   2928       static_cast<GLbyte>(kSomeBaseValueToTestWith + 22),
   2929       static_cast<GLbyte>(kSomeBaseValueToTestWith + 23),
   2930       static_cast<GLbyte>(kSomeBaseValueToTestWith + 24),
   2931       static_cast<GLbyte>(kSomeBaseValueToTestWith + 25),
   2932       static_cast<GLbyte>(kSomeBaseValueToTestWith + 26),
   2933       static_cast<GLbyte>(kSomeBaseValueToTestWith + 27),
   2934       static_cast<GLbyte>(kSomeBaseValueToTestWith + 28),
   2935       static_cast<GLbyte>(kSomeBaseValueToTestWith + 29),
   2936       static_cast<GLbyte>(kSomeBaseValueToTestWith + 30),
   2937       static_cast<GLbyte>(kSomeBaseValueToTestWith + 31),
   2938       static_cast<GLbyte>(kSomeBaseValueToTestWith + 32),
   2939       static_cast<GLbyte>(kSomeBaseValueToTestWith + 33),
   2940       static_cast<GLbyte>(kSomeBaseValueToTestWith + 34),
   2941       static_cast<GLbyte>(kSomeBaseValueToTestWith + 35),
   2942       static_cast<GLbyte>(kSomeBaseValueToTestWith + 36),
   2943       static_cast<GLbyte>(kSomeBaseValueToTestWith + 37),
   2944       static_cast<GLbyte>(kSomeBaseValueToTestWith + 38),
   2945       static_cast<GLbyte>(kSomeBaseValueToTestWith + 39),
   2946       static_cast<GLbyte>(kSomeBaseValueToTestWith + 40),
   2947       static_cast<GLbyte>(kSomeBaseValueToTestWith + 41),
   2948       static_cast<GLbyte>(kSomeBaseValueToTestWith + 42),
   2949       static_cast<GLbyte>(kSomeBaseValueToTestWith + 43),
   2950       static_cast<GLbyte>(kSomeBaseValueToTestWith + 44),
   2951       static_cast<GLbyte>(kSomeBaseValueToTestWith + 45),
   2952       static_cast<GLbyte>(kSomeBaseValueToTestWith + 46),
   2953       static_cast<GLbyte>(kSomeBaseValueToTestWith + 47),
   2954       static_cast<GLbyte>(kSomeBaseValueToTestWith + 48),
   2955       static_cast<GLbyte>(kSomeBaseValueToTestWith + 49),
   2956       static_cast<GLbyte>(kSomeBaseValueToTestWith + 50),
   2957       static_cast<GLbyte>(kSomeBaseValueToTestWith + 51),
   2958       static_cast<GLbyte>(kSomeBaseValueToTestWith + 52),
   2959       static_cast<GLbyte>(kSomeBaseValueToTestWith + 53),
   2960       static_cast<GLbyte>(kSomeBaseValueToTestWith + 54),
   2961       static_cast<GLbyte>(kSomeBaseValueToTestWith + 55),
   2962       static_cast<GLbyte>(kSomeBaseValueToTestWith + 56),
   2963       static_cast<GLbyte>(kSomeBaseValueToTestWith + 57),
   2964       static_cast<GLbyte>(kSomeBaseValueToTestWith + 58),
   2965       static_cast<GLbyte>(kSomeBaseValueToTestWith + 59),
   2966       static_cast<GLbyte>(kSomeBaseValueToTestWith + 60),
   2967       static_cast<GLbyte>(kSomeBaseValueToTestWith + 61),
   2968       static_cast<GLbyte>(kSomeBaseValueToTestWith + 62),
   2969       static_cast<GLbyte>(kSomeBaseValueToTestWith + 63),
   2970   };
   2971   cmds::ProduceTextureCHROMIUMImmediate& cmd =
   2972       *GetBufferAs<cmds::ProduceTextureCHROMIUMImmediate>();
   2973   void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11), data);
   2974   EXPECT_EQ(
   2975       static_cast<uint32_t>(cmds::ProduceTextureCHROMIUMImmediate::kCmdId),
   2976       cmd.header.command);
   2977   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)),
   2978             cmd.header.size * 4u);
   2979   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   2980   CheckBytesWrittenMatchesExpectedSize(
   2981       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   2982   // TODO(gman): Check that data was inserted;
   2983 }
   2984 
   2985 TEST_F(GLES2FormatTest, ProduceTextureDirectCHROMIUMImmediate) {
   2986   const int kSomeBaseValueToTestWith = 51;
   2987   static GLbyte data[] = {
   2988       static_cast<GLbyte>(kSomeBaseValueToTestWith + 0),
   2989       static_cast<GLbyte>(kSomeBaseValueToTestWith + 1),
   2990       static_cast<GLbyte>(kSomeBaseValueToTestWith + 2),
   2991       static_cast<GLbyte>(kSomeBaseValueToTestWith + 3),
   2992       static_cast<GLbyte>(kSomeBaseValueToTestWith + 4),
   2993       static_cast<GLbyte>(kSomeBaseValueToTestWith + 5),
   2994       static_cast<GLbyte>(kSomeBaseValueToTestWith + 6),
   2995       static_cast<GLbyte>(kSomeBaseValueToTestWith + 7),
   2996       static_cast<GLbyte>(kSomeBaseValueToTestWith + 8),
   2997       static_cast<GLbyte>(kSomeBaseValueToTestWith + 9),
   2998       static_cast<GLbyte>(kSomeBaseValueToTestWith + 10),
   2999       static_cast<GLbyte>(kSomeBaseValueToTestWith + 11),
   3000       static_cast<GLbyte>(kSomeBaseValueToTestWith + 12),
   3001       static_cast<GLbyte>(kSomeBaseValueToTestWith + 13),
   3002       static_cast<GLbyte>(kSomeBaseValueToTestWith + 14),
   3003       static_cast<GLbyte>(kSomeBaseValueToTestWith + 15),
   3004       static_cast<GLbyte>(kSomeBaseValueToTestWith + 16),
   3005       static_cast<GLbyte>(kSomeBaseValueToTestWith + 17),
   3006       static_cast<GLbyte>(kSomeBaseValueToTestWith + 18),
   3007       static_cast<GLbyte>(kSomeBaseValueToTestWith + 19),
   3008       static_cast<GLbyte>(kSomeBaseValueToTestWith + 20),
   3009       static_cast<GLbyte>(kSomeBaseValueToTestWith + 21),
   3010       static_cast<GLbyte>(kSomeBaseValueToTestWith + 22),
   3011       static_cast<GLbyte>(kSomeBaseValueToTestWith + 23),
   3012       static_cast<GLbyte>(kSomeBaseValueToTestWith + 24),
   3013       static_cast<GLbyte>(kSomeBaseValueToTestWith + 25),
   3014       static_cast<GLbyte>(kSomeBaseValueToTestWith + 26),
   3015       static_cast<GLbyte>(kSomeBaseValueToTestWith + 27),
   3016       static_cast<GLbyte>(kSomeBaseValueToTestWith + 28),
   3017       static_cast<GLbyte>(kSomeBaseValueToTestWith + 29),
   3018       static_cast<GLbyte>(kSomeBaseValueToTestWith + 30),
   3019       static_cast<GLbyte>(kSomeBaseValueToTestWith + 31),
   3020       static_cast<GLbyte>(kSomeBaseValueToTestWith + 32),
   3021       static_cast<GLbyte>(kSomeBaseValueToTestWith + 33),
   3022       static_cast<GLbyte>(kSomeBaseValueToTestWith + 34),
   3023       static_cast<GLbyte>(kSomeBaseValueToTestWith + 35),
   3024       static_cast<GLbyte>(kSomeBaseValueToTestWith + 36),
   3025       static_cast<GLbyte>(kSomeBaseValueToTestWith + 37),
   3026       static_cast<GLbyte>(kSomeBaseValueToTestWith + 38),
   3027       static_cast<GLbyte>(kSomeBaseValueToTestWith + 39),
   3028       static_cast<GLbyte>(kSomeBaseValueToTestWith + 40),
   3029       static_cast<GLbyte>(kSomeBaseValueToTestWith + 41),
   3030       static_cast<GLbyte>(kSomeBaseValueToTestWith + 42),
   3031       static_cast<GLbyte>(kSomeBaseValueToTestWith + 43),
   3032       static_cast<GLbyte>(kSomeBaseValueToTestWith + 44),
   3033       static_cast<GLbyte>(kSomeBaseValueToTestWith + 45),
   3034       static_cast<GLbyte>(kSomeBaseValueToTestWith + 46),
   3035       static_cast<GLbyte>(kSomeBaseValueToTestWith + 47),
   3036       static_cast<GLbyte>(kSomeBaseValueToTestWith + 48),
   3037       static_cast<GLbyte>(kSomeBaseValueToTestWith + 49),
   3038       static_cast<GLbyte>(kSomeBaseValueToTestWith + 50),
   3039       static_cast<GLbyte>(kSomeBaseValueToTestWith + 51),
   3040       static_cast<GLbyte>(kSomeBaseValueToTestWith + 52),
   3041       static_cast<GLbyte>(kSomeBaseValueToTestWith + 53),
   3042       static_cast<GLbyte>(kSomeBaseValueToTestWith + 54),
   3043       static_cast<GLbyte>(kSomeBaseValueToTestWith + 55),
   3044       static_cast<GLbyte>(kSomeBaseValueToTestWith + 56),
   3045       static_cast<GLbyte>(kSomeBaseValueToTestWith + 57),
   3046       static_cast<GLbyte>(kSomeBaseValueToTestWith + 58),
   3047       static_cast<GLbyte>(kSomeBaseValueToTestWith + 59),
   3048       static_cast<GLbyte>(kSomeBaseValueToTestWith + 60),
   3049       static_cast<GLbyte>(kSomeBaseValueToTestWith + 61),
   3050       static_cast<GLbyte>(kSomeBaseValueToTestWith + 62),
   3051       static_cast<GLbyte>(kSomeBaseValueToTestWith + 63),
   3052   };
   3053   cmds::ProduceTextureDirectCHROMIUMImmediate& cmd =
   3054       *GetBufferAs<cmds::ProduceTextureDirectCHROMIUMImmediate>();
   3055   void* next_cmd =
   3056       cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLenum>(12), data);
   3057   EXPECT_EQ(static_cast<uint32_t>(
   3058                 cmds::ProduceTextureDirectCHROMIUMImmediate::kCmdId),
   3059             cmd.header.command);
   3060   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)),
   3061             cmd.header.size * 4u);
   3062   EXPECT_EQ(static_cast<GLuint>(11), cmd.texture);
   3063   EXPECT_EQ(static_cast<GLenum>(12), cmd.target);
   3064   CheckBytesWrittenMatchesExpectedSize(
   3065       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   3066   // TODO(gman): Check that data was inserted;
   3067 }
   3068 
   3069 TEST_F(GLES2FormatTest, ConsumeTextureCHROMIUMImmediate) {
   3070   const int kSomeBaseValueToTestWith = 51;
   3071   static GLbyte data[] = {
   3072       static_cast<GLbyte>(kSomeBaseValueToTestWith + 0),
   3073       static_cast<GLbyte>(kSomeBaseValueToTestWith + 1),
   3074       static_cast<GLbyte>(kSomeBaseValueToTestWith + 2),
   3075       static_cast<GLbyte>(kSomeBaseValueToTestWith + 3),
   3076       static_cast<GLbyte>(kSomeBaseValueToTestWith + 4),
   3077       static_cast<GLbyte>(kSomeBaseValueToTestWith + 5),
   3078       static_cast<GLbyte>(kSomeBaseValueToTestWith + 6),
   3079       static_cast<GLbyte>(kSomeBaseValueToTestWith + 7),
   3080       static_cast<GLbyte>(kSomeBaseValueToTestWith + 8),
   3081       static_cast<GLbyte>(kSomeBaseValueToTestWith + 9),
   3082       static_cast<GLbyte>(kSomeBaseValueToTestWith + 10),
   3083       static_cast<GLbyte>(kSomeBaseValueToTestWith + 11),
   3084       static_cast<GLbyte>(kSomeBaseValueToTestWith + 12),
   3085       static_cast<GLbyte>(kSomeBaseValueToTestWith + 13),
   3086       static_cast<GLbyte>(kSomeBaseValueToTestWith + 14),
   3087       static_cast<GLbyte>(kSomeBaseValueToTestWith + 15),
   3088       static_cast<GLbyte>(kSomeBaseValueToTestWith + 16),
   3089       static_cast<GLbyte>(kSomeBaseValueToTestWith + 17),
   3090       static_cast<GLbyte>(kSomeBaseValueToTestWith + 18),
   3091       static_cast<GLbyte>(kSomeBaseValueToTestWith + 19),
   3092       static_cast<GLbyte>(kSomeBaseValueToTestWith + 20),
   3093       static_cast<GLbyte>(kSomeBaseValueToTestWith + 21),
   3094       static_cast<GLbyte>(kSomeBaseValueToTestWith + 22),
   3095       static_cast<GLbyte>(kSomeBaseValueToTestWith + 23),
   3096       static_cast<GLbyte>(kSomeBaseValueToTestWith + 24),
   3097       static_cast<GLbyte>(kSomeBaseValueToTestWith + 25),
   3098       static_cast<GLbyte>(kSomeBaseValueToTestWith + 26),
   3099       static_cast<GLbyte>(kSomeBaseValueToTestWith + 27),
   3100       static_cast<GLbyte>(kSomeBaseValueToTestWith + 28),
   3101       static_cast<GLbyte>(kSomeBaseValueToTestWith + 29),
   3102       static_cast<GLbyte>(kSomeBaseValueToTestWith + 30),
   3103       static_cast<GLbyte>(kSomeBaseValueToTestWith + 31),
   3104       static_cast<GLbyte>(kSomeBaseValueToTestWith + 32),
   3105       static_cast<GLbyte>(kSomeBaseValueToTestWith + 33),
   3106       static_cast<GLbyte>(kSomeBaseValueToTestWith + 34),
   3107       static_cast<GLbyte>(kSomeBaseValueToTestWith + 35),
   3108       static_cast<GLbyte>(kSomeBaseValueToTestWith + 36),
   3109       static_cast<GLbyte>(kSomeBaseValueToTestWith + 37),
   3110       static_cast<GLbyte>(kSomeBaseValueToTestWith + 38),
   3111       static_cast<GLbyte>(kSomeBaseValueToTestWith + 39),
   3112       static_cast<GLbyte>(kSomeBaseValueToTestWith + 40),
   3113       static_cast<GLbyte>(kSomeBaseValueToTestWith + 41),
   3114       static_cast<GLbyte>(kSomeBaseValueToTestWith + 42),
   3115       static_cast<GLbyte>(kSomeBaseValueToTestWith + 43),
   3116       static_cast<GLbyte>(kSomeBaseValueToTestWith + 44),
   3117       static_cast<GLbyte>(kSomeBaseValueToTestWith + 45),
   3118       static_cast<GLbyte>(kSomeBaseValueToTestWith + 46),
   3119       static_cast<GLbyte>(kSomeBaseValueToTestWith + 47),
   3120       static_cast<GLbyte>(kSomeBaseValueToTestWith + 48),
   3121       static_cast<GLbyte>(kSomeBaseValueToTestWith + 49),
   3122       static_cast<GLbyte>(kSomeBaseValueToTestWith + 50),
   3123       static_cast<GLbyte>(kSomeBaseValueToTestWith + 51),
   3124       static_cast<GLbyte>(kSomeBaseValueToTestWith + 52),
   3125       static_cast<GLbyte>(kSomeBaseValueToTestWith + 53),
   3126       static_cast<GLbyte>(kSomeBaseValueToTestWith + 54),
   3127       static_cast<GLbyte>(kSomeBaseValueToTestWith + 55),
   3128       static_cast<GLbyte>(kSomeBaseValueToTestWith + 56),
   3129       static_cast<GLbyte>(kSomeBaseValueToTestWith + 57),
   3130       static_cast<GLbyte>(kSomeBaseValueToTestWith + 58),
   3131       static_cast<GLbyte>(kSomeBaseValueToTestWith + 59),
   3132       static_cast<GLbyte>(kSomeBaseValueToTestWith + 60),
   3133       static_cast<GLbyte>(kSomeBaseValueToTestWith + 61),
   3134       static_cast<GLbyte>(kSomeBaseValueToTestWith + 62),
   3135       static_cast<GLbyte>(kSomeBaseValueToTestWith + 63),
   3136   };
   3137   cmds::ConsumeTextureCHROMIUMImmediate& cmd =
   3138       *GetBufferAs<cmds::ConsumeTextureCHROMIUMImmediate>();
   3139   void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11), data);
   3140   EXPECT_EQ(
   3141       static_cast<uint32_t>(cmds::ConsumeTextureCHROMIUMImmediate::kCmdId),
   3142       cmd.header.command);
   3143   EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)),
   3144             cmd.header.size * 4u);
   3145   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   3146   CheckBytesWrittenMatchesExpectedSize(
   3147       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   3148   // TODO(gman): Check that data was inserted;
   3149 }
   3150 
   3151 // TODO(gman): Write test for CreateAndConsumeTextureCHROMIUMImmediate
   3152 TEST_F(GLES2FormatTest, BindUniformLocationCHROMIUMBucket) {
   3153   cmds::BindUniformLocationCHROMIUMBucket& cmd =
   3154       *GetBufferAs<cmds::BindUniformLocationCHROMIUMBucket>();
   3155   void* next_cmd = cmd.Set(&cmd,
   3156                            static_cast<GLuint>(11),
   3157                            static_cast<GLint>(12),
   3158                            static_cast<uint32_t>(13));
   3159   EXPECT_EQ(
   3160       static_cast<uint32_t>(cmds::BindUniformLocationCHROMIUMBucket::kCmdId),
   3161       cmd.header.command);
   3162   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   3163   EXPECT_EQ(static_cast<GLuint>(11), cmd.program);
   3164   EXPECT_EQ(static_cast<GLint>(12), cmd.location);
   3165   EXPECT_EQ(static_cast<uint32_t>(13), cmd.name_bucket_id);
   3166   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   3167 }
   3168 
   3169 TEST_F(GLES2FormatTest, BindTexImage2DCHROMIUM) {
   3170   cmds::BindTexImage2DCHROMIUM& cmd =
   3171       *GetBufferAs<cmds::BindTexImage2DCHROMIUM>();
   3172   void* next_cmd =
   3173       cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLint>(12));
   3174   EXPECT_EQ(static_cast<uint32_t>(cmds::BindTexImage2DCHROMIUM::kCmdId),
   3175             cmd.header.command);
   3176   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   3177   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   3178   EXPECT_EQ(static_cast<GLint>(12), cmd.imageId);
   3179   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   3180 }
   3181 
   3182 TEST_F(GLES2FormatTest, ReleaseTexImage2DCHROMIUM) {
   3183   cmds::ReleaseTexImage2DCHROMIUM& cmd =
   3184       *GetBufferAs<cmds::ReleaseTexImage2DCHROMIUM>();
   3185   void* next_cmd =
   3186       cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLint>(12));
   3187   EXPECT_EQ(static_cast<uint32_t>(cmds::ReleaseTexImage2DCHROMIUM::kCmdId),
   3188             cmd.header.command);
   3189   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   3190   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   3191   EXPECT_EQ(static_cast<GLint>(12), cmd.imageId);
   3192   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   3193 }
   3194 
   3195 TEST_F(GLES2FormatTest, TraceBeginCHROMIUM) {
   3196   cmds::TraceBeginCHROMIUM& cmd = *GetBufferAs<cmds::TraceBeginCHROMIUM>();
   3197   void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11));
   3198   EXPECT_EQ(static_cast<uint32_t>(cmds::TraceBeginCHROMIUM::kCmdId),
   3199             cmd.header.command);
   3200   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   3201   EXPECT_EQ(static_cast<GLuint>(11), cmd.bucket_id);
   3202   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   3203 }
   3204 
   3205 TEST_F(GLES2FormatTest, TraceEndCHROMIUM) {
   3206   cmds::TraceEndCHROMIUM& cmd = *GetBufferAs<cmds::TraceEndCHROMIUM>();
   3207   void* next_cmd = cmd.Set(&cmd);
   3208   EXPECT_EQ(static_cast<uint32_t>(cmds::TraceEndCHROMIUM::kCmdId),
   3209             cmd.header.command);
   3210   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   3211   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   3212 }
   3213 
   3214 TEST_F(GLES2FormatTest, AsyncTexSubImage2DCHROMIUM) {
   3215   cmds::AsyncTexSubImage2DCHROMIUM& cmd =
   3216       *GetBufferAs<cmds::AsyncTexSubImage2DCHROMIUM>();
   3217   void* next_cmd = cmd.Set(&cmd,
   3218                            static_cast<GLenum>(11),
   3219                            static_cast<GLint>(12),
   3220                            static_cast<GLint>(13),
   3221                            static_cast<GLint>(14),
   3222                            static_cast<GLsizei>(15),
   3223                            static_cast<GLsizei>(16),
   3224                            static_cast<GLenum>(17),
   3225                            static_cast<GLenum>(18),
   3226                            static_cast<uint32_t>(19),
   3227                            static_cast<uint32_t>(20),
   3228                            static_cast<uint32_t>(21),
   3229                            static_cast<uint32_t>(22),
   3230                            static_cast<uint32_t>(23));
   3231   EXPECT_EQ(static_cast<uint32_t>(cmds::AsyncTexSubImage2DCHROMIUM::kCmdId),
   3232             cmd.header.command);
   3233   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   3234   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   3235   EXPECT_EQ(static_cast<GLint>(12), cmd.level);
   3236   EXPECT_EQ(static_cast<GLint>(13), cmd.xoffset);
   3237   EXPECT_EQ(static_cast<GLint>(14), cmd.yoffset);
   3238   EXPECT_EQ(static_cast<GLsizei>(15), cmd.width);
   3239   EXPECT_EQ(static_cast<GLsizei>(16), cmd.height);
   3240   EXPECT_EQ(static_cast<GLenum>(17), cmd.format);
   3241   EXPECT_EQ(static_cast<GLenum>(18), cmd.type);
   3242   EXPECT_EQ(static_cast<uint32_t>(19), cmd.data_shm_id);
   3243   EXPECT_EQ(static_cast<uint32_t>(20), cmd.data_shm_offset);
   3244   EXPECT_EQ(static_cast<uint32_t>(21), cmd.async_upload_token);
   3245   EXPECT_EQ(static_cast<uint32_t>(22), cmd.sync_data_shm_id);
   3246   EXPECT_EQ(static_cast<uint32_t>(23), cmd.sync_data_shm_offset);
   3247   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   3248 }
   3249 
   3250 TEST_F(GLES2FormatTest, AsyncTexImage2DCHROMIUM) {
   3251   cmds::AsyncTexImage2DCHROMIUM& cmd =
   3252       *GetBufferAs<cmds::AsyncTexImage2DCHROMIUM>();
   3253   void* next_cmd = cmd.Set(&cmd,
   3254                            static_cast<GLenum>(11),
   3255                            static_cast<GLint>(12),
   3256                            static_cast<GLint>(13),
   3257                            static_cast<GLsizei>(14),
   3258                            static_cast<GLsizei>(15),
   3259                            static_cast<GLenum>(16),
   3260                            static_cast<GLenum>(17),
   3261                            static_cast<uint32_t>(18),
   3262                            static_cast<uint32_t>(19),
   3263                            static_cast<uint32_t>(20),
   3264                            static_cast<uint32_t>(21),
   3265                            static_cast<uint32_t>(22));
   3266   EXPECT_EQ(static_cast<uint32_t>(cmds::AsyncTexImage2DCHROMIUM::kCmdId),
   3267             cmd.header.command);
   3268   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   3269   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   3270   EXPECT_EQ(static_cast<GLint>(12), cmd.level);
   3271   EXPECT_EQ(static_cast<GLint>(13), cmd.internalformat);
   3272   EXPECT_EQ(static_cast<GLsizei>(14), cmd.width);
   3273   EXPECT_EQ(static_cast<GLsizei>(15), cmd.height);
   3274   EXPECT_EQ(static_cast<GLenum>(16), cmd.format);
   3275   EXPECT_EQ(static_cast<GLenum>(17), cmd.type);
   3276   EXPECT_EQ(static_cast<uint32_t>(18), cmd.pixels_shm_id);
   3277   EXPECT_EQ(static_cast<uint32_t>(19), cmd.pixels_shm_offset);
   3278   EXPECT_EQ(static_cast<uint32_t>(20), cmd.async_upload_token);
   3279   EXPECT_EQ(static_cast<uint32_t>(21), cmd.sync_data_shm_id);
   3280   EXPECT_EQ(static_cast<uint32_t>(22), cmd.sync_data_shm_offset);
   3281   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   3282 }
   3283 
   3284 TEST_F(GLES2FormatTest, WaitAsyncTexImage2DCHROMIUM) {
   3285   cmds::WaitAsyncTexImage2DCHROMIUM& cmd =
   3286       *GetBufferAs<cmds::WaitAsyncTexImage2DCHROMIUM>();
   3287   void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11));
   3288   EXPECT_EQ(static_cast<uint32_t>(cmds::WaitAsyncTexImage2DCHROMIUM::kCmdId),
   3289             cmd.header.command);
   3290   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   3291   EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
   3292   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   3293 }
   3294 
   3295 TEST_F(GLES2FormatTest, WaitAllAsyncTexImage2DCHROMIUM) {
   3296   cmds::WaitAllAsyncTexImage2DCHROMIUM& cmd =
   3297       *GetBufferAs<cmds::WaitAllAsyncTexImage2DCHROMIUM>();
   3298   void* next_cmd = cmd.Set(&cmd);
   3299   EXPECT_EQ(static_cast<uint32_t>(cmds::WaitAllAsyncTexImage2DCHROMIUM::kCmdId),
   3300             cmd.header.command);
   3301   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   3302   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   3303 }
   3304 
   3305 TEST_F(GLES2FormatTest, DiscardFramebufferEXTImmediate) {
   3306   const int kSomeBaseValueToTestWith = 51;
   3307   static GLenum data[] = {
   3308       static_cast<GLenum>(kSomeBaseValueToTestWith + 0),
   3309       static_cast<GLenum>(kSomeBaseValueToTestWith + 1),
   3310   };
   3311   cmds::DiscardFramebufferEXTImmediate& cmd =
   3312       *GetBufferAs<cmds::DiscardFramebufferEXTImmediate>();
   3313   const GLsizei kNumElements = 2;
   3314   const size_t kExpectedCmdSize =
   3315       sizeof(cmd) + kNumElements * sizeof(GLenum) * 1;
   3316   void* next_cmd =
   3317       cmd.Set(&cmd, static_cast<GLenum>(1), static_cast<GLsizei>(2), data);
   3318   EXPECT_EQ(static_cast<uint32_t>(cmds::DiscardFramebufferEXTImmediate::kCmdId),
   3319             cmd.header.command);
   3320   EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
   3321   EXPECT_EQ(static_cast<GLenum>(1), cmd.target);
   3322   EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
   3323   CheckBytesWrittenMatchesExpectedSize(
   3324       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   3325   // TODO(gman): Check that data was inserted;
   3326 }
   3327 
   3328 TEST_F(GLES2FormatTest, LoseContextCHROMIUM) {
   3329   cmds::LoseContextCHROMIUM& cmd = *GetBufferAs<cmds::LoseContextCHROMIUM>();
   3330   void* next_cmd =
   3331       cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12));
   3332   EXPECT_EQ(static_cast<uint32_t>(cmds::LoseContextCHROMIUM::kCmdId),
   3333             cmd.header.command);
   3334   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   3335   EXPECT_EQ(static_cast<GLenum>(11), cmd.current);
   3336   EXPECT_EQ(static_cast<GLenum>(12), cmd.other);
   3337   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   3338 }
   3339 
   3340 // TODO(gman): Write test for InsertSyncPointCHROMIUM
   3341 TEST_F(GLES2FormatTest, WaitSyncPointCHROMIUM) {
   3342   cmds::WaitSyncPointCHROMIUM& cmd =
   3343       *GetBufferAs<cmds::WaitSyncPointCHROMIUM>();
   3344   void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11));
   3345   EXPECT_EQ(static_cast<uint32_t>(cmds::WaitSyncPointCHROMIUM::kCmdId),
   3346             cmd.header.command);
   3347   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   3348   EXPECT_EQ(static_cast<GLuint>(11), cmd.sync_point);
   3349   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   3350 }
   3351 
   3352 TEST_F(GLES2FormatTest, DrawBuffersEXTImmediate) {
   3353   const int kSomeBaseValueToTestWith = 51;
   3354   static GLenum data[] = {
   3355       static_cast<GLenum>(kSomeBaseValueToTestWith + 0),
   3356   };
   3357   cmds::DrawBuffersEXTImmediate& cmd =
   3358       *GetBufferAs<cmds::DrawBuffersEXTImmediate>();
   3359   const GLsizei kNumElements = 1;
   3360   const size_t kExpectedCmdSize =
   3361       sizeof(cmd) + kNumElements * sizeof(GLenum) * 1;
   3362   void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(1), data);
   3363   EXPECT_EQ(static_cast<uint32_t>(cmds::DrawBuffersEXTImmediate::kCmdId),
   3364             cmd.header.command);
   3365   EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
   3366   EXPECT_EQ(static_cast<GLsizei>(1), cmd.count);
   3367   CheckBytesWrittenMatchesExpectedSize(
   3368       next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
   3369   // TODO(gman): Check that data was inserted;
   3370 }
   3371 
   3372 TEST_F(GLES2FormatTest, DiscardBackbufferCHROMIUM) {
   3373   cmds::DiscardBackbufferCHROMIUM& cmd =
   3374       *GetBufferAs<cmds::DiscardBackbufferCHROMIUM>();
   3375   void* next_cmd = cmd.Set(&cmd);
   3376   EXPECT_EQ(static_cast<uint32_t>(cmds::DiscardBackbufferCHROMIUM::kCmdId),
   3377             cmd.header.command);
   3378   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   3379   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   3380 }
   3381 
   3382 TEST_F(GLES2FormatTest, ScheduleOverlayPlaneCHROMIUM) {
   3383   cmds::ScheduleOverlayPlaneCHROMIUM& cmd =
   3384       *GetBufferAs<cmds::ScheduleOverlayPlaneCHROMIUM>();
   3385   void* next_cmd = cmd.Set(&cmd,
   3386                            static_cast<GLint>(11),
   3387                            static_cast<GLenum>(12),
   3388                            static_cast<GLuint>(13),
   3389                            static_cast<GLint>(14),
   3390                            static_cast<GLint>(15),
   3391                            static_cast<GLint>(16),
   3392                            static_cast<GLint>(17),
   3393                            static_cast<GLfloat>(18),
   3394                            static_cast<GLfloat>(19),
   3395                            static_cast<GLfloat>(20),
   3396                            static_cast<GLfloat>(21));
   3397   EXPECT_EQ(static_cast<uint32_t>(cmds::ScheduleOverlayPlaneCHROMIUM::kCmdId),
   3398             cmd.header.command);
   3399   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   3400   EXPECT_EQ(static_cast<GLint>(11), cmd.plane_z_order);
   3401   EXPECT_EQ(static_cast<GLenum>(12), cmd.plane_transform);
   3402   EXPECT_EQ(static_cast<GLuint>(13), cmd.overlay_texture_id);
   3403   EXPECT_EQ(static_cast<GLint>(14), cmd.bounds_x);
   3404   EXPECT_EQ(static_cast<GLint>(15), cmd.bounds_y);
   3405   EXPECT_EQ(static_cast<GLint>(16), cmd.bounds_width);
   3406   EXPECT_EQ(static_cast<GLint>(17), cmd.bounds_height);
   3407   EXPECT_EQ(static_cast<GLfloat>(18), cmd.uv_x);
   3408   EXPECT_EQ(static_cast<GLfloat>(19), cmd.uv_y);
   3409   EXPECT_EQ(static_cast<GLfloat>(20), cmd.uv_width);
   3410   EXPECT_EQ(static_cast<GLfloat>(21), cmd.uv_height);
   3411   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
   3412 }
   3413 
   3414 #endif  // GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_FORMAT_TEST_AUTOGEN_H_
   3415