gles2_cmd_decoder_unittest_2_autogen.h revision 4ad1aa43a48567659193a298fad74f55e00b3dd9
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 15TEST_F(GLES2DecoderTest2, IsRenderbufferValidArgs) { 16 SpecializedSetup<cmds::IsRenderbuffer, 0>(true); 17 cmds::IsRenderbuffer cmd; 18 cmd.Init(client_renderbuffer_id_, shared_memory_id_, shared_memory_offset_); 19 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 20 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 21} 22 23TEST_F(GLES2DecoderTest2, IsRenderbufferInvalidArgsBadSharedMemoryId) { 24 SpecializedSetup<cmds::IsRenderbuffer, 0>(false); 25 cmds::IsRenderbuffer cmd; 26 cmd.Init( 27 client_renderbuffer_id_, kInvalidSharedMemoryId, shared_memory_offset_); 28 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 29 cmd.Init( 30 client_renderbuffer_id_, shared_memory_id_, kInvalidSharedMemoryOffset); 31 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 32} 33 34TEST_F(GLES2DecoderTest2, IsShaderValidArgs) { 35 SpecializedSetup<cmds::IsShader, 0>(true); 36 cmds::IsShader cmd; 37 cmd.Init(client_shader_id_, shared_memory_id_, shared_memory_offset_); 38 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 39 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 40} 41 42TEST_F(GLES2DecoderTest2, IsShaderInvalidArgsBadSharedMemoryId) { 43 SpecializedSetup<cmds::IsShader, 0>(false); 44 cmds::IsShader cmd; 45 cmd.Init(client_shader_id_, kInvalidSharedMemoryId, shared_memory_offset_); 46 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 47 cmd.Init(client_shader_id_, shared_memory_id_, kInvalidSharedMemoryOffset); 48 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 49} 50 51TEST_F(GLES2DecoderTest2, IsTextureValidArgs) { 52 SpecializedSetup<cmds::IsTexture, 0>(true); 53 cmds::IsTexture cmd; 54 cmd.Init(client_texture_id_, shared_memory_id_, shared_memory_offset_); 55 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 56 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 57} 58 59TEST_F(GLES2DecoderTest2, IsTextureInvalidArgsBadSharedMemoryId) { 60 SpecializedSetup<cmds::IsTexture, 0>(false); 61 cmds::IsTexture cmd; 62 cmd.Init(client_texture_id_, kInvalidSharedMemoryId, shared_memory_offset_); 63 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 64 cmd.Init(client_texture_id_, shared_memory_id_, kInvalidSharedMemoryOffset); 65 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 66} 67 68TEST_F(GLES2DecoderTest2, LineWidthValidArgs) { 69 EXPECT_CALL(*gl_, LineWidth(0.5f)); 70 SpecializedSetup<cmds::LineWidth, 0>(true); 71 cmds::LineWidth cmd; 72 cmd.Init(0.5f); 73 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 74 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 75} 76 77TEST_F(GLES2DecoderTest2, LineWidthInvalidValue0_0) { 78 SpecializedSetup<cmds::LineWidth, 0>(false); 79 cmds::LineWidth cmd; 80 cmd.Init(0.0f); 81 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 82 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 83} 84 85TEST_F(GLES2DecoderTest2, LinkProgramValidArgs) { 86 EXPECT_CALL(*gl_, LinkProgram(kServiceProgramId)); 87 SpecializedSetup<cmds::LinkProgram, 0>(true); 88 cmds::LinkProgram cmd; 89 cmd.Init(client_program_id_); 90 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 91 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 92} 93// TODO(gman): PixelStorei 94 95TEST_F(GLES2DecoderTest2, PolygonOffsetValidArgs) { 96 EXPECT_CALL(*gl_, PolygonOffset(1, 2)); 97 SpecializedSetup<cmds::PolygonOffset, 0>(true); 98 cmds::PolygonOffset cmd; 99 cmd.Init(1, 2); 100 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 101 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 102} 103// TODO(gman): ReadPixels 104 105// TODO(gman): ReleaseShaderCompiler 106 107TEST_F(GLES2DecoderTest2, RenderbufferStorageValidArgs) { 108 SpecializedSetup<cmds::RenderbufferStorage, 0>(true); 109 cmds::RenderbufferStorage cmd; 110 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 3, 4); 111 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 112 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 113} 114 115TEST_F(GLES2DecoderTest2, RenderbufferStorageInvalidArgs0_0) { 116 EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)).Times(0); 117 SpecializedSetup<cmds::RenderbufferStorage, 0>(false); 118 cmds::RenderbufferStorage cmd; 119 cmd.Init(GL_FRAMEBUFFER, GL_RGBA4, 3, 4); 120 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 121 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 122} 123 124TEST_F(GLES2DecoderTest2, RenderbufferStorageInvalidArgs2_0) { 125 EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)).Times(0); 126 SpecializedSetup<cmds::RenderbufferStorage, 0>(false); 127 cmds::RenderbufferStorage cmd; 128 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, -1, 4); 129 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 130 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 131} 132 133TEST_F(GLES2DecoderTest2, RenderbufferStorageInvalidArgs3_0) { 134 EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)).Times(0); 135 SpecializedSetup<cmds::RenderbufferStorage, 0>(false); 136 cmds::RenderbufferStorage cmd; 137 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 3, -1); 138 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 139 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 140} 141 142TEST_F(GLES2DecoderTest2, SampleCoverageValidArgs) { 143 EXPECT_CALL(*gl_, SampleCoverage(1, true)); 144 SpecializedSetup<cmds::SampleCoverage, 0>(true); 145 cmds::SampleCoverage cmd; 146 cmd.Init(1, true); 147 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 148 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 149} 150 151TEST_F(GLES2DecoderTest2, ScissorValidArgs) { 152 EXPECT_CALL(*gl_, Scissor(1, 2, 3, 4)); 153 SpecializedSetup<cmds::Scissor, 0>(true); 154 cmds::Scissor cmd; 155 cmd.Init(1, 2, 3, 4); 156 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 157 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 158} 159 160TEST_F(GLES2DecoderTest2, ScissorInvalidArgs2_0) { 161 EXPECT_CALL(*gl_, Scissor(_, _, _, _)).Times(0); 162 SpecializedSetup<cmds::Scissor, 0>(false); 163 cmds::Scissor cmd; 164 cmd.Init(1, 2, -1, 4); 165 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 166 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 167} 168 169TEST_F(GLES2DecoderTest2, ScissorInvalidArgs3_0) { 170 EXPECT_CALL(*gl_, Scissor(_, _, _, _)).Times(0); 171 SpecializedSetup<cmds::Scissor, 0>(false); 172 cmds::Scissor cmd; 173 cmd.Init(1, 2, 3, -1); 174 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 175 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 176} 177// TODO(gman): ShaderBinary 178 179// TODO(gman): ShaderSource 180 181// TODO(gman): ShaderSourceBucket 182 183TEST_F(GLES2DecoderTest2, StencilFuncValidArgs) { 184 EXPECT_CALL(*gl_, StencilFunc(GL_NEVER, 2, 3)); 185 SpecializedSetup<cmds::StencilFunc, 0>(true); 186 cmds::StencilFunc cmd; 187 cmd.Init(GL_NEVER, 2, 3); 188 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 189 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 190} 191 192TEST_F(GLES2DecoderTest2, StencilFuncSeparateValidArgs) { 193 EXPECT_CALL(*gl_, StencilFuncSeparate(GL_FRONT, GL_NEVER, 3, 4)); 194 SpecializedSetup<cmds::StencilFuncSeparate, 0>(true); 195 cmds::StencilFuncSeparate cmd; 196 cmd.Init(GL_FRONT, GL_NEVER, 3, 4); 197 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 198 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 199} 200 201TEST_F(GLES2DecoderTest2, StencilMaskValidArgs) { 202 SpecializedSetup<cmds::StencilMask, 0>(true); 203 cmds::StencilMask cmd; 204 cmd.Init(1); 205 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 206 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 207} 208 209TEST_F(GLES2DecoderTest2, StencilMaskSeparateValidArgs) { 210 SpecializedSetup<cmds::StencilMaskSeparate, 0>(true); 211 cmds::StencilMaskSeparate cmd; 212 cmd.Init(GL_FRONT, 2); 213 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 214 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 215} 216 217TEST_F(GLES2DecoderTest2, StencilOpValidArgs) { 218 EXPECT_CALL(*gl_, StencilOp(GL_KEEP, GL_INCR, GL_KEEP)); 219 SpecializedSetup<cmds::StencilOp, 0>(true); 220 cmds::StencilOp cmd; 221 cmd.Init(GL_KEEP, GL_INCR, GL_KEEP); 222 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 223 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 224} 225 226TEST_F(GLES2DecoderTest2, StencilOpSeparateValidArgs) { 227 EXPECT_CALL(*gl_, StencilOpSeparate(GL_FRONT, GL_INCR, GL_KEEP, GL_KEEP)); 228 SpecializedSetup<cmds::StencilOpSeparate, 0>(true); 229 cmds::StencilOpSeparate cmd; 230 cmd.Init(GL_FRONT, GL_INCR, GL_KEEP, GL_KEEP); 231 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 232 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 233} 234// TODO(gman): TexImage2D 235 236TEST_F(GLES2DecoderTest2, TexParameterfValidArgs) { 237 EXPECT_CALL(*gl_, 238 TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)); 239 SpecializedSetup<cmds::TexParameterf, 0>(true); 240 cmds::TexParameterf cmd; 241 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 242 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 243 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 244} 245 246TEST_F(GLES2DecoderTest2, TexParameterfInvalidArgs0_0) { 247 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0); 248 SpecializedSetup<cmds::TexParameterf, 0>(false); 249 cmds::TexParameterf cmd; 250 cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 251 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 252 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 253} 254 255TEST_F(GLES2DecoderTest2, TexParameterfInvalidArgs0_1) { 256 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0); 257 SpecializedSetup<cmds::TexParameterf, 0>(false); 258 cmds::TexParameterf cmd; 259 cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 260 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 261 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 262} 263 264TEST_F(GLES2DecoderTest2, TexParameterfInvalidArgs1_0) { 265 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0); 266 SpecializedSetup<cmds::TexParameterf, 0>(false); 267 cmds::TexParameterf cmd; 268 cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_NEAREST); 269 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 270 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 271} 272 273TEST_F(GLES2DecoderTest2, TexParameterfvValidArgs) { 274 SpecializedSetup<cmds::TexParameterfv, 0>(true); 275 cmds::TexParameterfv cmd; 276 cmd.Init(GL_TEXTURE_2D, 277 GL_TEXTURE_MAG_FILTER, 278 shared_memory_id_, 279 shared_memory_offset_); 280 GetSharedMemoryAs<GLfloat*>()[0] = GL_NEAREST; 281 EXPECT_CALL( 282 *gl_, 283 TexParameterf(GL_TEXTURE_2D, 284 GL_TEXTURE_MAG_FILTER, 285 *reinterpret_cast<const GLfloat*>(shared_memory_address_))); 286 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 287 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 288} 289 290TEST_F(GLES2DecoderTest2, TexParameterfvInvalidArgs0_0) { 291 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0); 292 SpecializedSetup<cmds::TexParameterfv, 0>(false); 293 cmds::TexParameterfv cmd; 294 cmd.Init(GL_TEXTURE_1D, 295 GL_TEXTURE_MAG_FILTER, 296 shared_memory_id_, 297 shared_memory_offset_); 298 GetSharedMemoryAs<GLfloat*>()[0] = GL_NEAREST; 299 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 300 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 301} 302 303TEST_F(GLES2DecoderTest2, TexParameterfvInvalidArgs0_1) { 304 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0); 305 SpecializedSetup<cmds::TexParameterfv, 0>(false); 306 cmds::TexParameterfv cmd; 307 cmd.Init(GL_TEXTURE_3D, 308 GL_TEXTURE_MAG_FILTER, 309 shared_memory_id_, 310 shared_memory_offset_); 311 GetSharedMemoryAs<GLfloat*>()[0] = GL_NEAREST; 312 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 313 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 314} 315 316TEST_F(GLES2DecoderTest2, TexParameterfvInvalidArgs1_0) { 317 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0); 318 SpecializedSetup<cmds::TexParameterfv, 0>(false); 319 cmds::TexParameterfv cmd; 320 cmd.Init(GL_TEXTURE_2D, 321 GL_GENERATE_MIPMAP, 322 shared_memory_id_, 323 shared_memory_offset_); 324 GetSharedMemoryAs<GLfloat*>()[0] = GL_NEAREST; 325 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 326 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 327} 328 329TEST_F(GLES2DecoderTest2, TexParameterfvInvalidArgs2_0) { 330 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0); 331 SpecializedSetup<cmds::TexParameterfv, 0>(false); 332 cmds::TexParameterfv cmd; 333 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, kInvalidSharedMemoryId, 0); 334 GetSharedMemoryAs<GLfloat*>()[0] = GL_NEAREST; 335 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 336} 337 338TEST_F(GLES2DecoderTest2, TexParameterfvInvalidArgs2_1) { 339 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0); 340 SpecializedSetup<cmds::TexParameterfv, 0>(false); 341 cmds::TexParameterfv cmd; 342 cmd.Init(GL_TEXTURE_2D, 343 GL_TEXTURE_MAG_FILTER, 344 shared_memory_id_, 345 kInvalidSharedMemoryOffset); 346 GetSharedMemoryAs<GLfloat*>()[0] = GL_NEAREST; 347 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 348} 349 350TEST_F(GLES2DecoderTest2, TexParameterfvImmediateValidArgs) { 351 cmds::TexParameterfvImmediate& cmd = 352 *GetImmediateAs<cmds::TexParameterfvImmediate>(); 353 SpecializedSetup<cmds::TexParameterfvImmediate, 0>(true); 354 GLfloat temp[1] = {GL_NEAREST, }; 355 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]); 356 EXPECT_CALL( 357 *gl_, 358 TexParameterf(GL_TEXTURE_2D, 359 GL_TEXTURE_MAG_FILTER, 360 *reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 361 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 362 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 363} 364 365TEST_F(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs0_0) { 366 cmds::TexParameterfvImmediate& cmd = 367 *GetImmediateAs<cmds::TexParameterfvImmediate>(); 368 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0); 369 SpecializedSetup<cmds::TexParameterfvImmediate, 0>(false); 370 GLfloat temp[1] = {GL_NEAREST, }; 371 cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, &temp[0]); 372 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 373 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 374} 375 376TEST_F(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs0_1) { 377 cmds::TexParameterfvImmediate& cmd = 378 *GetImmediateAs<cmds::TexParameterfvImmediate>(); 379 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0); 380 SpecializedSetup<cmds::TexParameterfvImmediate, 0>(false); 381 GLfloat temp[1] = {GL_NEAREST, }; 382 cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, &temp[0]); 383 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 384 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 385} 386 387TEST_F(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs1_0) { 388 cmds::TexParameterfvImmediate& cmd = 389 *GetImmediateAs<cmds::TexParameterfvImmediate>(); 390 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0); 391 SpecializedSetup<cmds::TexParameterfvImmediate, 0>(false); 392 GLfloat temp[1] = {GL_NEAREST, }; 393 cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, &temp[0]); 394 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 395 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 396} 397 398TEST_F(GLES2DecoderTest2, TexParameteriValidArgs) { 399 EXPECT_CALL(*gl_, 400 TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)); 401 SpecializedSetup<cmds::TexParameteri, 0>(true); 402 cmds::TexParameteri cmd; 403 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 404 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 405 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 406} 407 408TEST_F(GLES2DecoderTest2, TexParameteriInvalidArgs0_0) { 409 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0); 410 SpecializedSetup<cmds::TexParameteri, 0>(false); 411 cmds::TexParameteri cmd; 412 cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 413 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 414 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 415} 416 417TEST_F(GLES2DecoderTest2, TexParameteriInvalidArgs0_1) { 418 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0); 419 SpecializedSetup<cmds::TexParameteri, 0>(false); 420 cmds::TexParameteri cmd; 421 cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 422 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 423 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 424} 425 426TEST_F(GLES2DecoderTest2, TexParameteriInvalidArgs1_0) { 427 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0); 428 SpecializedSetup<cmds::TexParameteri, 0>(false); 429 cmds::TexParameteri cmd; 430 cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_NEAREST); 431 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 432 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 433} 434 435TEST_F(GLES2DecoderTest2, TexParameterivValidArgs) { 436 SpecializedSetup<cmds::TexParameteriv, 0>(true); 437 cmds::TexParameteriv cmd; 438 cmd.Init(GL_TEXTURE_2D, 439 GL_TEXTURE_MAG_FILTER, 440 shared_memory_id_, 441 shared_memory_offset_); 442 GetSharedMemoryAs<GLint*>()[0] = GL_NEAREST; 443 EXPECT_CALL( 444 *gl_, 445 TexParameteri(GL_TEXTURE_2D, 446 GL_TEXTURE_MAG_FILTER, 447 *reinterpret_cast<const GLint*>(shared_memory_address_))); 448 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 449 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 450} 451 452TEST_F(GLES2DecoderTest2, TexParameterivInvalidArgs0_0) { 453 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0); 454 SpecializedSetup<cmds::TexParameteriv, 0>(false); 455 cmds::TexParameteriv cmd; 456 cmd.Init(GL_TEXTURE_1D, 457 GL_TEXTURE_MAG_FILTER, 458 shared_memory_id_, 459 shared_memory_offset_); 460 GetSharedMemoryAs<GLint*>()[0] = GL_NEAREST; 461 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 462 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 463} 464 465TEST_F(GLES2DecoderTest2, TexParameterivInvalidArgs0_1) { 466 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0); 467 SpecializedSetup<cmds::TexParameteriv, 0>(false); 468 cmds::TexParameteriv cmd; 469 cmd.Init(GL_TEXTURE_3D, 470 GL_TEXTURE_MAG_FILTER, 471 shared_memory_id_, 472 shared_memory_offset_); 473 GetSharedMemoryAs<GLint*>()[0] = GL_NEAREST; 474 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 475 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 476} 477 478TEST_F(GLES2DecoderTest2, TexParameterivInvalidArgs1_0) { 479 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0); 480 SpecializedSetup<cmds::TexParameteriv, 0>(false); 481 cmds::TexParameteriv cmd; 482 cmd.Init(GL_TEXTURE_2D, 483 GL_GENERATE_MIPMAP, 484 shared_memory_id_, 485 shared_memory_offset_); 486 GetSharedMemoryAs<GLint*>()[0] = GL_NEAREST; 487 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 488 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 489} 490 491TEST_F(GLES2DecoderTest2, TexParameterivInvalidArgs2_0) { 492 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0); 493 SpecializedSetup<cmds::TexParameteriv, 0>(false); 494 cmds::TexParameteriv cmd; 495 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, kInvalidSharedMemoryId, 0); 496 GetSharedMemoryAs<GLint*>()[0] = GL_NEAREST; 497 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 498} 499 500TEST_F(GLES2DecoderTest2, TexParameterivInvalidArgs2_1) { 501 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0); 502 SpecializedSetup<cmds::TexParameteriv, 0>(false); 503 cmds::TexParameteriv cmd; 504 cmd.Init(GL_TEXTURE_2D, 505 GL_TEXTURE_MAG_FILTER, 506 shared_memory_id_, 507 kInvalidSharedMemoryOffset); 508 GetSharedMemoryAs<GLint*>()[0] = GL_NEAREST; 509 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 510} 511 512TEST_F(GLES2DecoderTest2, TexParameterivImmediateValidArgs) { 513 cmds::TexParameterivImmediate& cmd = 514 *GetImmediateAs<cmds::TexParameterivImmediate>(); 515 SpecializedSetup<cmds::TexParameterivImmediate, 0>(true); 516 GLint temp[1] = {GL_NEAREST, }; 517 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]); 518 EXPECT_CALL( 519 *gl_, 520 TexParameteri(GL_TEXTURE_2D, 521 GL_TEXTURE_MAG_FILTER, 522 *reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); 523 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 524 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 525} 526 527TEST_F(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs0_0) { 528 cmds::TexParameterivImmediate& cmd = 529 *GetImmediateAs<cmds::TexParameterivImmediate>(); 530 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0); 531 SpecializedSetup<cmds::TexParameterivImmediate, 0>(false); 532 GLint temp[1] = {GL_NEAREST, }; 533 cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, &temp[0]); 534 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 535 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 536} 537 538TEST_F(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs0_1) { 539 cmds::TexParameterivImmediate& cmd = 540 *GetImmediateAs<cmds::TexParameterivImmediate>(); 541 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0); 542 SpecializedSetup<cmds::TexParameterivImmediate, 0>(false); 543 GLint temp[1] = {GL_NEAREST, }; 544 cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, &temp[0]); 545 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 546 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 547} 548 549TEST_F(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs1_0) { 550 cmds::TexParameterivImmediate& cmd = 551 *GetImmediateAs<cmds::TexParameterivImmediate>(); 552 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0); 553 SpecializedSetup<cmds::TexParameterivImmediate, 0>(false); 554 GLint temp[1] = {GL_NEAREST, }; 555 cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, &temp[0]); 556 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 557 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 558} 559// TODO(gman): TexSubImage2D 560 561TEST_F(GLES2DecoderTest2, Uniform1fValidArgs) { 562 EXPECT_CALL(*gl_, Uniform1fv(1, 1, _)); 563 SpecializedSetup<cmds::Uniform1f, 0>(true); 564 cmds::Uniform1f cmd; 565 cmd.Init(1, 2); 566 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 567 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 568} 569 570TEST_F(GLES2DecoderTest2, Uniform1fvValidArgs) { 571 EXPECT_CALL( 572 *gl_, 573 Uniform1fv( 574 1, 2, reinterpret_cast<const GLfloat*>(shared_memory_address_))); 575 SpecializedSetup<cmds::Uniform1fv, 0>(true); 576 cmds::Uniform1fv cmd; 577 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_); 578 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 579 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 580} 581 582TEST_F(GLES2DecoderTest2, Uniform1fvInvalidArgs1_0) { 583 EXPECT_CALL(*gl_, Uniform1fv(_, _, _)).Times(0); 584 SpecializedSetup<cmds::Uniform1fv, 0>(false); 585 cmds::Uniform1fv cmd; 586 cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_); 587 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 588 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 589} 590 591TEST_F(GLES2DecoderTest2, Uniform1fvInvalidArgs2_0) { 592 EXPECT_CALL(*gl_, Uniform1fv(_, _, _)).Times(0); 593 SpecializedSetup<cmds::Uniform1fv, 0>(false); 594 cmds::Uniform1fv cmd; 595 cmd.Init(1, 2, kInvalidSharedMemoryId, 0); 596 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 597} 598 599TEST_F(GLES2DecoderTest2, Uniform1fvInvalidArgs2_1) { 600 EXPECT_CALL(*gl_, Uniform1fv(_, _, _)).Times(0); 601 SpecializedSetup<cmds::Uniform1fv, 0>(false); 602 cmds::Uniform1fv cmd; 603 cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset); 604 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 605} 606 607TEST_F(GLES2DecoderTest2, Uniform1fvValidArgsCountTooLarge) { 608 EXPECT_CALL( 609 *gl_, 610 Uniform1fv( 611 3, 3, reinterpret_cast<const GLfloat*>(shared_memory_address_))); 612 SpecializedSetup<cmds::Uniform1fv, 0>(true); 613 cmds::Uniform1fv cmd; 614 cmd.Init(ProgramManager::MakeFakeLocation(1, 1), 615 5, 616 shared_memory_id_, 617 shared_memory_offset_); 618 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 619 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 620} 621 622TEST_F(GLES2DecoderTest2, Uniform1fvImmediateValidArgs) { 623 cmds::Uniform1fvImmediate& cmd = *GetImmediateAs<cmds::Uniform1fvImmediate>(); 624 EXPECT_CALL( 625 *gl_, 626 Uniform1fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 627 SpecializedSetup<cmds::Uniform1fvImmediate, 0>(true); 628 GLfloat temp[1 * 2] = {0, }; 629 cmd.Init(1, 2, &temp[0]); 630 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 631 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 632} 633// TODO(gman): Uniform1i 634// TODO(gman): Uniform1iv 635// TODO(gman): Uniform1ivImmediate 636 637TEST_F(GLES2DecoderTest2, Uniform2fValidArgs) { 638 EXPECT_CALL(*gl_, Uniform2fv(1, 1, _)); 639 SpecializedSetup<cmds::Uniform2f, 0>(true); 640 cmds::Uniform2f cmd; 641 cmd.Init(1, 2, 3); 642 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 643 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 644} 645 646TEST_F(GLES2DecoderTest2, Uniform2fvValidArgs) { 647 EXPECT_CALL( 648 *gl_, 649 Uniform2fv( 650 1, 2, reinterpret_cast<const GLfloat*>(shared_memory_address_))); 651 SpecializedSetup<cmds::Uniform2fv, 0>(true); 652 cmds::Uniform2fv cmd; 653 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_); 654 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 655 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 656} 657 658TEST_F(GLES2DecoderTest2, Uniform2fvInvalidArgs1_0) { 659 EXPECT_CALL(*gl_, Uniform2fv(_, _, _)).Times(0); 660 SpecializedSetup<cmds::Uniform2fv, 0>(false); 661 cmds::Uniform2fv cmd; 662 cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_); 663 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 664 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 665} 666 667TEST_F(GLES2DecoderTest2, Uniform2fvInvalidArgs2_0) { 668 EXPECT_CALL(*gl_, Uniform2fv(_, _, _)).Times(0); 669 SpecializedSetup<cmds::Uniform2fv, 0>(false); 670 cmds::Uniform2fv cmd; 671 cmd.Init(1, 2, kInvalidSharedMemoryId, 0); 672 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 673} 674 675TEST_F(GLES2DecoderTest2, Uniform2fvInvalidArgs2_1) { 676 EXPECT_CALL(*gl_, Uniform2fv(_, _, _)).Times(0); 677 SpecializedSetup<cmds::Uniform2fv, 0>(false); 678 cmds::Uniform2fv cmd; 679 cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset); 680 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 681} 682 683TEST_F(GLES2DecoderTest2, Uniform2fvValidArgsCountTooLarge) { 684 EXPECT_CALL( 685 *gl_, 686 Uniform2fv( 687 3, 3, reinterpret_cast<const GLfloat*>(shared_memory_address_))); 688 SpecializedSetup<cmds::Uniform2fv, 0>(true); 689 cmds::Uniform2fv cmd; 690 cmd.Init(ProgramManager::MakeFakeLocation(1, 1), 691 5, 692 shared_memory_id_, 693 shared_memory_offset_); 694 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 695 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 696} 697 698TEST_F(GLES2DecoderTest2, Uniform2fvImmediateValidArgs) { 699 cmds::Uniform2fvImmediate& cmd = *GetImmediateAs<cmds::Uniform2fvImmediate>(); 700 EXPECT_CALL( 701 *gl_, 702 Uniform2fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 703 SpecializedSetup<cmds::Uniform2fvImmediate, 0>(true); 704 GLfloat temp[2 * 2] = {0, }; 705 cmd.Init(1, 2, &temp[0]); 706 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 707 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 708} 709 710TEST_F(GLES2DecoderTest2, Uniform2iValidArgs) { 711 EXPECT_CALL(*gl_, Uniform2iv(1, 1, _)); 712 SpecializedSetup<cmds::Uniform2i, 0>(true); 713 cmds::Uniform2i cmd; 714 cmd.Init(1, 2, 3); 715 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 716 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 717} 718 719TEST_F(GLES2DecoderTest2, Uniform2ivValidArgs) { 720 EXPECT_CALL( 721 *gl_, 722 Uniform2iv(1, 2, reinterpret_cast<const GLint*>(shared_memory_address_))); 723 SpecializedSetup<cmds::Uniform2iv, 0>(true); 724 cmds::Uniform2iv cmd; 725 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_); 726 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 727 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 728} 729 730TEST_F(GLES2DecoderTest2, Uniform2ivInvalidArgs1_0) { 731 EXPECT_CALL(*gl_, Uniform2iv(_, _, _)).Times(0); 732 SpecializedSetup<cmds::Uniform2iv, 0>(false); 733 cmds::Uniform2iv cmd; 734 cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_); 735 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 736 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 737} 738 739TEST_F(GLES2DecoderTest2, Uniform2ivInvalidArgs2_0) { 740 EXPECT_CALL(*gl_, Uniform2iv(_, _, _)).Times(0); 741 SpecializedSetup<cmds::Uniform2iv, 0>(false); 742 cmds::Uniform2iv cmd; 743 cmd.Init(1, 2, kInvalidSharedMemoryId, 0); 744 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 745} 746 747TEST_F(GLES2DecoderTest2, Uniform2ivInvalidArgs2_1) { 748 EXPECT_CALL(*gl_, Uniform2iv(_, _, _)).Times(0); 749 SpecializedSetup<cmds::Uniform2iv, 0>(false); 750 cmds::Uniform2iv cmd; 751 cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset); 752 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 753} 754 755TEST_F(GLES2DecoderTest2, Uniform2ivValidArgsCountTooLarge) { 756 EXPECT_CALL( 757 *gl_, 758 Uniform2iv(3, 3, reinterpret_cast<const GLint*>(shared_memory_address_))); 759 SpecializedSetup<cmds::Uniform2iv, 0>(true); 760 cmds::Uniform2iv cmd; 761 cmd.Init(ProgramManager::MakeFakeLocation(1, 1), 762 5, 763 shared_memory_id_, 764 shared_memory_offset_); 765 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 766 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 767} 768 769TEST_F(GLES2DecoderTest2, Uniform2ivImmediateValidArgs) { 770 cmds::Uniform2ivImmediate& cmd = *GetImmediateAs<cmds::Uniform2ivImmediate>(); 771 EXPECT_CALL( 772 *gl_, 773 Uniform2iv(1, 2, reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); 774 SpecializedSetup<cmds::Uniform2ivImmediate, 0>(true); 775 GLint temp[2 * 2] = {0, }; 776 cmd.Init(1, 2, &temp[0]); 777 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 778 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 779} 780 781TEST_F(GLES2DecoderTest2, Uniform3fValidArgs) { 782 EXPECT_CALL(*gl_, Uniform3fv(1, 1, _)); 783 SpecializedSetup<cmds::Uniform3f, 0>(true); 784 cmds::Uniform3f cmd; 785 cmd.Init(1, 2, 3, 4); 786 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 787 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 788} 789 790TEST_F(GLES2DecoderTest2, Uniform3fvValidArgs) { 791 EXPECT_CALL( 792 *gl_, 793 Uniform3fv( 794 1, 2, reinterpret_cast<const GLfloat*>(shared_memory_address_))); 795 SpecializedSetup<cmds::Uniform3fv, 0>(true); 796 cmds::Uniform3fv cmd; 797 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_); 798 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 799 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 800} 801 802TEST_F(GLES2DecoderTest2, Uniform3fvInvalidArgs1_0) { 803 EXPECT_CALL(*gl_, Uniform3fv(_, _, _)).Times(0); 804 SpecializedSetup<cmds::Uniform3fv, 0>(false); 805 cmds::Uniform3fv cmd; 806 cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_); 807 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 808 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 809} 810 811TEST_F(GLES2DecoderTest2, Uniform3fvInvalidArgs2_0) { 812 EXPECT_CALL(*gl_, Uniform3fv(_, _, _)).Times(0); 813 SpecializedSetup<cmds::Uniform3fv, 0>(false); 814 cmds::Uniform3fv cmd; 815 cmd.Init(1, 2, kInvalidSharedMemoryId, 0); 816 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 817} 818 819TEST_F(GLES2DecoderTest2, Uniform3fvInvalidArgs2_1) { 820 EXPECT_CALL(*gl_, Uniform3fv(_, _, _)).Times(0); 821 SpecializedSetup<cmds::Uniform3fv, 0>(false); 822 cmds::Uniform3fv cmd; 823 cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset); 824 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 825} 826 827TEST_F(GLES2DecoderTest2, Uniform3fvValidArgsCountTooLarge) { 828 EXPECT_CALL( 829 *gl_, 830 Uniform3fv( 831 3, 3, reinterpret_cast<const GLfloat*>(shared_memory_address_))); 832 SpecializedSetup<cmds::Uniform3fv, 0>(true); 833 cmds::Uniform3fv cmd; 834 cmd.Init(ProgramManager::MakeFakeLocation(1, 1), 835 5, 836 shared_memory_id_, 837 shared_memory_offset_); 838 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 839 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 840} 841 842TEST_F(GLES2DecoderTest2, Uniform3fvImmediateValidArgs) { 843 cmds::Uniform3fvImmediate& cmd = *GetImmediateAs<cmds::Uniform3fvImmediate>(); 844 EXPECT_CALL( 845 *gl_, 846 Uniform3fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 847 SpecializedSetup<cmds::Uniform3fvImmediate, 0>(true); 848 GLfloat temp[3 * 2] = {0, }; 849 cmd.Init(1, 2, &temp[0]); 850 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 851 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 852} 853 854TEST_F(GLES2DecoderTest2, Uniform3iValidArgs) { 855 EXPECT_CALL(*gl_, Uniform3iv(1, 1, _)); 856 SpecializedSetup<cmds::Uniform3i, 0>(true); 857 cmds::Uniform3i cmd; 858 cmd.Init(1, 2, 3, 4); 859 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 860 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 861} 862 863TEST_F(GLES2DecoderTest2, Uniform3ivValidArgs) { 864 EXPECT_CALL( 865 *gl_, 866 Uniform3iv(1, 2, reinterpret_cast<const GLint*>(shared_memory_address_))); 867 SpecializedSetup<cmds::Uniform3iv, 0>(true); 868 cmds::Uniform3iv cmd; 869 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_); 870 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 871 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 872} 873 874TEST_F(GLES2DecoderTest2, Uniform3ivInvalidArgs1_0) { 875 EXPECT_CALL(*gl_, Uniform3iv(_, _, _)).Times(0); 876 SpecializedSetup<cmds::Uniform3iv, 0>(false); 877 cmds::Uniform3iv cmd; 878 cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_); 879 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 880 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 881} 882 883TEST_F(GLES2DecoderTest2, Uniform3ivInvalidArgs2_0) { 884 EXPECT_CALL(*gl_, Uniform3iv(_, _, _)).Times(0); 885 SpecializedSetup<cmds::Uniform3iv, 0>(false); 886 cmds::Uniform3iv cmd; 887 cmd.Init(1, 2, kInvalidSharedMemoryId, 0); 888 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 889} 890 891TEST_F(GLES2DecoderTest2, Uniform3ivInvalidArgs2_1) { 892 EXPECT_CALL(*gl_, Uniform3iv(_, _, _)).Times(0); 893 SpecializedSetup<cmds::Uniform3iv, 0>(false); 894 cmds::Uniform3iv cmd; 895 cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset); 896 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 897} 898 899TEST_F(GLES2DecoderTest2, Uniform3ivValidArgsCountTooLarge) { 900 EXPECT_CALL( 901 *gl_, 902 Uniform3iv(3, 3, reinterpret_cast<const GLint*>(shared_memory_address_))); 903 SpecializedSetup<cmds::Uniform3iv, 0>(true); 904 cmds::Uniform3iv cmd; 905 cmd.Init(ProgramManager::MakeFakeLocation(1, 1), 906 5, 907 shared_memory_id_, 908 shared_memory_offset_); 909 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 910 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 911} 912 913TEST_F(GLES2DecoderTest2, Uniform3ivImmediateValidArgs) { 914 cmds::Uniform3ivImmediate& cmd = *GetImmediateAs<cmds::Uniform3ivImmediate>(); 915 EXPECT_CALL( 916 *gl_, 917 Uniform3iv(1, 2, reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); 918 SpecializedSetup<cmds::Uniform3ivImmediate, 0>(true); 919 GLint temp[3 * 2] = {0, }; 920 cmd.Init(1, 2, &temp[0]); 921 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 922 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 923} 924 925TEST_F(GLES2DecoderTest2, Uniform4fValidArgs) { 926 EXPECT_CALL(*gl_, Uniform4fv(1, 1, _)); 927 SpecializedSetup<cmds::Uniform4f, 0>(true); 928 cmds::Uniform4f cmd; 929 cmd.Init(1, 2, 3, 4, 5); 930 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 931 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 932} 933 934TEST_F(GLES2DecoderTest2, Uniform4fvValidArgs) { 935 EXPECT_CALL( 936 *gl_, 937 Uniform4fv( 938 1, 2, reinterpret_cast<const GLfloat*>(shared_memory_address_))); 939 SpecializedSetup<cmds::Uniform4fv, 0>(true); 940 cmds::Uniform4fv cmd; 941 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_); 942 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 943 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 944} 945 946TEST_F(GLES2DecoderTest2, Uniform4fvInvalidArgs1_0) { 947 EXPECT_CALL(*gl_, Uniform4fv(_, _, _)).Times(0); 948 SpecializedSetup<cmds::Uniform4fv, 0>(false); 949 cmds::Uniform4fv cmd; 950 cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_); 951 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 952 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 953} 954 955TEST_F(GLES2DecoderTest2, Uniform4fvInvalidArgs2_0) { 956 EXPECT_CALL(*gl_, Uniform4fv(_, _, _)).Times(0); 957 SpecializedSetup<cmds::Uniform4fv, 0>(false); 958 cmds::Uniform4fv cmd; 959 cmd.Init(1, 2, kInvalidSharedMemoryId, 0); 960 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 961} 962 963TEST_F(GLES2DecoderTest2, Uniform4fvInvalidArgs2_1) { 964 EXPECT_CALL(*gl_, Uniform4fv(_, _, _)).Times(0); 965 SpecializedSetup<cmds::Uniform4fv, 0>(false); 966 cmds::Uniform4fv cmd; 967 cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset); 968 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 969} 970 971TEST_F(GLES2DecoderTest2, Uniform4fvValidArgsCountTooLarge) { 972 EXPECT_CALL( 973 *gl_, 974 Uniform4fv( 975 3, 3, reinterpret_cast<const GLfloat*>(shared_memory_address_))); 976 SpecializedSetup<cmds::Uniform4fv, 0>(true); 977 cmds::Uniform4fv cmd; 978 cmd.Init(ProgramManager::MakeFakeLocation(1, 1), 979 5, 980 shared_memory_id_, 981 shared_memory_offset_); 982 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 983 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 984} 985 986TEST_F(GLES2DecoderTest2, Uniform4fvImmediateValidArgs) { 987 cmds::Uniform4fvImmediate& cmd = *GetImmediateAs<cmds::Uniform4fvImmediate>(); 988 EXPECT_CALL( 989 *gl_, 990 Uniform4fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 991 SpecializedSetup<cmds::Uniform4fvImmediate, 0>(true); 992 GLfloat temp[4 * 2] = {0, }; 993 cmd.Init(1, 2, &temp[0]); 994 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 995 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 996} 997 998TEST_F(GLES2DecoderTest2, Uniform4iValidArgs) { 999 EXPECT_CALL(*gl_, Uniform4iv(1, 1, _)); 1000 SpecializedSetup<cmds::Uniform4i, 0>(true); 1001 cmds::Uniform4i cmd; 1002 cmd.Init(1, 2, 3, 4, 5); 1003 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1004 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1005} 1006 1007TEST_F(GLES2DecoderTest2, Uniform4ivValidArgs) { 1008 EXPECT_CALL( 1009 *gl_, 1010 Uniform4iv(1, 2, reinterpret_cast<const GLint*>(shared_memory_address_))); 1011 SpecializedSetup<cmds::Uniform4iv, 0>(true); 1012 cmds::Uniform4iv cmd; 1013 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_); 1014 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1015 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1016} 1017 1018TEST_F(GLES2DecoderTest2, Uniform4ivInvalidArgs1_0) { 1019 EXPECT_CALL(*gl_, Uniform4iv(_, _, _)).Times(0); 1020 SpecializedSetup<cmds::Uniform4iv, 0>(false); 1021 cmds::Uniform4iv cmd; 1022 cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_); 1023 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1024 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1025} 1026 1027TEST_F(GLES2DecoderTest2, Uniform4ivInvalidArgs2_0) { 1028 EXPECT_CALL(*gl_, Uniform4iv(_, _, _)).Times(0); 1029 SpecializedSetup<cmds::Uniform4iv, 0>(false); 1030 cmds::Uniform4iv cmd; 1031 cmd.Init(1, 2, kInvalidSharedMemoryId, 0); 1032 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1033} 1034 1035TEST_F(GLES2DecoderTest2, Uniform4ivInvalidArgs2_1) { 1036 EXPECT_CALL(*gl_, Uniform4iv(_, _, _)).Times(0); 1037 SpecializedSetup<cmds::Uniform4iv, 0>(false); 1038 cmds::Uniform4iv cmd; 1039 cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset); 1040 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1041} 1042 1043TEST_F(GLES2DecoderTest2, Uniform4ivValidArgsCountTooLarge) { 1044 EXPECT_CALL( 1045 *gl_, 1046 Uniform4iv(3, 3, reinterpret_cast<const GLint*>(shared_memory_address_))); 1047 SpecializedSetup<cmds::Uniform4iv, 0>(true); 1048 cmds::Uniform4iv cmd; 1049 cmd.Init(ProgramManager::MakeFakeLocation(1, 1), 1050 5, 1051 shared_memory_id_, 1052 shared_memory_offset_); 1053 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1054 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1055} 1056 1057TEST_F(GLES2DecoderTest2, Uniform4ivImmediateValidArgs) { 1058 cmds::Uniform4ivImmediate& cmd = *GetImmediateAs<cmds::Uniform4ivImmediate>(); 1059 EXPECT_CALL( 1060 *gl_, 1061 Uniform4iv(1, 2, reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); 1062 SpecializedSetup<cmds::Uniform4ivImmediate, 0>(true); 1063 GLint temp[4 * 2] = {0, }; 1064 cmd.Init(1, 2, &temp[0]); 1065 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1066 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1067} 1068 1069TEST_F(GLES2DecoderTest2, UniformMatrix2fvValidArgs) { 1070 EXPECT_CALL(*gl_, 1071 UniformMatrix2fv( 1072 1, 1073 2, 1074 false, 1075 reinterpret_cast<const GLfloat*>(shared_memory_address_))); 1076 SpecializedSetup<cmds::UniformMatrix2fv, 0>(true); 1077 cmds::UniformMatrix2fv cmd; 1078 cmd.Init(1, 2, false, shared_memory_id_, shared_memory_offset_); 1079 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1080 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1081} 1082 1083TEST_F(GLES2DecoderTest2, UniformMatrix2fvInvalidArgs1_0) { 1084 EXPECT_CALL(*gl_, UniformMatrix2fv(_, _, _, _)).Times(0); 1085 SpecializedSetup<cmds::UniformMatrix2fv, 0>(false); 1086 cmds::UniformMatrix2fv cmd; 1087 cmd.Init(1, -1, false, shared_memory_id_, shared_memory_offset_); 1088 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1089 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1090} 1091 1092TEST_F(GLES2DecoderTest2, UniformMatrix2fvInvalidArgs2_0) { 1093 EXPECT_CALL(*gl_, UniformMatrix2fv(_, _, _, _)).Times(0); 1094 SpecializedSetup<cmds::UniformMatrix2fv, 0>(false); 1095 cmds::UniformMatrix2fv cmd; 1096 cmd.Init(1, 2, true, shared_memory_id_, shared_memory_offset_); 1097 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1098 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1099} 1100 1101TEST_F(GLES2DecoderTest2, UniformMatrix2fvInvalidArgs3_0) { 1102 EXPECT_CALL(*gl_, UniformMatrix2fv(_, _, _, _)).Times(0); 1103 SpecializedSetup<cmds::UniformMatrix2fv, 0>(false); 1104 cmds::UniformMatrix2fv cmd; 1105 cmd.Init(1, 2, false, kInvalidSharedMemoryId, 0); 1106 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1107} 1108 1109TEST_F(GLES2DecoderTest2, UniformMatrix2fvInvalidArgs3_1) { 1110 EXPECT_CALL(*gl_, UniformMatrix2fv(_, _, _, _)).Times(0); 1111 SpecializedSetup<cmds::UniformMatrix2fv, 0>(false); 1112 cmds::UniformMatrix2fv cmd; 1113 cmd.Init(1, 2, false, shared_memory_id_, kInvalidSharedMemoryOffset); 1114 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1115} 1116 1117TEST_F(GLES2DecoderTest2, UniformMatrix2fvValidArgsCountTooLarge) { 1118 EXPECT_CALL(*gl_, 1119 UniformMatrix2fv( 1120 3, 1121 3, 1122 false, 1123 reinterpret_cast<const GLfloat*>(shared_memory_address_))); 1124 SpecializedSetup<cmds::UniformMatrix2fv, 0>(true); 1125 cmds::UniformMatrix2fv cmd; 1126 cmd.Init(ProgramManager::MakeFakeLocation(1, 1), 1127 5, 1128 false, 1129 shared_memory_id_, 1130 shared_memory_offset_); 1131 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1132 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1133} 1134 1135TEST_F(GLES2DecoderTest2, UniformMatrix2fvImmediateValidArgs) { 1136 cmds::UniformMatrix2fvImmediate& cmd = 1137 *GetImmediateAs<cmds::UniformMatrix2fvImmediate>(); 1138 EXPECT_CALL( 1139 *gl_, 1140 UniformMatrix2fv( 1141 1, 2, false, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 1142 SpecializedSetup<cmds::UniformMatrix2fvImmediate, 0>(true); 1143 GLfloat temp[4 * 2] = {0, }; 1144 cmd.Init(1, 2, false, &temp[0]); 1145 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1146 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1147} 1148 1149TEST_F(GLES2DecoderTest2, UniformMatrix2fvImmediateInvalidArgs2_0) { 1150 cmds::UniformMatrix2fvImmediate& cmd = 1151 *GetImmediateAs<cmds::UniformMatrix2fvImmediate>(); 1152 EXPECT_CALL(*gl_, UniformMatrix2fv(_, _, _, _)).Times(0); 1153 SpecializedSetup<cmds::UniformMatrix2fvImmediate, 0>(false); 1154 GLfloat temp[4 * 2] = {0, }; 1155 cmd.Init(1, 2, true, &temp[0]); 1156 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1157 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1158} 1159 1160TEST_F(GLES2DecoderTest2, UniformMatrix3fvValidArgs) { 1161 EXPECT_CALL(*gl_, 1162 UniformMatrix3fv( 1163 1, 1164 2, 1165 false, 1166 reinterpret_cast<const GLfloat*>(shared_memory_address_))); 1167 SpecializedSetup<cmds::UniformMatrix3fv, 0>(true); 1168 cmds::UniformMatrix3fv cmd; 1169 cmd.Init(1, 2, false, shared_memory_id_, shared_memory_offset_); 1170 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1171 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1172} 1173 1174TEST_F(GLES2DecoderTest2, UniformMatrix3fvInvalidArgs1_0) { 1175 EXPECT_CALL(*gl_, UniformMatrix3fv(_, _, _, _)).Times(0); 1176 SpecializedSetup<cmds::UniformMatrix3fv, 0>(false); 1177 cmds::UniformMatrix3fv cmd; 1178 cmd.Init(1, -1, false, shared_memory_id_, shared_memory_offset_); 1179 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1180 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1181} 1182 1183TEST_F(GLES2DecoderTest2, UniformMatrix3fvInvalidArgs2_0) { 1184 EXPECT_CALL(*gl_, UniformMatrix3fv(_, _, _, _)).Times(0); 1185 SpecializedSetup<cmds::UniformMatrix3fv, 0>(false); 1186 cmds::UniformMatrix3fv cmd; 1187 cmd.Init(1, 2, true, shared_memory_id_, shared_memory_offset_); 1188 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1189 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1190} 1191 1192TEST_F(GLES2DecoderTest2, UniformMatrix3fvInvalidArgs3_0) { 1193 EXPECT_CALL(*gl_, UniformMatrix3fv(_, _, _, _)).Times(0); 1194 SpecializedSetup<cmds::UniformMatrix3fv, 0>(false); 1195 cmds::UniformMatrix3fv cmd; 1196 cmd.Init(1, 2, false, kInvalidSharedMemoryId, 0); 1197 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1198} 1199 1200TEST_F(GLES2DecoderTest2, UniformMatrix3fvInvalidArgs3_1) { 1201 EXPECT_CALL(*gl_, UniformMatrix3fv(_, _, _, _)).Times(0); 1202 SpecializedSetup<cmds::UniformMatrix3fv, 0>(false); 1203 cmds::UniformMatrix3fv cmd; 1204 cmd.Init(1, 2, false, shared_memory_id_, kInvalidSharedMemoryOffset); 1205 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1206} 1207 1208TEST_F(GLES2DecoderTest2, UniformMatrix3fvValidArgsCountTooLarge) { 1209 EXPECT_CALL(*gl_, 1210 UniformMatrix3fv( 1211 3, 1212 3, 1213 false, 1214 reinterpret_cast<const GLfloat*>(shared_memory_address_))); 1215 SpecializedSetup<cmds::UniformMatrix3fv, 0>(true); 1216 cmds::UniformMatrix3fv cmd; 1217 cmd.Init(ProgramManager::MakeFakeLocation(1, 1), 1218 5, 1219 false, 1220 shared_memory_id_, 1221 shared_memory_offset_); 1222 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1223 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1224} 1225 1226TEST_F(GLES2DecoderTest2, UniformMatrix3fvImmediateValidArgs) { 1227 cmds::UniformMatrix3fvImmediate& cmd = 1228 *GetImmediateAs<cmds::UniformMatrix3fvImmediate>(); 1229 EXPECT_CALL( 1230 *gl_, 1231 UniformMatrix3fv( 1232 1, 2, false, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 1233 SpecializedSetup<cmds::UniformMatrix3fvImmediate, 0>(true); 1234 GLfloat temp[9 * 2] = {0, }; 1235 cmd.Init(1, 2, false, &temp[0]); 1236 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1237 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1238} 1239 1240TEST_F(GLES2DecoderTest2, UniformMatrix3fvImmediateInvalidArgs2_0) { 1241 cmds::UniformMatrix3fvImmediate& cmd = 1242 *GetImmediateAs<cmds::UniformMatrix3fvImmediate>(); 1243 EXPECT_CALL(*gl_, UniformMatrix3fv(_, _, _, _)).Times(0); 1244 SpecializedSetup<cmds::UniformMatrix3fvImmediate, 0>(false); 1245 GLfloat temp[9 * 2] = {0, }; 1246 cmd.Init(1, 2, true, &temp[0]); 1247 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1248 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1249} 1250 1251TEST_F(GLES2DecoderTest2, UniformMatrix4fvValidArgs) { 1252 EXPECT_CALL(*gl_, 1253 UniformMatrix4fv( 1254 1, 1255 2, 1256 false, 1257 reinterpret_cast<const GLfloat*>(shared_memory_address_))); 1258 SpecializedSetup<cmds::UniformMatrix4fv, 0>(true); 1259 cmds::UniformMatrix4fv cmd; 1260 cmd.Init(1, 2, false, shared_memory_id_, shared_memory_offset_); 1261 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1262 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1263} 1264 1265TEST_F(GLES2DecoderTest2, UniformMatrix4fvInvalidArgs1_0) { 1266 EXPECT_CALL(*gl_, UniformMatrix4fv(_, _, _, _)).Times(0); 1267 SpecializedSetup<cmds::UniformMatrix4fv, 0>(false); 1268 cmds::UniformMatrix4fv cmd; 1269 cmd.Init(1, -1, false, shared_memory_id_, shared_memory_offset_); 1270 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1271 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1272} 1273 1274TEST_F(GLES2DecoderTest2, UniformMatrix4fvInvalidArgs2_0) { 1275 EXPECT_CALL(*gl_, UniformMatrix4fv(_, _, _, _)).Times(0); 1276 SpecializedSetup<cmds::UniformMatrix4fv, 0>(false); 1277 cmds::UniformMatrix4fv cmd; 1278 cmd.Init(1, 2, true, shared_memory_id_, shared_memory_offset_); 1279 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1280 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1281} 1282 1283TEST_F(GLES2DecoderTest2, UniformMatrix4fvInvalidArgs3_0) { 1284 EXPECT_CALL(*gl_, UniformMatrix4fv(_, _, _, _)).Times(0); 1285 SpecializedSetup<cmds::UniformMatrix4fv, 0>(false); 1286 cmds::UniformMatrix4fv cmd; 1287 cmd.Init(1, 2, false, kInvalidSharedMemoryId, 0); 1288 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1289} 1290 1291TEST_F(GLES2DecoderTest2, UniformMatrix4fvInvalidArgs3_1) { 1292 EXPECT_CALL(*gl_, UniformMatrix4fv(_, _, _, _)).Times(0); 1293 SpecializedSetup<cmds::UniformMatrix4fv, 0>(false); 1294 cmds::UniformMatrix4fv cmd; 1295 cmd.Init(1, 2, false, shared_memory_id_, kInvalidSharedMemoryOffset); 1296 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1297} 1298 1299TEST_F(GLES2DecoderTest2, UniformMatrix4fvValidArgsCountTooLarge) { 1300 EXPECT_CALL(*gl_, 1301 UniformMatrix4fv( 1302 3, 1303 3, 1304 false, 1305 reinterpret_cast<const GLfloat*>(shared_memory_address_))); 1306 SpecializedSetup<cmds::UniformMatrix4fv, 0>(true); 1307 cmds::UniformMatrix4fv cmd; 1308 cmd.Init(ProgramManager::MakeFakeLocation(1, 1), 1309 5, 1310 false, 1311 shared_memory_id_, 1312 shared_memory_offset_); 1313 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1314 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1315} 1316 1317TEST_F(GLES2DecoderTest2, UniformMatrix4fvImmediateValidArgs) { 1318 cmds::UniformMatrix4fvImmediate& cmd = 1319 *GetImmediateAs<cmds::UniformMatrix4fvImmediate>(); 1320 EXPECT_CALL( 1321 *gl_, 1322 UniformMatrix4fv( 1323 1, 2, false, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 1324 SpecializedSetup<cmds::UniformMatrix4fvImmediate, 0>(true); 1325 GLfloat temp[16 * 2] = {0, }; 1326 cmd.Init(1, 2, false, &temp[0]); 1327 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1328 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1329} 1330 1331TEST_F(GLES2DecoderTest2, UniformMatrix4fvImmediateInvalidArgs2_0) { 1332 cmds::UniformMatrix4fvImmediate& cmd = 1333 *GetImmediateAs<cmds::UniformMatrix4fvImmediate>(); 1334 EXPECT_CALL(*gl_, UniformMatrix4fv(_, _, _, _)).Times(0); 1335 SpecializedSetup<cmds::UniformMatrix4fvImmediate, 0>(false); 1336 GLfloat temp[16 * 2] = {0, }; 1337 cmd.Init(1, 2, true, &temp[0]); 1338 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1339 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1340} 1341 1342TEST_F(GLES2DecoderTest2, UseProgramValidArgs) { 1343 EXPECT_CALL(*gl_, UseProgram(kServiceProgramId)); 1344 SpecializedSetup<cmds::UseProgram, 0>(true); 1345 cmds::UseProgram cmd; 1346 cmd.Init(client_program_id_); 1347 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1348 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1349} 1350 1351TEST_F(GLES2DecoderTest2, UseProgramInvalidArgs0_0) { 1352 EXPECT_CALL(*gl_, UseProgram(_)).Times(0); 1353 SpecializedSetup<cmds::UseProgram, 0>(false); 1354 cmds::UseProgram cmd; 1355 cmd.Init(kInvalidClientId); 1356 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1357 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1358} 1359 1360TEST_F(GLES2DecoderTest2, ValidateProgramValidArgs) { 1361 EXPECT_CALL(*gl_, ValidateProgram(kServiceProgramId)); 1362 SpecializedSetup<cmds::ValidateProgram, 0>(true); 1363 cmds::ValidateProgram cmd; 1364 cmd.Init(client_program_id_); 1365 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1366 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1367} 1368 1369TEST_F(GLES2DecoderTest2, VertexAttrib1fValidArgs) { 1370 EXPECT_CALL(*gl_, VertexAttrib1f(1, 2)); 1371 SpecializedSetup<cmds::VertexAttrib1f, 0>(true); 1372 cmds::VertexAttrib1f cmd; 1373 cmd.Init(1, 2); 1374 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1375 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1376} 1377 1378TEST_F(GLES2DecoderTest2, VertexAttrib1fvValidArgs) { 1379 SpecializedSetup<cmds::VertexAttrib1fv, 0>(true); 1380 cmds::VertexAttrib1fv cmd; 1381 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 1382 GetSharedMemoryAs<GLfloat*>()[0] = 0; 1383 EXPECT_CALL(*gl_, 1384 VertexAttrib1fv( 1385 1, reinterpret_cast<const GLfloat*>(shared_memory_address_))); 1386 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1387 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1388} 1389 1390TEST_F(GLES2DecoderTest2, VertexAttrib1fvInvalidArgs1_0) { 1391 EXPECT_CALL(*gl_, VertexAttrib1fv(_, _)).Times(0); 1392 SpecializedSetup<cmds::VertexAttrib1fv, 0>(false); 1393 cmds::VertexAttrib1fv cmd; 1394 cmd.Init(1, kInvalidSharedMemoryId, 0); 1395 GetSharedMemoryAs<GLfloat*>()[0] = 0; 1396 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1397} 1398 1399TEST_F(GLES2DecoderTest2, VertexAttrib1fvInvalidArgs1_1) { 1400 EXPECT_CALL(*gl_, VertexAttrib1fv(_, _)).Times(0); 1401 SpecializedSetup<cmds::VertexAttrib1fv, 0>(false); 1402 cmds::VertexAttrib1fv cmd; 1403 cmd.Init(1, shared_memory_id_, kInvalidSharedMemoryOffset); 1404 GetSharedMemoryAs<GLfloat*>()[0] = 0; 1405 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1406} 1407 1408TEST_F(GLES2DecoderTest2, VertexAttrib1fvImmediateValidArgs) { 1409 cmds::VertexAttrib1fvImmediate& cmd = 1410 *GetImmediateAs<cmds::VertexAttrib1fvImmediate>(); 1411 SpecializedSetup<cmds::VertexAttrib1fvImmediate, 0>(true); 1412 GLfloat temp[1] = {0, }; 1413 cmd.Init(1, &temp[0]); 1414 EXPECT_CALL(*gl_, 1415 VertexAttrib1fv( 1416 1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 1417 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1418 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1419} 1420 1421TEST_F(GLES2DecoderTest2, VertexAttrib2fValidArgs) { 1422 EXPECT_CALL(*gl_, VertexAttrib2f(1, 2, 3)); 1423 SpecializedSetup<cmds::VertexAttrib2f, 0>(true); 1424 cmds::VertexAttrib2f cmd; 1425 cmd.Init(1, 2, 3); 1426 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1427 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1428} 1429 1430TEST_F(GLES2DecoderTest2, VertexAttrib2fvValidArgs) { 1431 SpecializedSetup<cmds::VertexAttrib2fv, 0>(true); 1432 cmds::VertexAttrib2fv cmd; 1433 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 1434 GetSharedMemoryAs<GLfloat*>()[0] = 0; 1435 EXPECT_CALL(*gl_, 1436 VertexAttrib2fv( 1437 1, reinterpret_cast<const GLfloat*>(shared_memory_address_))); 1438 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1439 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1440} 1441 1442TEST_F(GLES2DecoderTest2, VertexAttrib2fvInvalidArgs1_0) { 1443 EXPECT_CALL(*gl_, VertexAttrib2fv(_, _)).Times(0); 1444 SpecializedSetup<cmds::VertexAttrib2fv, 0>(false); 1445 cmds::VertexAttrib2fv cmd; 1446 cmd.Init(1, kInvalidSharedMemoryId, 0); 1447 GetSharedMemoryAs<GLfloat*>()[0] = 0; 1448 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1449} 1450 1451TEST_F(GLES2DecoderTest2, VertexAttrib2fvInvalidArgs1_1) { 1452 EXPECT_CALL(*gl_, VertexAttrib2fv(_, _)).Times(0); 1453 SpecializedSetup<cmds::VertexAttrib2fv, 0>(false); 1454 cmds::VertexAttrib2fv cmd; 1455 cmd.Init(1, shared_memory_id_, kInvalidSharedMemoryOffset); 1456 GetSharedMemoryAs<GLfloat*>()[0] = 0; 1457 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1458} 1459 1460TEST_F(GLES2DecoderTest2, VertexAttrib2fvImmediateValidArgs) { 1461 cmds::VertexAttrib2fvImmediate& cmd = 1462 *GetImmediateAs<cmds::VertexAttrib2fvImmediate>(); 1463 SpecializedSetup<cmds::VertexAttrib2fvImmediate, 0>(true); 1464 GLfloat temp[2] = {0, }; 1465 cmd.Init(1, &temp[0]); 1466 EXPECT_CALL(*gl_, 1467 VertexAttrib2fv( 1468 1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 1469 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1470 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1471} 1472 1473TEST_F(GLES2DecoderTest2, VertexAttrib3fValidArgs) { 1474 EXPECT_CALL(*gl_, VertexAttrib3f(1, 2, 3, 4)); 1475 SpecializedSetup<cmds::VertexAttrib3f, 0>(true); 1476 cmds::VertexAttrib3f cmd; 1477 cmd.Init(1, 2, 3, 4); 1478 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1479 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1480} 1481 1482TEST_F(GLES2DecoderTest2, VertexAttrib3fvValidArgs) { 1483 SpecializedSetup<cmds::VertexAttrib3fv, 0>(true); 1484 cmds::VertexAttrib3fv cmd; 1485 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 1486 GetSharedMemoryAs<GLfloat*>()[0] = 0; 1487 EXPECT_CALL(*gl_, 1488 VertexAttrib3fv( 1489 1, reinterpret_cast<const GLfloat*>(shared_memory_address_))); 1490 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1491 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1492} 1493 1494TEST_F(GLES2DecoderTest2, VertexAttrib3fvInvalidArgs1_0) { 1495 EXPECT_CALL(*gl_, VertexAttrib3fv(_, _)).Times(0); 1496 SpecializedSetup<cmds::VertexAttrib3fv, 0>(false); 1497 cmds::VertexAttrib3fv cmd; 1498 cmd.Init(1, kInvalidSharedMemoryId, 0); 1499 GetSharedMemoryAs<GLfloat*>()[0] = 0; 1500 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1501} 1502 1503TEST_F(GLES2DecoderTest2, VertexAttrib3fvInvalidArgs1_1) { 1504 EXPECT_CALL(*gl_, VertexAttrib3fv(_, _)).Times(0); 1505 SpecializedSetup<cmds::VertexAttrib3fv, 0>(false); 1506 cmds::VertexAttrib3fv cmd; 1507 cmd.Init(1, shared_memory_id_, kInvalidSharedMemoryOffset); 1508 GetSharedMemoryAs<GLfloat*>()[0] = 0; 1509 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1510} 1511 1512TEST_F(GLES2DecoderTest2, VertexAttrib3fvImmediateValidArgs) { 1513 cmds::VertexAttrib3fvImmediate& cmd = 1514 *GetImmediateAs<cmds::VertexAttrib3fvImmediate>(); 1515 SpecializedSetup<cmds::VertexAttrib3fvImmediate, 0>(true); 1516 GLfloat temp[3] = {0, }; 1517 cmd.Init(1, &temp[0]); 1518 EXPECT_CALL(*gl_, 1519 VertexAttrib3fv( 1520 1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 1521 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1522 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1523} 1524 1525TEST_F(GLES2DecoderTest2, VertexAttrib4fValidArgs) { 1526 EXPECT_CALL(*gl_, VertexAttrib4f(1, 2, 3, 4, 5)); 1527 SpecializedSetup<cmds::VertexAttrib4f, 0>(true); 1528 cmds::VertexAttrib4f cmd; 1529 cmd.Init(1, 2, 3, 4, 5); 1530 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1531 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1532} 1533 1534TEST_F(GLES2DecoderTest2, VertexAttrib4fvValidArgs) { 1535 SpecializedSetup<cmds::VertexAttrib4fv, 0>(true); 1536 cmds::VertexAttrib4fv cmd; 1537 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 1538 GetSharedMemoryAs<GLfloat*>()[0] = 0; 1539 EXPECT_CALL(*gl_, 1540 VertexAttrib4fv( 1541 1, reinterpret_cast<const GLfloat*>(shared_memory_address_))); 1542 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1543 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1544} 1545 1546TEST_F(GLES2DecoderTest2, VertexAttrib4fvInvalidArgs1_0) { 1547 EXPECT_CALL(*gl_, VertexAttrib4fv(_, _)).Times(0); 1548 SpecializedSetup<cmds::VertexAttrib4fv, 0>(false); 1549 cmds::VertexAttrib4fv cmd; 1550 cmd.Init(1, kInvalidSharedMemoryId, 0); 1551 GetSharedMemoryAs<GLfloat*>()[0] = 0; 1552 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1553} 1554 1555TEST_F(GLES2DecoderTest2, VertexAttrib4fvInvalidArgs1_1) { 1556 EXPECT_CALL(*gl_, VertexAttrib4fv(_, _)).Times(0); 1557 SpecializedSetup<cmds::VertexAttrib4fv, 0>(false); 1558 cmds::VertexAttrib4fv cmd; 1559 cmd.Init(1, shared_memory_id_, kInvalidSharedMemoryOffset); 1560 GetSharedMemoryAs<GLfloat*>()[0] = 0; 1561 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1562} 1563 1564TEST_F(GLES2DecoderTest2, VertexAttrib4fvImmediateValidArgs) { 1565 cmds::VertexAttrib4fvImmediate& cmd = 1566 *GetImmediateAs<cmds::VertexAttrib4fvImmediate>(); 1567 SpecializedSetup<cmds::VertexAttrib4fvImmediate, 0>(true); 1568 GLfloat temp[4] = {0, }; 1569 cmd.Init(1, &temp[0]); 1570 EXPECT_CALL(*gl_, 1571 VertexAttrib4fv( 1572 1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 1573 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1574 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1575} 1576// TODO(gman): VertexAttribPointer 1577 1578TEST_F(GLES2DecoderTest2, ViewportValidArgs) { 1579 EXPECT_CALL(*gl_, Viewport(1, 2, 3, 4)); 1580 SpecializedSetup<cmds::Viewport, 0>(true); 1581 cmds::Viewport cmd; 1582 cmd.Init(1, 2, 3, 4); 1583 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1584 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1585} 1586 1587TEST_F(GLES2DecoderTest2, ViewportInvalidArgs2_0) { 1588 EXPECT_CALL(*gl_, Viewport(_, _, _, _)).Times(0); 1589 SpecializedSetup<cmds::Viewport, 0>(false); 1590 cmds::Viewport cmd; 1591 cmd.Init(1, 2, -1, 4); 1592 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1593 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1594} 1595 1596TEST_F(GLES2DecoderTest2, ViewportInvalidArgs3_0) { 1597 EXPECT_CALL(*gl_, Viewport(_, _, _, _)).Times(0); 1598 SpecializedSetup<cmds::Viewport, 0>(false); 1599 cmds::Viewport cmd; 1600 cmd.Init(1, 2, 3, -1); 1601 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1602 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1603} 1604// TODO(gman): BlitFramebufferCHROMIUM 1605// TODO(gman): RenderbufferStorageMultisampleCHROMIUM 1606// TODO(gman): RenderbufferStorageMultisampleEXT 1607// TODO(gman): FramebufferTexture2DMultisampleEXT 1608// TODO(gman): TexStorage2DEXT 1609// TODO(gman): GenQueriesEXT 1610// TODO(gman): GenQueriesEXTImmediate 1611// TODO(gman): DeleteQueriesEXT 1612// TODO(gman): DeleteQueriesEXTImmediate 1613// TODO(gman): BeginQueryEXT 1614 1615// TODO(gman): EndQueryEXT 1616 1617// TODO(gman): InsertEventMarkerEXT 1618 1619// TODO(gman): PushGroupMarkerEXT 1620 1621TEST_F(GLES2DecoderTest2, PopGroupMarkerEXTValidArgs) { 1622 SpecializedSetup<cmds::PopGroupMarkerEXT, 0>(true); 1623 cmds::PopGroupMarkerEXT cmd; 1624 cmd.Init(); 1625 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1626 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1627} 1628// TODO(gman): GenVertexArraysOES 1629// TODO(gman): GenVertexArraysOESImmediate 1630// TODO(gman): DeleteVertexArraysOES 1631// TODO(gman): DeleteVertexArraysOESImmediate 1632// TODO(gman): IsVertexArrayOES 1633// TODO(gman): BindVertexArrayOES 1634// TODO(gman): SwapBuffers 1635// TODO(gman): GetMaxValueInBufferCHROMIUM 1636// TODO(gman): GenSharedIdsCHROMIUM 1637 1638#endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_ 1639