// 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(GetTexParameterfv)                        /* 355 */ \
  OP(GetTexParameteriv)                        /* 356 */ \
  OP(GetTransformFeedbackVarying)              /* 357 */ \
  OP(GetUniformBlockIndex)                     /* 358 */ \
  OP(GetUniformfv)                             /* 359 */ \
  OP(GetUniformiv)                             /* 360 */ \
  OP(GetUniformIndices)                        /* 361 */ \
  OP(GetUniformLocation)                       /* 362 */ \
  OP(GetVertexAttribfv)                        /* 363 */ \
  OP(GetVertexAttribiv)                        /* 364 */ \
  OP(GetVertexAttribPointerv)                  /* 365 */ \
  OP(Hint)                                     /* 366 */ \
  OP(InvalidateFramebufferImmediate)           /* 367 */ \
  OP(InvalidateSubFramebufferImmediate)        /* 368 */ \
  OP(IsBuffer)                                 /* 369 */ \
  OP(IsEnabled)                                /* 370 */ \
  OP(IsFramebuffer)                            /* 371 */ \
  OP(IsProgram)                                /* 372 */ \
  OP(IsRenderbuffer)                           /* 373 */ \
  OP(IsSampler)                                /* 374 */ \
  OP(IsShader)                                 /* 375 */ \
  OP(IsSync)                                   /* 376 */ \
  OP(IsTexture)                                /* 377 */ \
  OP(IsTransformFeedback)                      /* 378 */ \
  OP(LineWidth)                                /* 379 */ \
  OP(LinkProgram)                              /* 380 */ \
  OP(PauseTransformFeedback)                   /* 381 */ \
  OP(PixelStorei)                              /* 382 */ \
  OP(PolygonOffset)                            /* 383 */ \
  OP(ReadBuffer)                               /* 384 */ \
  OP(ReadPixels)                               /* 385 */ \
  OP(ReleaseShaderCompiler)                    /* 386 */ \
  OP(RenderbufferStorage)                      /* 387 */ \
  OP(ResumeTransformFeedback)                  /* 388 */ \
  OP(SampleCoverage)                           /* 389 */ \
  OP(SamplerParameterf)                        /* 390 */ \
  OP(SamplerParameterfvImmediate)              /* 391 */ \
  OP(SamplerParameteri)                        /* 392 */ \
  OP(SamplerParameterivImmediate)              /* 393 */ \
  OP(Scissor)                                  /* 394 */ \
  OP(ShaderBinary)                             /* 395 */ \
  OP(ShaderSourceBucket)                       /* 396 */ \
  OP(StencilFunc)                              /* 397 */ \
  OP(StencilFuncSeparate)                      /* 398 */ \
  OP(StencilMask)                              /* 399 */ \
  OP(StencilMaskSeparate)                      /* 400 */ \
  OP(StencilOp)                                /* 401 */ \
  OP(StencilOpSeparate)                        /* 402 */ \
  OP(TexImage2D)                               /* 403 */ \
  OP(TexImage3D)                               /* 404 */ \
  OP(TexParameterf)                            /* 405 */ \
  OP(TexParameterfvImmediate)                  /* 406 */ \
  OP(TexParameteri)                            /* 407 */ \
  OP(TexParameterivImmediate)                  /* 408 */ \
  OP(TexStorage3D)                             /* 409 */ \
  OP(TexSubImage2D)                            /* 410 */ \
  OP(TexSubImage3D)                            /* 411 */ \
  OP(TransformFeedbackVaryingsBucket)          /* 412 */ \
  OP(Uniform1f)                                /* 413 */ \
  OP(Uniform1fvImmediate)                      /* 414 */ \
  OP(Uniform1i)                                /* 415 */ \
  OP(Uniform1ivImmediate)                      /* 416 */ \
  OP(Uniform1ui)                               /* 417 */ \
  OP(Uniform1uivImmediate)                     /* 418 */ \
  OP(Uniform2f)                                /* 419 */ \
  OP(Uniform2fvImmediate)                      /* 420 */ \
  OP(Uniform2i)                                /* 421 */ \
  OP(Uniform2ivImmediate)                      /* 422 */ \
  OP(Uniform2ui)                               /* 423 */ \
  OP(Uniform2uivImmediate)                     /* 424 */ \
  OP(Uniform3f)                                /* 425 */ \
  OP(Uniform3fvImmediate)                      /* 426 */ \
  OP(Uniform3i)                                /* 427 */ \
  OP(Uniform3ivImmediate)                      /* 428 */ \
  OP(Uniform3ui)                               /* 429 */ \
  OP(Uniform3uivImmediate)                     /* 430 */ \
  OP(Uniform4f)                                /* 431 */ \
  OP(Uniform4fvImmediate)                      /* 432 */ \
  OP(Uniform4i)                                /* 433 */ \
  OP(Uniform4ivImmediate)                      /* 434 */ \
  OP(Uniform4ui)                               /* 435 */ \
  OP(Uniform4uivImmediate)                     /* 436 */ \
  OP(UniformBlockBinding)                      /* 437 */ \
  OP(UniformMatrix2fvImmediate)                /* 438 */ \
  OP(UniformMatrix2x3fvImmediate)              /* 439 */ \
  OP(UniformMatrix2x4fvImmediate)              /* 440 */ \
  OP(UniformMatrix3fvImmediate)                /* 441 */ \
  OP(UniformMatrix3x2fvImmediate)              /* 442 */ \
  OP(UniformMatrix3x4fvImmediate)              /* 443 */ \
  OP(UniformMatrix4fvImmediate)                /* 444 */ \
  OP(UniformMatrix4x2fvImmediate)              /* 445 */ \
  OP(UniformMatrix4x3fvImmediate)              /* 446 */ \
  OP(UseProgram)                               /* 447 */ \
  OP(ValidateProgram)                          /* 448 */ \
  OP(VertexAttrib1f)                           /* 449 */ \
  OP(VertexAttrib1fvImmediate)                 /* 450 */ \
  OP(VertexAttrib2f)                           /* 451 */ \
  OP(VertexAttrib2fvImmediate)                 /* 452 */ \
  OP(VertexAttrib3f)                           /* 453 */ \
  OP(VertexAttrib3fvImmediate)                 /* 454 */ \
  OP(VertexAttrib4f)                           /* 455 */ \
  OP(VertexAttrib4fvImmediate)                 /* 456 */ \
  OP(VertexAttribI4i)                          /* 457 */ \
  OP(VertexAttribI4ivImmediate)                /* 458 */ \
  OP(VertexAttribI4ui)                         /* 459 */ \
  OP(VertexAttribI4uivImmediate)               /* 460 */ \
  OP(VertexAttribIPointer)                     /* 461 */ \
  OP(VertexAttribPointer)                      /* 462 */ \
  OP(Viewport)                                 /* 463 */ \
  OP(WaitSync)                                 /* 464 */ \
  OP(BlitFramebufferCHROMIUM)                  /* 465 */ \
  OP(RenderbufferStorageMultisampleCHROMIUM)   /* 466 */ \
  OP(RenderbufferStorageMultisampleEXT)        /* 467 */ \
  OP(FramebufferTexture2DMultisampleEXT)       /* 468 */ \
  OP(TexStorage2DEXT)                          /* 469 */ \
  OP(GenQueriesEXTImmediate)                   /* 470 */ \
  OP(DeleteQueriesEXTImmediate)                /* 471 */ \
  OP(BeginQueryEXT)                            /* 472 */ \
  OP(BeginTransformFeedback)                   /* 473 */ \
  OP(EndQueryEXT)                              /* 474 */ \
  OP(EndTransformFeedback)                     /* 475 */ \
  OP(InsertEventMarkerEXT)                     /* 476 */ \
  OP(PushGroupMarkerEXT)                       /* 477 */ \
  OP(PopGroupMarkerEXT)                        /* 478 */ \
  OP(GenVertexArraysOESImmediate)              /* 479 */ \
  OP(DeleteVertexArraysOESImmediate)           /* 480 */ \
  OP(IsVertexArrayOES)                         /* 481 */ \
  OP(BindVertexArrayOES)                       /* 482 */ \
  OP(SwapBuffers)                              /* 483 */ \
  OP(GetMaxValueInBufferCHROMIUM)              /* 484 */ \
  OP(EnableFeatureCHROMIUM)                    /* 485 */ \
  OP(ResizeCHROMIUM)                           /* 486 */ \
  OP(GetRequestableExtensionsCHROMIUM)         /* 487 */ \
  OP(RequestExtensionCHROMIUM)                 /* 488 */ \
  OP(GetProgramInfoCHROMIUM)                   /* 489 */ \
  OP(GetUniformBlocksCHROMIUM)                 /* 490 */ \
  OP(GetTransformFeedbackVaryingsCHROMIUM)     /* 491 */ \
  OP(GetUniformsES3CHROMIUM)                   /* 492 */ \
  OP(GetTranslatedShaderSourceANGLE)           /* 493 */ \
  OP(PostSubBufferCHROMIUM)                    /* 494 */ \
  OP(TexImageIOSurface2DCHROMIUM)              /* 495 */ \
  OP(CopyTextureCHROMIUM)                      /* 496 */ \
  OP(DrawArraysInstancedANGLE)                 /* 497 */ \
  OP(DrawElementsInstancedANGLE)               /* 498 */ \
  OP(VertexAttribDivisorANGLE)                 /* 499 */ \
  OP(GenMailboxCHROMIUM)                       /* 500 */ \
  OP(ProduceTextureCHROMIUMImmediate)          /* 501 */ \
  OP(ProduceTextureDirectCHROMIUMImmediate)    /* 502 */ \
  OP(ConsumeTextureCHROMIUMImmediate)          /* 503 */ \
  OP(CreateAndConsumeTextureCHROMIUMImmediate) /* 504 */ \
  OP(BindUniformLocationCHROMIUMBucket)        /* 505 */ \
  OP(GenValuebuffersCHROMIUMImmediate)         /* 506 */ \
  OP(DeleteValuebuffersCHROMIUMImmediate)      /* 507 */ \
  OP(IsValuebufferCHROMIUM)                    /* 508 */ \
  OP(BindValuebufferCHROMIUM)                  /* 509 */ \
  OP(SubscribeValueCHROMIUM)                   /* 510 */ \
  OP(PopulateSubscribedValuesCHROMIUM)         /* 511 */ \
  OP(UniformValuebufferCHROMIUM)               /* 512 */ \
  OP(BindTexImage2DCHROMIUM)                   /* 513 */ \
  OP(ReleaseTexImage2DCHROMIUM)                /* 514 */ \
  OP(TraceBeginCHROMIUM)                       /* 515 */ \
  OP(TraceEndCHROMIUM)                         /* 516 */ \
  OP(AsyncTexSubImage2DCHROMIUM)               /* 517 */ \
  OP(AsyncTexImage2DCHROMIUM)                  /* 518 */ \
  OP(WaitAsyncTexImage2DCHROMIUM)              /* 519 */ \
  OP(WaitAllAsyncTexImage2DCHROMIUM)           /* 520 */ \
  OP(DiscardFramebufferEXTImmediate)           /* 521 */ \
  OP(LoseContextCHROMIUM)                      /* 522 */ \
  OP(InsertSyncPointCHROMIUM)                  /* 523 */ \
  OP(WaitSyncPointCHROMIUM)                    /* 524 */ \
  OP(DrawBuffersEXTImmediate)                  /* 525 */ \
  OP(DiscardBackbufferCHROMIUM)                /* 526 */ \
  OP(ScheduleOverlayPlaneCHROMIUM)             /* 527 */ \
  OP(SwapInterval)                             /* 528 */ \
  OP(MatrixLoadfCHROMIUMImmediate)             /* 529 */ \
  OP(MatrixLoadIdentityCHROMIUM)               /* 530 */ \
  OP(BlendBarrierKHR)                          /* 531 */

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_
