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

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_
