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

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_
