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

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_
