// GENERATED FILE - DO NOT EDIT.
// Generated by gen_vk_internal_shaders.py using data from shaders/src/*
//
// Copyright 2019 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// vk_internal_shaders_autogen.h:
//   Pre-generated shader library for the ANGLE Vulkan back-end.

#ifndef LIBANGLE_RENDERER_VULKAN_VK_INTERNAL_SHADERS_AUTOGEN_H_
#define LIBANGLE_RENDERER_VULKAN_VK_INTERNAL_SHADERS_AUTOGEN_H_

#include "libANGLE/renderer/vulkan/vk_utils.h"

namespace rx
{
namespace vk
{
namespace InternalShader
{
namespace BlitResolve_frag
{
enum flags
{
    kSrcIsArray = 0x00000001,
    kIsResolve  = 0x00000002,
};
enum Blit
{
    kBlitColorFloat   = 0x00000000,
    kBlitColorInt     = 0x00000004,
    kBlitColorUint    = 0x00000008,
    kBlitDepth        = 0x0000000C,
    kBlitStencil      = 0x00000010,
    kBlitDepthStencil = 0x00000014,
};
constexpr size_t kArrayLen = 0x00000018;
}  // namespace BlitResolve_frag

namespace BlitResolveStencilNoExport_comp
{
enum flags
{
    kSrcIsArray = 0x00000001,
    kIsResolve  = 0x00000002,
};
constexpr size_t kArrayLen = 0x00000004;
}  // namespace BlitResolveStencilNoExport_comp

namespace BufferUtils_comp
{
enum flags
{
    kIsAligned = 0x00000001,
};
enum Function
{
    kIsClear = 0x00000000,
    kIsCopy  = 0x00000002,
};
enum Format
{
    kIsFloat = 0x00000000,
    kIsSint  = 0x00000004,
    kIsUint  = 0x00000008,
};
constexpr size_t kArrayLen = 0x0000000C;
}  // namespace BufferUtils_comp

namespace ConvertIndex_comp
{
enum flags
{
    kIsPrimitiveRestartEnabled = 0x00000001,
    kIsIndirect                = 0x00000002,
};
constexpr size_t kArrayLen = 0x00000004;
}  // namespace ConvertIndex_comp

namespace ConvertIndexIndirectLineLoop_comp
{
enum flags
{
    kIs32Bit = 0x00000001,
};
constexpr size_t kArrayLen = 0x00000002;
}  // namespace ConvertIndexIndirectLineLoop_comp

namespace ConvertIndirectLineLoop_comp
{
constexpr size_t kArrayLen = 0x00000001;
}  // namespace ConvertIndirectLineLoop_comp

namespace ConvertVertex_comp
{
enum Conversion
{
    kSintToSint          = 0x00000000,
    kUintToUint          = 0x00000001,
    kSintToFloat         = 0x00000002,
    kUintToFloat         = 0x00000003,
    kSnormToFloat        = 0x00000004,
    kUnormToFloat        = 0x00000005,
    kFixedToFloat        = 0x00000006,
    kFloatToFloat        = 0x00000007,
    kA2BGR10SintToSint   = 0x00000008,
    kA2BGR10UintToUint   = 0x00000009,
    kA2BGR10SintToFloat  = 0x0000000A,
    kA2BGR10UintToFloat  = 0x0000000B,
    kA2BGR10SnormToFloat = 0x0000000C,
    kRGB10A2SintToFloat  = 0x0000000D,
    kRGB10A2UintToFloat  = 0x0000000E,
    kRGB10A2SnormToFloat = 0x0000000F,
    kRGB10A2UnormToFloat = 0x00000010,
};
constexpr size_t kArrayLen = 0x00000011;
}  // namespace ConvertVertex_comp

namespace FullScreenQuad_vert
{
constexpr size_t kArrayLen = 0x00000001;
}  // namespace FullScreenQuad_vert

namespace ImageClear_frag
{
enum AttachmentIndex
{
    kAttachment0 = 0x00000000,
    kAttachment1 = 0x00000001,
    kAttachment2 = 0x00000002,
    kAttachment3 = 0x00000003,
    kAttachment4 = 0x00000004,
    kAttachment5 = 0x00000005,
    kAttachment6 = 0x00000006,
    kAttachment7 = 0x00000007,
};
enum Format
{
    kIsFloat = 0x00000000,
    kIsSint  = 0x00000008,
    kIsUint  = 0x00000010,
};
constexpr size_t kArrayLen = 0x00000018;
}  // namespace ImageClear_frag

namespace ImageCopy_frag
{
enum flags
{
    kSrcIsArray = 0x00000001,
};
enum SrcFormat
{
    kSrcIsFloat = 0x00000000,
    kSrcIsSint  = 0x00000002,
    kSrcIsUint  = 0x00000004,
};
enum DestFormat
{
    kDestIsFloat = 0x00000000,
    kDestIsSint  = 0x00000008,
    kDestIsUint  = 0x00000010,
};
constexpr size_t kArrayLen = 0x00000016;
}  // namespace ImageCopy_frag

namespace OverlayCull_comp
{
enum SubgroupSize
{
    kIs8x4 = 0x00000000,
    kIs8x8 = 0x00000001,
};
enum SubgroupOp
{
    kSupportsBallot     = 0x00000000,
    kSupportsArithmetic = 0x00000002,
    kSupportsNone       = 0x00000004,
};
constexpr size_t kArrayLen = 0x00000006;
}  // namespace OverlayCull_comp

namespace OverlayDraw_comp
{
enum SubgroupSize
{
    kIs8x4 = 0x00000000,
    kIs8x8 = 0x00000001,
};
constexpr size_t kArrayLen = 0x00000002;
}  // namespace OverlayDraw_comp

}  // namespace InternalShader

class ShaderLibrary final : angle::NonCopyable
{
  public:
    ShaderLibrary();
    ~ShaderLibrary();

    void destroy(VkDevice device);

    angle::Result getBlitResolve_frag(Context *context,
                                      uint32_t shaderFlags,
                                      RefCounted<ShaderAndSerial> **shaderOut);
    angle::Result getBlitResolveStencilNoExport_comp(Context *context,
                                                     uint32_t shaderFlags,
                                                     RefCounted<ShaderAndSerial> **shaderOut);
    angle::Result getBufferUtils_comp(Context *context,
                                      uint32_t shaderFlags,
                                      RefCounted<ShaderAndSerial> **shaderOut);
    angle::Result getConvertIndex_comp(Context *context,
                                       uint32_t shaderFlags,
                                       RefCounted<ShaderAndSerial> **shaderOut);
    angle::Result getConvertIndexIndirectLineLoop_comp(Context *context,
                                                       uint32_t shaderFlags,
                                                       RefCounted<ShaderAndSerial> **shaderOut);
    angle::Result getConvertIndirectLineLoop_comp(Context *context,
                                                  uint32_t shaderFlags,
                                                  RefCounted<ShaderAndSerial> **shaderOut);
    angle::Result getConvertVertex_comp(Context *context,
                                        uint32_t shaderFlags,
                                        RefCounted<ShaderAndSerial> **shaderOut);
    angle::Result getFullScreenQuad_vert(Context *context,
                                         uint32_t shaderFlags,
                                         RefCounted<ShaderAndSerial> **shaderOut);
    angle::Result getImageClear_frag(Context *context,
                                     uint32_t shaderFlags,
                                     RefCounted<ShaderAndSerial> **shaderOut);
    angle::Result getImageCopy_frag(Context *context,
                                    uint32_t shaderFlags,
                                    RefCounted<ShaderAndSerial> **shaderOut);
    angle::Result getOverlayCull_comp(Context *context,
                                      uint32_t shaderFlags,
                                      RefCounted<ShaderAndSerial> **shaderOut);
    angle::Result getOverlayDraw_comp(Context *context,
                                      uint32_t shaderFlags,
                                      RefCounted<ShaderAndSerial> **shaderOut);

  private:
    RefCounted<ShaderAndSerial>
        mBlitResolve_frag_shaders[InternalShader::BlitResolve_frag::kArrayLen];
    RefCounted<ShaderAndSerial> mBlitResolveStencilNoExport_comp_shaders
        [InternalShader::BlitResolveStencilNoExport_comp::kArrayLen];
    RefCounted<ShaderAndSerial>
        mBufferUtils_comp_shaders[InternalShader::BufferUtils_comp::kArrayLen];
    RefCounted<ShaderAndSerial>
        mConvertIndex_comp_shaders[InternalShader::ConvertIndex_comp::kArrayLen];
    RefCounted<ShaderAndSerial> mConvertIndexIndirectLineLoop_comp_shaders
        [InternalShader::ConvertIndexIndirectLineLoop_comp::kArrayLen];
    RefCounted<ShaderAndSerial> mConvertIndirectLineLoop_comp_shaders
        [InternalShader::ConvertIndirectLineLoop_comp::kArrayLen];
    RefCounted<ShaderAndSerial>
        mConvertVertex_comp_shaders[InternalShader::ConvertVertex_comp::kArrayLen];
    RefCounted<ShaderAndSerial>
        mFullScreenQuad_vert_shaders[InternalShader::FullScreenQuad_vert::kArrayLen];
    RefCounted<ShaderAndSerial>
        mImageClear_frag_shaders[InternalShader::ImageClear_frag::kArrayLen];
    RefCounted<ShaderAndSerial> mImageCopy_frag_shaders[InternalShader::ImageCopy_frag::kArrayLen];
    RefCounted<ShaderAndSerial>
        mOverlayCull_comp_shaders[InternalShader::OverlayCull_comp::kArrayLen];
    RefCounted<ShaderAndSerial>
        mOverlayDraw_comp_shaders[InternalShader::OverlayDraw_comp::kArrayLen];
};
}  // namespace vk
}  // namespace rx

#endif  // LIBANGLE_RENDERER_VULKAN_VK_INTERNAL_SHADERS_AUTOGEN_H_
