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

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_
