// Copyright 2018 The Amber Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#ifndef SRC_FORMAT_DATA_H_
#define SRC_FORMAT_DATA_H_

enum class FormatComponentType {
  kR = 0,
  kG,
  kB,
  kA,
  kX,
  kD,
  kS,
};

enum class FormatMode {
  kUNorm = 0,
  kUInt,
  kUFloat,
  kUScaled,
  kSInt,
  kSNorm,
  kSScaled,
  kSFloat,
  kSRGB,
};

enum class FormatType {
  kUnknown = 0,
  kA1R5G5B5_UNORM_PACK16,
  kA2B10G10R10_SINT_PACK32,
  kA2B10G10R10_SNORM_PACK32,
  kA2B10G10R10_SSCALED_PACK32,
  kA2B10G10R10_UINT_PACK32,
  kA2B10G10R10_UNORM_PACK32,
  kA2B10G10R10_USCALED_PACK32,
  kA2R10G10B10_SINT_PACK32,
  kA2R10G10B10_SNORM_PACK32,
  kA2R10G10B10_SSCALED_PACK32,
  kA2R10G10B10_UINT_PACK32,
  kA2R10G10B10_UNORM_PACK32,
  kA2R10G10B10_USCALED_PACK32,
  kA8B8G8R8_SINT_PACK32,
  kA8B8G8R8_SNORM_PACK32,
  kA8B8G8R8_SRGB_PACK32,
  kA8B8G8R8_SSCALED_PACK32,
  kA8B8G8R8_UINT_PACK32,
  kA8B8G8R8_UNORM_PACK32,
  kA8B8G8R8_USCALED_PACK32,
  kB10G11R11_UFLOAT_PACK32,
  kB4G4R4A4_UNORM_PACK16,
  kB5G5R5A1_UNORM_PACK16,
  kB5G6R5_UNORM_PACK16,
  kB8G8R8A8_SINT,
  kB8G8R8A8_SNORM,
  kB8G8R8A8_SRGB,
  kB8G8R8A8_SSCALED,
  kB8G8R8A8_UINT,
  kB8G8R8A8_UNORM,
  kB8G8R8A8_USCALED,
  kB8G8R8_SINT,
  kB8G8R8_SNORM,
  kB8G8R8_SRGB,
  kB8G8R8_SSCALED,
  kB8G8R8_UINT,
  kB8G8R8_UNORM,
  kB8G8R8_USCALED,
  kD16_UNORM,
  kD16_UNORM_S8_UINT,
  kD24_UNORM_S8_UINT,
  kD32_SFLOAT,
  kD32_SFLOAT_S8_UINT,
  kR16G16B16A16_SFLOAT,
  kR16G16B16A16_SINT,
  kR16G16B16A16_SNORM,
  kR16G16B16A16_SSCALED,
  kR16G16B16A16_UINT,
  kR16G16B16A16_UNORM,
  kR16G16B16A16_USCALED,
  kR16G16B16_SFLOAT,
  kR16G16B16_SINT,
  kR16G16B16_SNORM,
  kR16G16B16_SSCALED,
  kR16G16B16_UINT,
  kR16G16B16_UNORM,
  kR16G16B16_USCALED,
  kR16G16_SFLOAT,
  kR16G16_SINT,
  kR16G16_SNORM,
  kR16G16_SSCALED,
  kR16G16_UINT,
  kR16G16_UNORM,
  kR16G16_USCALED,
  kR16_SFLOAT,
  kR16_SINT,
  kR16_SNORM,
  kR16_SSCALED,
  kR16_UINT,
  kR16_UNORM,
  kR16_USCALED,
  kR32G32B32A32_SFLOAT,
  kR32G32B32A32_SINT,
  kR32G32B32A32_UINT,
  kR32G32B32_SFLOAT,
  kR32G32B32_SINT,
  kR32G32B32_UINT,
  kR32G32_SFLOAT,
  kR32G32_SINT,
  kR32G32_UINT,
  kR32_SFLOAT,
  kR32_SINT,
  kR32_UINT,
  kR4G4B4A4_UNORM_PACK16,
  kR4G4_UNORM_PACK8,
  kR5G5B5A1_UNORM_PACK16,
  kR5G6B5_UNORM_PACK16,
  kR64G64B64A64_SFLOAT,
  kR64G64B64A64_SINT,
  kR64G64B64A64_UINT,
  kR64G64B64_SFLOAT,
  kR64G64B64_SINT,
  kR64G64B64_UINT,
  kR64G64_SFLOAT,
  kR64G64_SINT,
  kR64G64_UINT,
  kR64_SFLOAT,
  kR64_SINT,
  kR64_UINT,
  kR8G8B8A8_SINT,
  kR8G8B8A8_SNORM,
  kR8G8B8A8_SRGB,
  kR8G8B8A8_SSCALED,
  kR8G8B8A8_UINT,
  kR8G8B8A8_UNORM,
  kR8G8B8A8_USCALED,
  kR8G8B8_SINT,
  kR8G8B8_SNORM,
  kR8G8B8_SRGB,
  kR8G8B8_SSCALED,
  kR8G8B8_UINT,
  kR8G8B8_UNORM,
  kR8G8B8_USCALED,
  kR8G8_SINT,
  kR8G8_SNORM,
  kR8G8_SRGB,
  kR8G8_SSCALED,
  kR8G8_UINT,
  kR8G8_UNORM,
  kR8G8_USCALED,
  kR8_SINT,
  kR8_SNORM,
  kR8_SRGB,
  kR8_SSCALED,
  kR8_UINT,
  kR8_UNORM,
  kR8_USCALED,
  kS8_UINT,
  kX8_D24_UNORM_PACK32,
};

#endif  // SRC_FORMAT_DATA_H_
