Home | History | Annotate | Download | only in service
      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 // It is included by gles2_cmd_decoder_unittest_2.cc
     12 #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_
     13 #define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_
     14 
     15 TEST_P(GLES2DecoderTest2, ScissorValidArgs) {
     16   EXPECT_CALL(*gl_, Scissor(1, 2, 3, 4));
     17   SpecializedSetup<cmds::Scissor, 0>(true);
     18   cmds::Scissor cmd;
     19   cmd.Init(1, 2, 3, 4);
     20   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
     21   EXPECT_EQ(GL_NO_ERROR, GetGLError());
     22 }
     23 
     24 TEST_P(GLES2DecoderTest2, ScissorInvalidArgs2_0) {
     25   EXPECT_CALL(*gl_, Scissor(_, _, _, _)).Times(0);
     26   SpecializedSetup<cmds::Scissor, 0>(false);
     27   cmds::Scissor cmd;
     28   cmd.Init(1, 2, -1, 4);
     29   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
     30   EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
     31 }
     32 
     33 TEST_P(GLES2DecoderTest2, ScissorInvalidArgs3_0) {
     34   EXPECT_CALL(*gl_, Scissor(_, _, _, _)).Times(0);
     35   SpecializedSetup<cmds::Scissor, 0>(false);
     36   cmds::Scissor cmd;
     37   cmd.Init(1, 2, 3, -1);
     38   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
     39   EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
     40 }
     41 // TODO(gman): ShaderBinary
     42 
     43 // TODO(gman): ShaderSourceBucket
     44 
     45 TEST_P(GLES2DecoderTest2, StencilFuncValidArgs) {
     46   EXPECT_CALL(*gl_, StencilFunc(GL_NEVER, 2, 3));
     47   SpecializedSetup<cmds::StencilFunc, 0>(true);
     48   cmds::StencilFunc cmd;
     49   cmd.Init(GL_NEVER, 2, 3);
     50   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
     51   EXPECT_EQ(GL_NO_ERROR, GetGLError());
     52 }
     53 
     54 TEST_P(GLES2DecoderTest2, StencilFuncSeparateValidArgs) {
     55   EXPECT_CALL(*gl_, StencilFuncSeparate(GL_FRONT, GL_NEVER, 3, 4));
     56   SpecializedSetup<cmds::StencilFuncSeparate, 0>(true);
     57   cmds::StencilFuncSeparate cmd;
     58   cmd.Init(GL_FRONT, GL_NEVER, 3, 4);
     59   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
     60   EXPECT_EQ(GL_NO_ERROR, GetGLError());
     61 }
     62 
     63 TEST_P(GLES2DecoderTest2, StencilMaskValidArgs) {
     64   SpecializedSetup<cmds::StencilMask, 0>(true);
     65   cmds::StencilMask cmd;
     66   cmd.Init(1);
     67   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
     68   EXPECT_EQ(GL_NO_ERROR, GetGLError());
     69 }
     70 
     71 TEST_P(GLES2DecoderTest2, StencilMaskSeparateValidArgs) {
     72   SpecializedSetup<cmds::StencilMaskSeparate, 0>(true);
     73   cmds::StencilMaskSeparate cmd;
     74   cmd.Init(GL_FRONT, 2);
     75   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
     76   EXPECT_EQ(GL_NO_ERROR, GetGLError());
     77 }
     78 
     79 TEST_P(GLES2DecoderTest2, StencilOpValidArgs) {
     80   EXPECT_CALL(*gl_, StencilOp(GL_KEEP, GL_INCR, GL_KEEP));
     81   SpecializedSetup<cmds::StencilOp, 0>(true);
     82   cmds::StencilOp cmd;
     83   cmd.Init(GL_KEEP, GL_INCR, GL_KEEP);
     84   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
     85   EXPECT_EQ(GL_NO_ERROR, GetGLError());
     86 }
     87 
     88 TEST_P(GLES2DecoderTest2, StencilOpSeparateValidArgs) {
     89   EXPECT_CALL(*gl_, StencilOpSeparate(GL_FRONT, GL_INCR, GL_KEEP, GL_KEEP));
     90   SpecializedSetup<cmds::StencilOpSeparate, 0>(true);
     91   cmds::StencilOpSeparate cmd;
     92   cmd.Init(GL_FRONT, GL_INCR, GL_KEEP, GL_KEEP);
     93   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
     94   EXPECT_EQ(GL_NO_ERROR, GetGLError());
     95 }
     96 // TODO(gman): TexImage2D
     97 
     98 TEST_P(GLES2DecoderTest2, TexParameterfValidArgs) {
     99   EXPECT_CALL(*gl_,
    100               TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST));
    101   SpecializedSetup<cmds::TexParameterf, 0>(true);
    102   cmds::TexParameterf cmd;
    103   cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    104   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    105   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    106 }
    107 
    108 TEST_P(GLES2DecoderTest2, TexParameterfInvalidArgs0_0) {
    109   EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
    110   SpecializedSetup<cmds::TexParameterf, 0>(false);
    111   cmds::TexParameterf cmd;
    112   cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    113   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    114   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
    115 }
    116 
    117 TEST_P(GLES2DecoderTest2, TexParameterfInvalidArgs0_1) {
    118   EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
    119   SpecializedSetup<cmds::TexParameterf, 0>(false);
    120   cmds::TexParameterf cmd;
    121   cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    122   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    123   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
    124 }
    125 
    126 TEST_P(GLES2DecoderTest2, TexParameterfInvalidArgs1_0) {
    127   EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
    128   SpecializedSetup<cmds::TexParameterf, 0>(false);
    129   cmds::TexParameterf cmd;
    130   cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_NEAREST);
    131   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    132   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
    133 }
    134 
    135 TEST_P(GLES2DecoderTest2, TexParameterfvImmediateValidArgs) {
    136   cmds::TexParameterfvImmediate& cmd =
    137       *GetImmediateAs<cmds::TexParameterfvImmediate>();
    138   SpecializedSetup<cmds::TexParameterfvImmediate, 0>(true);
    139   GLfloat temp[1] = {
    140       GL_NEAREST,
    141   };
    142   cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]);
    143   EXPECT_CALL(
    144       *gl_,
    145       TexParameterf(GL_TEXTURE_2D,
    146                     GL_TEXTURE_MAG_FILTER,
    147                     *reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
    148   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    149   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    150 }
    151 
    152 TEST_P(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs0_0) {
    153   cmds::TexParameterfvImmediate& cmd =
    154       *GetImmediateAs<cmds::TexParameterfvImmediate>();
    155   EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
    156   SpecializedSetup<cmds::TexParameterfvImmediate, 0>(false);
    157   GLfloat temp[1] = {
    158       GL_NEAREST,
    159   };
    160   cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, &temp[0]);
    161   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    162   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
    163 }
    164 
    165 TEST_P(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs0_1) {
    166   cmds::TexParameterfvImmediate& cmd =
    167       *GetImmediateAs<cmds::TexParameterfvImmediate>();
    168   EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
    169   SpecializedSetup<cmds::TexParameterfvImmediate, 0>(false);
    170   GLfloat temp[1] = {
    171       GL_NEAREST,
    172   };
    173   cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, &temp[0]);
    174   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    175   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
    176 }
    177 
    178 TEST_P(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs1_0) {
    179   cmds::TexParameterfvImmediate& cmd =
    180       *GetImmediateAs<cmds::TexParameterfvImmediate>();
    181   EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
    182   SpecializedSetup<cmds::TexParameterfvImmediate, 0>(false);
    183   GLfloat temp[1] = {
    184       GL_NEAREST,
    185   };
    186   cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, &temp[0]);
    187   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    188   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
    189 }
    190 
    191 TEST_P(GLES2DecoderTest2, TexParameteriValidArgs) {
    192   EXPECT_CALL(*gl_,
    193               TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST));
    194   SpecializedSetup<cmds::TexParameteri, 0>(true);
    195   cmds::TexParameteri cmd;
    196   cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    197   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    198   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    199 }
    200 
    201 TEST_P(GLES2DecoderTest2, TexParameteriInvalidArgs0_0) {
    202   EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
    203   SpecializedSetup<cmds::TexParameteri, 0>(false);
    204   cmds::TexParameteri cmd;
    205   cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    206   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    207   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
    208 }
    209 
    210 TEST_P(GLES2DecoderTest2, TexParameteriInvalidArgs0_1) {
    211   EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
    212   SpecializedSetup<cmds::TexParameteri, 0>(false);
    213   cmds::TexParameteri cmd;
    214   cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    215   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    216   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
    217 }
    218 
    219 TEST_P(GLES2DecoderTest2, TexParameteriInvalidArgs1_0) {
    220   EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
    221   SpecializedSetup<cmds::TexParameteri, 0>(false);
    222   cmds::TexParameteri cmd;
    223   cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_NEAREST);
    224   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    225   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
    226 }
    227 
    228 TEST_P(GLES2DecoderTest2, TexParameterivImmediateValidArgs) {
    229   cmds::TexParameterivImmediate& cmd =
    230       *GetImmediateAs<cmds::TexParameterivImmediate>();
    231   SpecializedSetup<cmds::TexParameterivImmediate, 0>(true);
    232   GLint temp[1] = {
    233       GL_NEAREST,
    234   };
    235   cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]);
    236   EXPECT_CALL(
    237       *gl_,
    238       TexParameteri(GL_TEXTURE_2D,
    239                     GL_TEXTURE_MAG_FILTER,
    240                     *reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
    241   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    242   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    243 }
    244 
    245 TEST_P(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs0_0) {
    246   cmds::TexParameterivImmediate& cmd =
    247       *GetImmediateAs<cmds::TexParameterivImmediate>();
    248   EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
    249   SpecializedSetup<cmds::TexParameterivImmediate, 0>(false);
    250   GLint temp[1] = {
    251       GL_NEAREST,
    252   };
    253   cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, &temp[0]);
    254   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    255   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
    256 }
    257 
    258 TEST_P(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs0_1) {
    259   cmds::TexParameterivImmediate& cmd =
    260       *GetImmediateAs<cmds::TexParameterivImmediate>();
    261   EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
    262   SpecializedSetup<cmds::TexParameterivImmediate, 0>(false);
    263   GLint temp[1] = {
    264       GL_NEAREST,
    265   };
    266   cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, &temp[0]);
    267   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    268   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
    269 }
    270 
    271 TEST_P(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs1_0) {
    272   cmds::TexParameterivImmediate& cmd =
    273       *GetImmediateAs<cmds::TexParameterivImmediate>();
    274   EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
    275   SpecializedSetup<cmds::TexParameterivImmediate, 0>(false);
    276   GLint temp[1] = {
    277       GL_NEAREST,
    278   };
    279   cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, &temp[0]);
    280   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    281   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
    282 }
    283 // TODO(gman): TexSubImage2D
    284 
    285 TEST_P(GLES2DecoderTest2, Uniform1fValidArgs) {
    286   EXPECT_CALL(*gl_, Uniform1fv(1, 1, _));
    287   SpecializedSetup<cmds::Uniform1f, 0>(true);
    288   cmds::Uniform1f cmd;
    289   cmd.Init(1, 2);
    290   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    291   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    292 }
    293 
    294 TEST_P(GLES2DecoderTest2, Uniform1fvImmediateValidArgs) {
    295   cmds::Uniform1fvImmediate& cmd = *GetImmediateAs<cmds::Uniform1fvImmediate>();
    296   EXPECT_CALL(
    297       *gl_,
    298       Uniform1fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
    299   SpecializedSetup<cmds::Uniform1fvImmediate, 0>(true);
    300   GLfloat temp[1 * 2] = {
    301       0,
    302   };
    303   cmd.Init(1, 2, &temp[0]);
    304   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    305   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    306 }
    307 // TODO(gman): Uniform1i
    308 // TODO(gman): Uniform1ivImmediate
    309 
    310 TEST_P(GLES2DecoderTest2, Uniform2fValidArgs) {
    311   EXPECT_CALL(*gl_, Uniform2fv(1, 1, _));
    312   SpecializedSetup<cmds::Uniform2f, 0>(true);
    313   cmds::Uniform2f cmd;
    314   cmd.Init(1, 2, 3);
    315   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    316   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    317 }
    318 
    319 TEST_P(GLES2DecoderTest2, Uniform2fvImmediateValidArgs) {
    320   cmds::Uniform2fvImmediate& cmd = *GetImmediateAs<cmds::Uniform2fvImmediate>();
    321   EXPECT_CALL(
    322       *gl_,
    323       Uniform2fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
    324   SpecializedSetup<cmds::Uniform2fvImmediate, 0>(true);
    325   GLfloat temp[2 * 2] = {
    326       0,
    327   };
    328   cmd.Init(1, 2, &temp[0]);
    329   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    330   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    331 }
    332 
    333 TEST_P(GLES2DecoderTest2, Uniform2iValidArgs) {
    334   EXPECT_CALL(*gl_, Uniform2iv(1, 1, _));
    335   SpecializedSetup<cmds::Uniform2i, 0>(true);
    336   cmds::Uniform2i cmd;
    337   cmd.Init(1, 2, 3);
    338   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    339   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    340 }
    341 
    342 TEST_P(GLES2DecoderTest2, Uniform2ivImmediateValidArgs) {
    343   cmds::Uniform2ivImmediate& cmd = *GetImmediateAs<cmds::Uniform2ivImmediate>();
    344   EXPECT_CALL(
    345       *gl_,
    346       Uniform2iv(1, 2, reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
    347   SpecializedSetup<cmds::Uniform2ivImmediate, 0>(true);
    348   GLint temp[2 * 2] = {
    349       0,
    350   };
    351   cmd.Init(1, 2, &temp[0]);
    352   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    353   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    354 }
    355 
    356 TEST_P(GLES2DecoderTest2, Uniform3fValidArgs) {
    357   EXPECT_CALL(*gl_, Uniform3fv(1, 1, _));
    358   SpecializedSetup<cmds::Uniform3f, 0>(true);
    359   cmds::Uniform3f cmd;
    360   cmd.Init(1, 2, 3, 4);
    361   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    362   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    363 }
    364 
    365 TEST_P(GLES2DecoderTest2, Uniform3fvImmediateValidArgs) {
    366   cmds::Uniform3fvImmediate& cmd = *GetImmediateAs<cmds::Uniform3fvImmediate>();
    367   EXPECT_CALL(
    368       *gl_,
    369       Uniform3fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
    370   SpecializedSetup<cmds::Uniform3fvImmediate, 0>(true);
    371   GLfloat temp[3 * 2] = {
    372       0,
    373   };
    374   cmd.Init(1, 2, &temp[0]);
    375   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    376   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    377 }
    378 
    379 TEST_P(GLES2DecoderTest2, Uniform3iValidArgs) {
    380   EXPECT_CALL(*gl_, Uniform3iv(1, 1, _));
    381   SpecializedSetup<cmds::Uniform3i, 0>(true);
    382   cmds::Uniform3i cmd;
    383   cmd.Init(1, 2, 3, 4);
    384   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    385   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    386 }
    387 
    388 TEST_P(GLES2DecoderTest2, Uniform3ivImmediateValidArgs) {
    389   cmds::Uniform3ivImmediate& cmd = *GetImmediateAs<cmds::Uniform3ivImmediate>();
    390   EXPECT_CALL(
    391       *gl_,
    392       Uniform3iv(1, 2, reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
    393   SpecializedSetup<cmds::Uniform3ivImmediate, 0>(true);
    394   GLint temp[3 * 2] = {
    395       0,
    396   };
    397   cmd.Init(1, 2, &temp[0]);
    398   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    399   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    400 }
    401 
    402 TEST_P(GLES2DecoderTest2, Uniform4fValidArgs) {
    403   EXPECT_CALL(*gl_, Uniform4fv(1, 1, _));
    404   SpecializedSetup<cmds::Uniform4f, 0>(true);
    405   cmds::Uniform4f cmd;
    406   cmd.Init(1, 2, 3, 4, 5);
    407   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    408   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    409 }
    410 
    411 TEST_P(GLES2DecoderTest2, Uniform4fvImmediateValidArgs) {
    412   cmds::Uniform4fvImmediate& cmd = *GetImmediateAs<cmds::Uniform4fvImmediate>();
    413   EXPECT_CALL(
    414       *gl_,
    415       Uniform4fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
    416   SpecializedSetup<cmds::Uniform4fvImmediate, 0>(true);
    417   GLfloat temp[4 * 2] = {
    418       0,
    419   };
    420   cmd.Init(1, 2, &temp[0]);
    421   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    422   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    423 }
    424 
    425 TEST_P(GLES2DecoderTest2, Uniform4iValidArgs) {
    426   EXPECT_CALL(*gl_, Uniform4iv(1, 1, _));
    427   SpecializedSetup<cmds::Uniform4i, 0>(true);
    428   cmds::Uniform4i cmd;
    429   cmd.Init(1, 2, 3, 4, 5);
    430   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    431   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    432 }
    433 
    434 TEST_P(GLES2DecoderTest2, Uniform4ivImmediateValidArgs) {
    435   cmds::Uniform4ivImmediate& cmd = *GetImmediateAs<cmds::Uniform4ivImmediate>();
    436   EXPECT_CALL(
    437       *gl_,
    438       Uniform4iv(1, 2, reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
    439   SpecializedSetup<cmds::Uniform4ivImmediate, 0>(true);
    440   GLint temp[4 * 2] = {
    441       0,
    442   };
    443   cmd.Init(1, 2, &temp[0]);
    444   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    445   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    446 }
    447 
    448 TEST_P(GLES2DecoderTest2, UniformMatrix2fvImmediateValidArgs) {
    449   cmds::UniformMatrix2fvImmediate& cmd =
    450       *GetImmediateAs<cmds::UniformMatrix2fvImmediate>();
    451   EXPECT_CALL(
    452       *gl_,
    453       UniformMatrix2fv(
    454           1, 2, false, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
    455   SpecializedSetup<cmds::UniformMatrix2fvImmediate, 0>(true);
    456   GLfloat temp[4 * 2] = {
    457       0,
    458   };
    459   cmd.Init(1, 2, &temp[0]);
    460   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    461   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    462 }
    463 
    464 TEST_P(GLES2DecoderTest2, UniformMatrix3fvImmediateValidArgs) {
    465   cmds::UniformMatrix3fvImmediate& cmd =
    466       *GetImmediateAs<cmds::UniformMatrix3fvImmediate>();
    467   EXPECT_CALL(
    468       *gl_,
    469       UniformMatrix3fv(
    470           1, 2, false, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
    471   SpecializedSetup<cmds::UniformMatrix3fvImmediate, 0>(true);
    472   GLfloat temp[9 * 2] = {
    473       0,
    474   };
    475   cmd.Init(1, 2, &temp[0]);
    476   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    477   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    478 }
    479 
    480 TEST_P(GLES2DecoderTest2, UniformMatrix4fvImmediateValidArgs) {
    481   cmds::UniformMatrix4fvImmediate& cmd =
    482       *GetImmediateAs<cmds::UniformMatrix4fvImmediate>();
    483   EXPECT_CALL(
    484       *gl_,
    485       UniformMatrix4fv(
    486           1, 2, false, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
    487   SpecializedSetup<cmds::UniformMatrix4fvImmediate, 0>(true);
    488   GLfloat temp[16 * 2] = {
    489       0,
    490   };
    491   cmd.Init(1, 2, &temp[0]);
    492   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    493   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    494 }
    495 
    496 TEST_P(GLES2DecoderTest2, UseProgramValidArgs) {
    497   EXPECT_CALL(*gl_, UseProgram(kServiceProgramId));
    498   SpecializedSetup<cmds::UseProgram, 0>(true);
    499   cmds::UseProgram cmd;
    500   cmd.Init(client_program_id_);
    501   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    502   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    503 }
    504 
    505 TEST_P(GLES2DecoderTest2, UseProgramInvalidArgs0_0) {
    506   EXPECT_CALL(*gl_, UseProgram(_)).Times(0);
    507   SpecializedSetup<cmds::UseProgram, 0>(false);
    508   cmds::UseProgram cmd;
    509   cmd.Init(kInvalidClientId);
    510   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    511   EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
    512 }
    513 
    514 TEST_P(GLES2DecoderTest2, ValidateProgramValidArgs) {
    515   EXPECT_CALL(*gl_, ValidateProgram(kServiceProgramId));
    516   SpecializedSetup<cmds::ValidateProgram, 0>(true);
    517   cmds::ValidateProgram cmd;
    518   cmd.Init(client_program_id_);
    519   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    520   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    521 }
    522 
    523 TEST_P(GLES2DecoderTest2, VertexAttrib1fValidArgs) {
    524   EXPECT_CALL(*gl_, VertexAttrib1f(1, 2));
    525   SpecializedSetup<cmds::VertexAttrib1f, 0>(true);
    526   cmds::VertexAttrib1f cmd;
    527   cmd.Init(1, 2);
    528   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    529   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    530 }
    531 
    532 TEST_P(GLES2DecoderTest2, VertexAttrib1fvImmediateValidArgs) {
    533   cmds::VertexAttrib1fvImmediate& cmd =
    534       *GetImmediateAs<cmds::VertexAttrib1fvImmediate>();
    535   SpecializedSetup<cmds::VertexAttrib1fvImmediate, 0>(true);
    536   GLfloat temp[1] = {
    537       0,
    538   };
    539   cmd.Init(1, &temp[0]);
    540   EXPECT_CALL(*gl_,
    541               VertexAttrib1fv(
    542                   1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
    543   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    544   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    545 }
    546 
    547 TEST_P(GLES2DecoderTest2, VertexAttrib2fValidArgs) {
    548   EXPECT_CALL(*gl_, VertexAttrib2f(1, 2, 3));
    549   SpecializedSetup<cmds::VertexAttrib2f, 0>(true);
    550   cmds::VertexAttrib2f cmd;
    551   cmd.Init(1, 2, 3);
    552   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    553   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    554 }
    555 
    556 TEST_P(GLES2DecoderTest2, VertexAttrib2fvImmediateValidArgs) {
    557   cmds::VertexAttrib2fvImmediate& cmd =
    558       *GetImmediateAs<cmds::VertexAttrib2fvImmediate>();
    559   SpecializedSetup<cmds::VertexAttrib2fvImmediate, 0>(true);
    560   GLfloat temp[2] = {
    561       0,
    562   };
    563   cmd.Init(1, &temp[0]);
    564   EXPECT_CALL(*gl_,
    565               VertexAttrib2fv(
    566                   1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
    567   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    568   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    569 }
    570 
    571 TEST_P(GLES2DecoderTest2, VertexAttrib3fValidArgs) {
    572   EXPECT_CALL(*gl_, VertexAttrib3f(1, 2, 3, 4));
    573   SpecializedSetup<cmds::VertexAttrib3f, 0>(true);
    574   cmds::VertexAttrib3f cmd;
    575   cmd.Init(1, 2, 3, 4);
    576   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    577   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    578 }
    579 
    580 TEST_P(GLES2DecoderTest2, VertexAttrib3fvImmediateValidArgs) {
    581   cmds::VertexAttrib3fvImmediate& cmd =
    582       *GetImmediateAs<cmds::VertexAttrib3fvImmediate>();
    583   SpecializedSetup<cmds::VertexAttrib3fvImmediate, 0>(true);
    584   GLfloat temp[3] = {
    585       0,
    586   };
    587   cmd.Init(1, &temp[0]);
    588   EXPECT_CALL(*gl_,
    589               VertexAttrib3fv(
    590                   1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
    591   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    592   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    593 }
    594 
    595 TEST_P(GLES2DecoderTest2, VertexAttrib4fValidArgs) {
    596   EXPECT_CALL(*gl_, VertexAttrib4f(1, 2, 3, 4, 5));
    597   SpecializedSetup<cmds::VertexAttrib4f, 0>(true);
    598   cmds::VertexAttrib4f cmd;
    599   cmd.Init(1, 2, 3, 4, 5);
    600   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    601   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    602 }
    603 
    604 TEST_P(GLES2DecoderTest2, VertexAttrib4fvImmediateValidArgs) {
    605   cmds::VertexAttrib4fvImmediate& cmd =
    606       *GetImmediateAs<cmds::VertexAttrib4fvImmediate>();
    607   SpecializedSetup<cmds::VertexAttrib4fvImmediate, 0>(true);
    608   GLfloat temp[4] = {
    609       0,
    610   };
    611   cmd.Init(1, &temp[0]);
    612   EXPECT_CALL(*gl_,
    613               VertexAttrib4fv(
    614                   1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
    615   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
    616   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    617 }
    618 // TODO(gman): VertexAttribPointer
    619 
    620 TEST_P(GLES2DecoderTest2, ViewportValidArgs) {
    621   EXPECT_CALL(*gl_, Viewport(1, 2, 3, 4));
    622   SpecializedSetup<cmds::Viewport, 0>(true);
    623   cmds::Viewport cmd;
    624   cmd.Init(1, 2, 3, 4);
    625   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    626   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    627 }
    628 
    629 TEST_P(GLES2DecoderTest2, ViewportInvalidArgs2_0) {
    630   EXPECT_CALL(*gl_, Viewport(_, _, _, _)).Times(0);
    631   SpecializedSetup<cmds::Viewport, 0>(false);
    632   cmds::Viewport cmd;
    633   cmd.Init(1, 2, -1, 4);
    634   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    635   EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
    636 }
    637 
    638 TEST_P(GLES2DecoderTest2, ViewportInvalidArgs3_0) {
    639   EXPECT_CALL(*gl_, Viewport(_, _, _, _)).Times(0);
    640   SpecializedSetup<cmds::Viewport, 0>(false);
    641   cmds::Viewport cmd;
    642   cmd.Init(1, 2, 3, -1);
    643   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    644   EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
    645 }
    646 // TODO(gman): TexStorage2DEXT
    647 // TODO(gman): GenQueriesEXTImmediate
    648 // TODO(gman): DeleteQueriesEXTImmediate
    649 // TODO(gman): BeginQueryEXT
    650 
    651 // TODO(gman): EndQueryEXT
    652 
    653 // TODO(gman): InsertEventMarkerEXT
    654 
    655 // TODO(gman): PushGroupMarkerEXT
    656 
    657 TEST_P(GLES2DecoderTest2, PopGroupMarkerEXTValidArgs) {
    658   SpecializedSetup<cmds::PopGroupMarkerEXT, 0>(true);
    659   cmds::PopGroupMarkerEXT cmd;
    660   cmd.Init();
    661   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
    662   EXPECT_EQ(GL_NO_ERROR, GetGLError());
    663 }
    664 // TODO(gman): GenVertexArraysOESImmediate
    665 // TODO(gman): DeleteVertexArraysOESImmediate
    666 // TODO(gman): IsVertexArrayOES
    667 // TODO(gman): BindVertexArrayOES
    668 // TODO(gman): SwapBuffers
    669 // TODO(gman): GetMaxValueInBufferCHROMIUM
    670 // TODO(gman): GenSharedIdsCHROMIUM
    671 
    672 // TODO(gman): DeleteSharedIdsCHROMIUM
    673 
    674 // TODO(gman): RegisterSharedIdsCHROMIUM
    675 
    676 // TODO(gman): EnableFeatureCHROMIUM
    677 
    678 // TODO(gman): ResizeCHROMIUM
    679 // TODO(gman): GetRequestableExtensionsCHROMIUM
    680 
    681 // TODO(gman): RequestExtensionCHROMIUM
    682 
    683 // TODO(gman): GetMultipleIntegervCHROMIUM
    684 
    685 // TODO(gman): GetProgramInfoCHROMIUM
    686 
    687 // TODO(gman): GetTranslatedShaderSourceANGLE
    688 // TODO(gman): PostSubBufferCHROMIUM
    689 // TODO(gman): TexImageIOSurface2DCHROMIUM
    690 // TODO(gman): CopyTextureCHROMIUM
    691 // TODO(gman): DrawArraysInstancedANGLE
    692 // TODO(gman): DrawElementsInstancedANGLE
    693 // TODO(gman): VertexAttribDivisorANGLE
    694 // TODO(gman): GenMailboxCHROMIUM
    695 
    696 // TODO(gman): ProduceTextureCHROMIUMImmediate
    697 // TODO(gman): ProduceTextureDirectCHROMIUMImmediate
    698 // TODO(gman): ConsumeTextureCHROMIUMImmediate
    699 // TODO(gman): CreateAndConsumeTextureCHROMIUMImmediate
    700 // TODO(gman): BindUniformLocationCHROMIUMBucket
    701 // TODO(gman): BindTexImage2DCHROMIUM
    702 // TODO(gman): ReleaseTexImage2DCHROMIUM
    703 // TODO(gman): TraceBeginCHROMIUM
    704 
    705 // TODO(gman): TraceEndCHROMIUM
    706 // TODO(gman): AsyncTexSubImage2DCHROMIUM
    707 
    708 // TODO(gman): AsyncTexImage2DCHROMIUM
    709 
    710 // TODO(gman): WaitAsyncTexImage2DCHROMIUM
    711 
    712 // TODO(gman): WaitAllAsyncTexImage2DCHROMIUM
    713 
    714 // TODO(gman): LoseContextCHROMIUM
    715 // TODO(gman): InsertSyncPointCHROMIUM
    716 
    717 // TODO(gman): WaitSyncPointCHROMIUM
    718 
    719 #endif  // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_
    720