// 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_UTILS_AUTOGEN_H_
#define GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_UTILS_AUTOGEN_H_

static std::string GetStringAttachment(uint32_t value);
static std::string GetStringBackbufferAttachment(uint32_t value);
static std::string GetStringBlitFilter(uint32_t value);
static std::string GetStringBufferMode(uint32_t value);
static std::string GetStringBufferParameter(uint32_t value);
static std::string GetStringBufferTarget(uint32_t value);
static std::string GetStringBufferUsage(uint32_t value);
static std::string GetStringBufferfi(uint32_t value);
static std::string GetStringBufferfv(uint32_t value);
static std::string GetStringBufferiv(uint32_t value);
static std::string GetStringBufferuiv(uint32_t value);
static std::string GetStringCapability(uint32_t value);
static std::string GetStringCmpFunction(uint32_t value);
static std::string GetStringCompressedTextureFormat(uint32_t value);
static std::string GetStringDrawMode(uint32_t value);
static std::string GetStringDstBlendFactor(uint32_t value);
static std::string GetStringEquation(uint32_t value);
static std::string GetStringFaceMode(uint32_t value);
static std::string GetStringFaceType(uint32_t value);
static std::string GetStringFrameBufferParameter(uint32_t value);
static std::string GetStringFrameBufferTarget(uint32_t value);
static std::string GetStringGLState(uint32_t value);
static std::string GetStringGetMaxIndexType(uint32_t value);
static std::string GetStringGetTexParamTarget(uint32_t value);
static std::string GetStringHintMode(uint32_t value);
static std::string GetStringHintTarget(uint32_t value);
static std::string GetStringImageInternalFormat(uint32_t value);
static std::string GetStringImageUsage(uint32_t value);
static std::string GetStringIndexType(uint32_t value);
static std::string GetStringIndexedBufferTarget(uint32_t value);
static std::string GetStringMatrixMode(uint32_t value);
static std::string GetStringPixelStore(uint32_t value);
static std::string GetStringPixelType(uint32_t value);
static std::string GetStringProgramParameter(uint32_t value);
static std::string GetStringQueryObjectParameter(uint32_t value);
static std::string GetStringQueryParameter(uint32_t value);
static std::string GetStringQueryTarget(uint32_t value);
static std::string GetStringReadPixelFormat(uint32_t value);
static std::string GetStringReadPixelType(uint32_t value);
static std::string GetStringRenderBufferFormat(uint32_t value);
static std::string GetStringRenderBufferParameter(uint32_t value);
static std::string GetStringRenderBufferTarget(uint32_t value);
static std::string GetStringResetStatus(uint32_t value);
static std::string GetStringSamplerParameter(uint32_t value);
static std::string GetStringShaderBinaryFormat(uint32_t value);
static std::string GetStringShaderParameter(uint32_t value);
static std::string GetStringShaderPrecision(uint32_t value);
static std::string GetStringShaderType(uint32_t value);
static std::string GetStringSrcBlendFactor(uint32_t value);
static std::string GetStringStencilOp(uint32_t value);
static std::string GetStringStringType(uint32_t value);
static std::string GetStringSubscriptionTarget(uint32_t value);
static std::string GetStringSyncCondition(uint32_t value);
static std::string GetStringTexture3DTarget(uint32_t value);
static std::string GetStringTextureBindTarget(uint32_t value);
static std::string GetStringTextureFormat(uint32_t value);
static std::string GetStringTextureInternalFormat(uint32_t value);
static std::string GetStringTextureInternalFormatStorage(uint32_t value);
static std::string GetStringTextureMagFilterMode(uint32_t value);
static std::string GetStringTextureMinFilterMode(uint32_t value);
static std::string GetStringTextureParameter(uint32_t value);
static std::string GetStringTexturePool(uint32_t value);
static std::string GetStringTextureTarget(uint32_t value);
static std::string GetStringTextureUsage(uint32_t value);
static std::string GetStringTextureWrapMode(uint32_t value);
static std::string GetStringTransformFeedbackBindTarget(uint32_t value);
static std::string GetStringTransformFeedbackPrimitiveMode(uint32_t value);
static std::string GetStringValueBufferTarget(uint32_t value);
static std::string GetStringVertexAttribType(uint32_t value);
static std::string GetStringVertexAttribute(uint32_t value);
static std::string GetStringVertexPointer(uint32_t value);

#endif  // GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_UTILS_AUTOGEN_H_
