// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This file is auto-generated from
// gpu/command_buffer/build_gles2_cmd_buffer.py
// It's formatted by clang-format using chromium coding style:
//    clang-format -i -style=chromium filename
// DO NOT EDIT!

#ifndef GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_IDS_AUTOGEN_H_
#define GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_IDS_AUTOGEN_H_

#define GLES2_COMMAND_LIST(OP)                           \
  OP(ActiveTexture)                            /* 256 */ \
  OP(AttachShader)                             /* 257 */ \
  OP(BindAttribLocationBucket)                 /* 258 */ \
  OP(BindBuffer)                               /* 259 */ \
  OP(BindBufferBase)                           /* 260 */ \
  OP(BindBufferRange)                          /* 261 */ \
  OP(BindFramebuffer)                          /* 262 */ \
  OP(BindRenderbuffer)                         /* 263 */ \
  OP(BindSampler)                              /* 264 */ \
  OP(BindTexture)                              /* 265 */ \
  OP(BindTransformFeedback)                    /* 266 */ \
  OP(BlendColor)                               /* 267 */ \
  OP(BlendEquation)                            /* 268 */ \
  OP(BlendEquationSeparate)                    /* 269 */ \
  OP(BlendFunc)                                /* 270 */ \
  OP(BlendFuncSeparate)                        /* 271 */ \
  OP(BufferData)                               /* 272 */ \
  OP(BufferSubData)                            /* 273 */ \
  OP(CheckFramebufferStatus)                   /* 274 */ \
  OP(Clear)                                    /* 275 */ \
  OP(ClearBufferfi)                            /* 276 */ \
  OP(ClearBufferfvImmediate)                   /* 277 */ \
  OP(ClearBufferivImmediate)                   /* 278 */ \
  OP(ClearBufferuivImmediate)                  /* 279 */ \
  OP(ClearColor)                               /* 280 */ \
  OP(ClearDepthf)                              /* 281 */ \
  OP(ClearStencil)                             /* 282 */ \
  OP(ColorMask)                                /* 283 */ \
  OP(CompileShader)                            /* 284 */ \
  OP(CompressedTexImage2DBucket)               /* 285 */ \
  OP(CompressedTexImage2D)                     /* 286 */ \
  OP(CompressedTexSubImage2DBucket)            /* 287 */ \
  OP(CompressedTexSubImage2D)                  /* 288 */ \
  OP(CopyBufferSubData)                        /* 289 */ \
  OP(CopyTexImage2D)                           /* 290 */ \
  OP(CopyTexSubImage2D)                        /* 291 */ \
  OP(CopyTexSubImage3D)                        /* 292 */ \
  OP(CreateProgram)                            /* 293 */ \
  OP(CreateShader)                             /* 294 */ \
  OP(CullFace)                                 /* 295 */ \
  OP(DeleteBuffersImmediate)                   /* 296 */ \
  OP(DeleteFramebuffersImmediate)              /* 297 */ \
  OP(DeleteProgram)                            /* 298 */ \
  OP(DeleteRenderbuffersImmediate)             /* 299 */ \
  OP(DeleteSamplersImmediate)                  /* 300 */ \
  OP(DeleteSync)                               /* 301 */ \
  OP(DeleteShader)                             /* 302 */ \
  OP(DeleteTexturesImmediate)                  /* 303 */ \
  OP(DeleteTransformFeedbacksImmediate)        /* 304 */ \
  OP(DepthFunc)                                /* 305 */ \
  OP(DepthMask)                                /* 306 */ \
  OP(DepthRangef)                              /* 307 */ \
  OP(DetachShader)                             /* 308 */ \
  OP(Disable)                                  /* 309 */ \
  OP(DisableVertexAttribArray)                 /* 310 */ \
  OP(DrawArrays)                               /* 311 */ \
  OP(DrawElements)                             /* 312 */ \
  OP(Enable)                                   /* 313 */ \
  OP(EnableVertexAttribArray)                  /* 314 */ \
  OP(FenceSync)                                /* 315 */ \
  OP(Finish)                                   /* 316 */ \
  OP(Flush)                                    /* 317 */ \
  OP(FramebufferRenderbuffer)                  /* 318 */ \
  OP(FramebufferTexture2D)                     /* 319 */ \
  OP(FramebufferTextureLayer)                  /* 320 */ \
  OP(FrontFace)                                /* 321 */ \
  OP(GenBuffersImmediate)                      /* 322 */ \
  OP(GenerateMipmap)                           /* 323 */ \
  OP(GenFramebuffersImmediate)                 /* 324 */ \
  OP(GenRenderbuffersImmediate)                /* 325 */ \
  OP(GenSamplersImmediate)                     /* 326 */ \
  OP(GenTexturesImmediate)                     /* 327 */ \
  OP(GenTransformFeedbacksImmediate)           /* 328 */ \
  OP(GetActiveAttrib)                          /* 329 */ \
  OP(GetActiveUniform)                         /* 330 */ \
  OP(GetActiveUniformBlockName)                /* 331 */ \
  OP(GetAttachedShaders)                       /* 332 */ \
  OP(GetAttribLocation)                        /* 333 */ \
  OP(GetBooleanv)                              /* 334 */ \
  OP(GetBufferParameteriv)                     /* 335 */ \
  OP(GetError)                                 /* 336 */ \
  OP(GetFloatv)                                /* 337 */ \
  OP(GetFragDataLocation)                      /* 338 */ \
  OP(GetFramebufferAttachmentParameteriv)      /* 339 */ \
  OP(GetIntegerv)                              /* 340 */ \
  OP(GetInternalformativ)                      /* 341 */ \
  OP(GetProgramiv)                             /* 342 */ \
  OP(GetProgramInfoLog)                        /* 343 */ \
  OP(GetRenderbufferParameteriv)               /* 344 */ \
  OP(GetSamplerParameterfv)                    /* 345 */ \
  OP(GetSamplerParameteriv)                    /* 346 */ \
  OP(GetShaderiv)                              /* 347 */ \
  OP(GetShaderInfoLog)                         /* 348 */ \
  OP(GetShaderPrecisionFormat)                 /* 349 */ \
  OP(GetShaderSource)                          /* 350 */ \
  OP(GetString)                                /* 351 */ \
  OP(GetTexParameterfv)                        /* 352 */ \
  OP(GetTexParameteriv)                        /* 353 */ \
  OP(GetUniformBlockIndex)                     /* 354 */ \
  OP(GetUniformfv)                             /* 355 */ \
  OP(GetUniformiv)                             /* 356 */ \
  OP(GetUniformLocation)                       /* 357 */ \
  OP(GetVertexAttribfv)                        /* 358 */ \
  OP(GetVertexAttribiv)                        /* 359 */ \
  OP(GetVertexAttribPointerv)                  /* 360 */ \
  OP(Hint)                                     /* 361 */ \
  OP(InvalidateFramebufferImmediate)           /* 362 */ \
  OP(InvalidateSubFramebufferImmediate)        /* 363 */ \
  OP(IsBuffer)                                 /* 364 */ \
  OP(IsEnabled)                                /* 365 */ \
  OP(IsFramebuffer)                            /* 366 */ \
  OP(IsProgram)                                /* 367 */ \
  OP(IsRenderbuffer)                           /* 368 */ \
  OP(IsSampler)                                /* 369 */ \
  OP(IsShader)                                 /* 370 */ \
  OP(IsSync)                                   /* 371 */ \
  OP(IsTexture)                                /* 372 */ \
  OP(IsTransformFeedback)                      /* 373 */ \
  OP(LineWidth)                                /* 374 */ \
  OP(LinkProgram)                              /* 375 */ \
  OP(PauseTransformFeedback)                   /* 376 */ \
  OP(PixelStorei)                              /* 377 */ \
  OP(PolygonOffset)                            /* 378 */ \
  OP(ReadBuffer)                               /* 379 */ \
  OP(ReadPixels)                               /* 380 */ \
  OP(ReleaseShaderCompiler)                    /* 381 */ \
  OP(RenderbufferStorage)                      /* 382 */ \
  OP(ResumeTransformFeedback)                  /* 383 */ \
  OP(SampleCoverage)                           /* 384 */ \
  OP(SamplerParameterf)                        /* 385 */ \
  OP(SamplerParameterfvImmediate)              /* 386 */ \
  OP(SamplerParameteri)                        /* 387 */ \
  OP(SamplerParameterivImmediate)              /* 388 */ \
  OP(Scissor)                                  /* 389 */ \
  OP(ShaderBinary)                             /* 390 */ \
  OP(ShaderSourceBucket)                       /* 391 */ \
  OP(StencilFunc)                              /* 392 */ \
  OP(StencilFuncSeparate)                      /* 393 */ \
  OP(StencilMask)                              /* 394 */ \
  OP(StencilMaskSeparate)                      /* 395 */ \
  OP(StencilOp)                                /* 396 */ \
  OP(StencilOpSeparate)                        /* 397 */ \
  OP(TexImage2D)                               /* 398 */ \
  OP(TexImage3D)                               /* 399 */ \
  OP(TexParameterf)                            /* 400 */ \
  OP(TexParameterfvImmediate)                  /* 401 */ \
  OP(TexParameteri)                            /* 402 */ \
  OP(TexParameterivImmediate)                  /* 403 */ \
  OP(TexStorage3D)                             /* 404 */ \
  OP(TexSubImage2D)                            /* 405 */ \
  OP(TexSubImage3D)                            /* 406 */ \
  OP(TransformFeedbackVaryingsBucket)          /* 407 */ \
  OP(Uniform1f)                                /* 408 */ \
  OP(Uniform1fvImmediate)                      /* 409 */ \
  OP(Uniform1i)                                /* 410 */ \
  OP(Uniform1ivImmediate)                      /* 411 */ \
  OP(Uniform1ui)                               /* 412 */ \
  OP(Uniform1uivImmediate)                     /* 413 */ \
  OP(Uniform2f)                                /* 414 */ \
  OP(Uniform2fvImmediate)                      /* 415 */ \
  OP(Uniform2i)                                /* 416 */ \
  OP(Uniform2ivImmediate)                      /* 417 */ \
  OP(Uniform2ui)                               /* 418 */ \
  OP(Uniform2uivImmediate)                     /* 419 */ \
  OP(Uniform3f)                                /* 420 */ \
  OP(Uniform3fvImmediate)                      /* 421 */ \
  OP(Uniform3i)                                /* 422 */ \
  OP(Uniform3ivImmediate)                      /* 423 */ \
  OP(Uniform3ui)                               /* 424 */ \
  OP(Uniform3uivImmediate)                     /* 425 */ \
  OP(Uniform4f)                                /* 426 */ \
  OP(Uniform4fvImmediate)                      /* 427 */ \
  OP(Uniform4i)                                /* 428 */ \
  OP(Uniform4ivImmediate)                      /* 429 */ \
  OP(Uniform4ui)                               /* 430 */ \
  OP(Uniform4uivImmediate)                     /* 431 */ \
  OP(UniformMatrix2fvImmediate)                /* 432 */ \
  OP(UniformMatrix2x3fvImmediate)              /* 433 */ \
  OP(UniformMatrix2x4fvImmediate)              /* 434 */ \
  OP(UniformMatrix3fvImmediate)                /* 435 */ \
  OP(UniformMatrix3x2fvImmediate)              /* 436 */ \
  OP(UniformMatrix3x4fvImmediate)              /* 437 */ \
  OP(UniformMatrix4fvImmediate)                /* 438 */ \
  OP(UniformMatrix4x2fvImmediate)              /* 439 */ \
  OP(UniformMatrix4x3fvImmediate)              /* 440 */ \
  OP(UseProgram)                               /* 441 */ \
  OP(ValidateProgram)                          /* 442 */ \
  OP(VertexAttrib1f)                           /* 443 */ \
  OP(VertexAttrib1fvImmediate)                 /* 444 */ \
  OP(VertexAttrib2f)                           /* 445 */ \
  OP(VertexAttrib2fvImmediate)                 /* 446 */ \
  OP(VertexAttrib3f)                           /* 447 */ \
  OP(VertexAttrib3fvImmediate)                 /* 448 */ \
  OP(VertexAttrib4f)                           /* 449 */ \
  OP(VertexAttrib4fvImmediate)                 /* 450 */ \
  OP(VertexAttribI4i)                          /* 451 */ \
  OP(VertexAttribI4ivImmediate)                /* 452 */ \
  OP(VertexAttribI4ui)                         /* 453 */ \
  OP(VertexAttribI4uivImmediate)               /* 454 */ \
  OP(VertexAttribIPointer)                     /* 455 */ \
  OP(VertexAttribPointer)                      /* 456 */ \
  OP(Viewport)                                 /* 457 */ \
  OP(BlitFramebufferCHROMIUM)                  /* 458 */ \
  OP(RenderbufferStorageMultisampleCHROMIUM)   /* 459 */ \
  OP(RenderbufferStorageMultisampleEXT)        /* 460 */ \
  OP(FramebufferTexture2DMultisampleEXT)       /* 461 */ \
  OP(TexStorage2DEXT)                          /* 462 */ \
  OP(GenQueriesEXTImmediate)                   /* 463 */ \
  OP(DeleteQueriesEXTImmediate)                /* 464 */ \
  OP(BeginQueryEXT)                            /* 465 */ \
  OP(BeginTransformFeedback)                   /* 466 */ \
  OP(EndQueryEXT)                              /* 467 */ \
  OP(EndTransformFeedback)                     /* 468 */ \
  OP(InsertEventMarkerEXT)                     /* 469 */ \
  OP(PushGroupMarkerEXT)                       /* 470 */ \
  OP(PopGroupMarkerEXT)                        /* 471 */ \
  OP(GenVertexArraysOESImmediate)              /* 472 */ \
  OP(DeleteVertexArraysOESImmediate)           /* 473 */ \
  OP(IsVertexArrayOES)                         /* 474 */ \
  OP(BindVertexArrayOES)                       /* 475 */ \
  OP(SwapBuffers)                              /* 476 */ \
  OP(GetMaxValueInBufferCHROMIUM)              /* 477 */ \
  OP(EnableFeatureCHROMIUM)                    /* 478 */ \
  OP(ResizeCHROMIUM)                           /* 479 */ \
  OP(GetRequestableExtensionsCHROMIUM)         /* 480 */ \
  OP(RequestExtensionCHROMIUM)                 /* 481 */ \
  OP(GetProgramInfoCHROMIUM)                   /* 482 */ \
  OP(GetUniformBlocksCHROMIUM)                 /* 483 */ \
  OP(GetTranslatedShaderSourceANGLE)           /* 484 */ \
  OP(PostSubBufferCHROMIUM)                    /* 485 */ \
  OP(TexImageIOSurface2DCHROMIUM)              /* 486 */ \
  OP(CopyTextureCHROMIUM)                      /* 487 */ \
  OP(DrawArraysInstancedANGLE)                 /* 488 */ \
  OP(DrawElementsInstancedANGLE)               /* 489 */ \
  OP(VertexAttribDivisorANGLE)                 /* 490 */ \
  OP(GenMailboxCHROMIUM)                       /* 491 */ \
  OP(ProduceTextureCHROMIUMImmediate)          /* 492 */ \
  OP(ProduceTextureDirectCHROMIUMImmediate)    /* 493 */ \
  OP(ConsumeTextureCHROMIUMImmediate)          /* 494 */ \
  OP(CreateAndConsumeTextureCHROMIUMImmediate) /* 495 */ \
  OP(BindUniformLocationCHROMIUMBucket)        /* 496 */ \
  OP(GenValuebuffersCHROMIUMImmediate)         /* 497 */ \
  OP(DeleteValuebuffersCHROMIUMImmediate)      /* 498 */ \
  OP(IsValuebufferCHROMIUM)                    /* 499 */ \
  OP(BindValuebufferCHROMIUM)                  /* 500 */ \
  OP(SubscribeValueCHROMIUM)                   /* 501 */ \
  OP(PopulateSubscribedValuesCHROMIUM)         /* 502 */ \
  OP(UniformValuebufferCHROMIUM)               /* 503 */ \
  OP(BindTexImage2DCHROMIUM)                   /* 504 */ \
  OP(ReleaseTexImage2DCHROMIUM)                /* 505 */ \
  OP(TraceBeginCHROMIUM)                       /* 506 */ \
  OP(TraceEndCHROMIUM)                         /* 507 */ \
  OP(AsyncTexSubImage2DCHROMIUM)               /* 508 */ \
  OP(AsyncTexImage2DCHROMIUM)                  /* 509 */ \
  OP(WaitAsyncTexImage2DCHROMIUM)              /* 510 */ \
  OP(WaitAllAsyncTexImage2DCHROMIUM)           /* 511 */ \
  OP(DiscardFramebufferEXTImmediate)           /* 512 */ \
  OP(LoseContextCHROMIUM)                      /* 513 */ \
  OP(InsertSyncPointCHROMIUM)                  /* 514 */ \
  OP(WaitSyncPointCHROMIUM)                    /* 515 */ \
  OP(DrawBuffersEXTImmediate)                  /* 516 */ \
  OP(DiscardBackbufferCHROMIUM)                /* 517 */ \
  OP(ScheduleOverlayPlaneCHROMIUM)             /* 518 */ \
  OP(SwapInterval)                             /* 519 */ \
  OP(MatrixLoadfCHROMIUMImmediate)             /* 520 */ \
  OP(MatrixLoadIdentityCHROMIUM)               /* 521 */ \
  OP(BlendBarrierKHR)                          /* 522 */

enum CommandId {
  kStartPoint = cmd::kLastCommonId,  // All GLES2 commands start after this.
#define GLES2_CMD_OP(name) k##name,
  GLES2_COMMAND_LIST(GLES2_CMD_OP)
#undef GLES2_CMD_OP
      kNumCommands
};

#endif  // GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_IDS_AUTOGEN_H_
