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

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_
