/*===================== begin_copyright_notice ==================================

Copyright (c) 2017 Intel Corporation

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


======================= end_copyright_notice ==================================*/
#pragma once
#include "cmd_enum_g8.h"

namespace G6HWC
{

/*****************************************************************************\
CONST: Caps
\*****************************************************************************/
const DWORD g_cNumSamplersPerProgram    = 16;
const DWORD g_cNumSurfacesPerProgram    = 252;
const DWORD g_cNumSearchPathStatesGen6  = 14;
const DWORD g_cNumMBModeSetsGen6        = 4;

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_ANISORATIO
\*****************************************************************************/
enum GFXSHAREDSTATE_ANISORATIO
{
    GFXSHAREDSTATE_ANISORATIO_2     = 0x0, 
    GFXSHAREDSTATE_ANISORATIO_4     = 0x1, 
    GFXSHAREDSTATE_ANISORATIO_6     = 0x2, 
    GFXSHAREDSTATE_ANISORATIO_8     = 0x3, 
    GFXSHAREDSTATE_ANISORATIO_10    = 0x4, 
    GFXSHAREDSTATE_ANISORATIO_12    = 0x5, 
    GFXSHAREDSTATE_ANISORATIO_14    = 0x6, 
    GFXSHAREDSTATE_ANISORATIO_16    = 0x7
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_CHROMAKEY_MODE
\*****************************************************************************/
enum GFXSHAREDSTATE_CHROMAKEY_MODE
{
    GFXSHAREDSTATE_CHROMAKEY_KILL_ON_ANY_MATCH  = 0x0,
    GFXSHAREDSTATE_CHROMAKEY_REPLACE_BLACK      = 0x1
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_CUBECORNERMODE 
\*****************************************************************************/
enum GFXSHAREDSTATE_CUBECORNERMODE
{
    GFXSHAREDSTATE_CUBECORNERMODE_REPLICATE = 0x0,
    GFXSHAREDSTATE_CUBECORNERMODE_AVERAGE   = 0x1
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_CUBESURFACECONTROLMODE
\*****************************************************************************/
enum GFXSHAREDSTATE_CUBESURFACECONTROLMODE
{
    GFXSHAREDSTATE_CUBESURFACECONTROLMODE_PROGRAMMED    = 0x0,
    GFXSHAREDSTATE_CUBESURFACECONTROLMODE_OVERRIDE      = 0x1
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_DEFAULTCOLOR_MODE
\*****************************************************************************/
enum GFXSHAREDSTATE_DEFAULTCOLOR_MODE 
{
    GFXSHAREDSTATE_DEFAULTCOLOR_R32G32B32A32_FLOAT  = 0,
    GFXSHAREDSTATE_DEFAULTCOLOR_R8G8B8A8_UNORM      = 1
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_MAPFILTER
\*****************************************************************************/
enum GFXSHAREDSTATE_MAPFILTER
{
    GFXSHAREDSTATE_MAPFILTER_NEAREST        = 0x0, 
    GFXSHAREDSTATE_MAPFILTER_LINEAR         = 0x1, 
    GFXSHAREDSTATE_MAPFILTER_ANISOTROPIC    = 0x2,
    //GFXSHAREDSTATE_MAPFILTER_RESERVED = 0x3,
    //GFXSHAREDSTATE_MAPFILTER_RESERVED = 0x4,
    //GFXSHAREDSTATE_MAPFILTER_RESERVED = 0x5,
    GFXSHAREDSTATE_MAPFILTER_MONO           = 0x6
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_MIPFILTER
\*****************************************************************************/
enum GFXSHAREDSTATE_MIPFILTER
{
    GFXSHAREDSTATE_MIPFILTER_NONE       = 0x0,   
    GFXSHAREDSTATE_MIPFILTER_NEAREST    = 0x1,   
    GFXSHAREDSTATE_MIPFILTER_LINEAR     = 0x3
};
/*****************************************************************************\
ENUM: GFXSHAREDSTATE_PREFILTER_OPERATION
\*****************************************************************************/
enum GFXSHAREDSTATE_PREFILTER_OPERATION
{
    GFXSHAREDSTATE_PREFILTER_ALWAYS     = 0x0, 
    GFXSHAREDSTATE_PREFILTER_NEVER      = 0x1,
    GFXSHAREDSTATE_PREFILTER_LESS       = 0x2,
    GFXSHAREDSTATE_PREFILTER_EQUAL      = 0x3,
    GFXSHAREDSTATE_PREFILTER_LEQUAL     = 0x4,
    GFXSHAREDSTATE_PREFILTER_GREATER    = 0x5,
    GFXSHAREDSTATE_PREFILTER_NOTEQUAL   = 0x6,
    GFXSHAREDSTATE_PREFILTER_GEQUAL     = 0x7
};
/*****************************************************************************\
ENUM: GFXSHAREDSTATE_RENDERTARGET_ROTATE
\*****************************************************************************/
enum GFXSHAREDSTATE_RENDERTARGET_ROTATE
{
    GFXSHAREDSTATE_RENDERTARGET_ROTATE_0DEG     = 0,
    GFXSHAREDSTATE_RENDERTARGET_ROTATE_90DEG    = 1,
    GFXSHAREDSTATE_RENDERTARGET_ROTATE_270DEG   = 3
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_SURFACE_MIPMAPLAYOUT
\*****************************************************************************/
enum GFXSHAREDSTATE_SURFACE_MIPMAPLAYOUT
{
    GFXSHAREDSTATE_SURFACE_MIPMAPLAYOUT_BELOW   = 0x0,
    GFXSHAREDSTATE_SURFACE_MIPMAPLAYOUT_RIGHT   = 0x1
};
/*****************************************************************************\
ENUM: GFXSHAREDSTATE_SURFACEFORMAT
\*****************************************************************************/
enum GFXSHAREDSTATE_SURFACEFORMAT
{
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32B32A32_FLOAT             = 0x000, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32B32A32_SINT              = 0x001, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32B32A32_UINT              = 0x002, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32B32A32_UNORM             = 0x003, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32B32A32_SNORM             = 0x004, 
    GFXSHAREDSTATE_SURFACEFORMAT_R64G64_FLOAT                   = 0x005, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32B32X32_FLOAT             = 0x006, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32B32A32_SSCALED           = 0x007,
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32B32A32_USCALED           = 0x008,
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32B32_FLOAT                = 0x040, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32B32_SINT                 = 0x041, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32B32_UINT                 = 0x042, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32B32_UNORM                = 0x043, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32B32_SNORM                = 0x044, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32B32_SSCALED              = 0x045, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32B32_USCALED              = 0x046, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16B16A16_UNORM             = 0x080, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16B16A16_SNORM             = 0x081, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16B16A16_SINT              = 0x082, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16B16A16_UINT              = 0x083, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16B16A16_FLOAT             = 0x084, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32_FLOAT                   = 0x085, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32_SINT                    = 0x086, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32_UINT                    = 0x087, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32_FLOAT_X8X24_TYPELESS       = 0x088, 
    GFXSHAREDSTATE_SURFACEFORMAT_X32_TYPELESS_G8X24_UINT        = 0x089, 
    GFXSHAREDSTATE_SURFACEFORMAT_L32A32_FLOAT                   = 0x08A, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32_UNORM                   = 0x08B, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32_SNORM                   = 0x08C, 
    GFXSHAREDSTATE_SURFACEFORMAT_R64_FLOAT                      = 0x08D, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16B16X16_UNORM             = 0x08E, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16B16X16_FLOAT             = 0x08F, 
    GFXSHAREDSTATE_SURFACEFORMAT_A32X32_FLOAT                   = 0x090, 
    GFXSHAREDSTATE_SURFACEFORMAT_L32X32_FLOAT                   = 0x091, 
    GFXSHAREDSTATE_SURFACEFORMAT_I32X32_FLOAT                   = 0x092, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16B16A16_SSCALED           = 0x093,
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16B16A16_USCALED           = 0x094,
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32_SSCALED                 = 0x095,
    GFXSHAREDSTATE_SURFACEFORMAT_R32G32_USCALED                 = 0x096,
    GFXSHAREDSTATE_SURFACEFORMAT_B8G8R8A8_UNORM                 = 0x0C0, 
    GFXSHAREDSTATE_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB            = 0x0C1, 
    GFXSHAREDSTATE_SURFACEFORMAT_R10G10B10A2_UNORM              = 0x0C2, 
    GFXSHAREDSTATE_SURFACEFORMAT_R10G10B10A2_UNORM_SRGB         = 0x0C3, 
    GFXSHAREDSTATE_SURFACEFORMAT_R10G10B10A2_UINT               = 0x0C4, 
    GFXSHAREDSTATE_SURFACEFORMAT_R10G10B10_SNORM_A2_UNORM       = 0x0C5, 
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8B8A8_UNORM                 = 0x0C7, 
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8B8A8_UNORM_SRGB            = 0x0C8, 
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8B8A8_SNORM                 = 0x0C9, 
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8B8A8_SINT                  = 0x0CA, 
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8B8A8_UINT                  = 0x0CB, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16_UNORM                   = 0x0CC, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16_SNORM                   = 0x0CD, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16_SINT                    = 0x0CE, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16_UINT                    = 0x0CF, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16_FLOAT                   = 0x0D0, 
    GFXSHAREDSTATE_SURFACEFORMAT_B10G10R10A2_UNORM              = 0x0D1, 
    GFXSHAREDSTATE_SURFACEFORMAT_B10G10R10A2_UNORM_SRGB         = 0x0D2, 
    GFXSHAREDSTATE_SURFACEFORMAT_R11G11B10_FLOAT                = 0x0D3, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32_SINT                       = 0x0D6, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32_UINT                       = 0x0D7, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32_FLOAT                      = 0x0D8, 
    GFXSHAREDSTATE_SURFACEFORMAT_R24_UNORM_X8_TYPELESS          = 0x0D9, 
    GFXSHAREDSTATE_SURFACEFORMAT_X24_TYPELESS_G8_UINT           = 0x0DA, 
    GFXSHAREDSTATE_SURFACEFORMAT_L16A16_UNORM                   = 0x0DF, 
    GFXSHAREDSTATE_SURFACEFORMAT_I24X8_UNORM                    = 0x0E0, 
    GFXSHAREDSTATE_SURFACEFORMAT_L24X8_UNORM                    = 0x0E1, 
    GFXSHAREDSTATE_SURFACEFORMAT_A24X8_UNORM                    = 0x0E2, 
    GFXSHAREDSTATE_SURFACEFORMAT_I32_FLOAT                      = 0x0E3, 
    GFXSHAREDSTATE_SURFACEFORMAT_L32_FLOAT                      = 0x0E4, 
    GFXSHAREDSTATE_SURFACEFORMAT_A32_FLOAT                      = 0x0E5, 
    GFXSHAREDSTATE_SURFACEFORMAT_B8G8R8X8_UNORM                 = 0x0E9, 
    GFXSHAREDSTATE_SURFACEFORMAT_B8G8R8X8_UNORM_SRGB            = 0x0EA, 
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8B8X8_UNORM                 = 0x0EB, 
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8B8X8_UNORM_SRGB            = 0x0EC, 
    GFXSHAREDSTATE_SURFACEFORMAT_R9G9B9E5_SHAREDEXP             = 0x0ED, 
    GFXSHAREDSTATE_SURFACEFORMAT_B10G10R10X2_UNORM              = 0x0EE, 
    GFXSHAREDSTATE_SURFACEFORMAT_L16A16_FLOAT                   = 0x0F0, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32_UNORM                      = 0x0F1, 
    GFXSHAREDSTATE_SURFACEFORMAT_R32_SNORM                      = 0x0F2, 
    GFXSHAREDSTATE_SURFACEFORMAT_R10G10B10X2_USCALED            = 0x0F3,
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8B8A8_SSCALED               = 0x0F4,
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8B8A8_USCALED               = 0x0F5,
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16_SSCALED                 = 0x0F6,
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16_USCALED                 = 0x0F7,
    GFXSHAREDSTATE_SURFACEFORMAT_R32_SSCALED                    = 0x0F8,
    GFXSHAREDSTATE_SURFACEFORMAT_R32_USCALED                    = 0x0F9,
    GFXSHAREDSTATE_SURFACEFORMAT_R8B8G8A8_UNORM                 = 0x0FA,
    GFXSHAREDSTATE_SURFACEFORMAT_B5G6R5_UNORM                   = 0x100, 
    GFXSHAREDSTATE_SURFACEFORMAT_B5G6R5_UNORM_SRGB              = 0x101, 
    GFXSHAREDSTATE_SURFACEFORMAT_B5G5R5A1_UNORM                 = 0x102, 
    GFXSHAREDSTATE_SURFACEFORMAT_B5G5R5A1_UNORM_SRGB            = 0x103, 
    GFXSHAREDSTATE_SURFACEFORMAT_B4G4R4A4_UNORM                 = 0x104, 
    GFXSHAREDSTATE_SURFACEFORMAT_B4G4R4A4_UNORM_SRGB            = 0x105, 
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8_UNORM                     = 0x106, 
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8_SNORM                     = 0x107, 
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8_SINT                      = 0x108, 
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8_UINT                      = 0x109, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16_UNORM                      = 0x10A, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16_SNORM                      = 0x10B, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16_SINT                       = 0x10C, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16_UINT                       = 0x10D, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16_FLOAT                      = 0x10E, 
    GFXSHAREDSTATE_SURFACEFORMAT_I16_UNORM                      = 0x111, 
    GFXSHAREDSTATE_SURFACEFORMAT_L16_UNORM                      = 0x112, 
    GFXSHAREDSTATE_SURFACEFORMAT_A16_UNORM                      = 0x113, 
    GFXSHAREDSTATE_SURFACEFORMAT_L8A8_UNORM                     = 0x114, 
    GFXSHAREDSTATE_SURFACEFORMAT_I16_FLOAT                      = 0x115,
    GFXSHAREDSTATE_SURFACEFORMAT_L16_FLOAT                      = 0x116,
    GFXSHAREDSTATE_SURFACEFORMAT_A16_FLOAT                      = 0x117, 
    GFXSHAREDSTATE_SURFACEFORMAT_L8A8_UNORM_SRGB                = 0x118, 
    GFXSHAREDSTATE_SURFACEFORMAT_R5G5_SNORM_B6_UNORM            = 0x119, 
    GFXSHAREDSTATE_SURFACEFORMAT_B5G5R5X1_UNORM                 = 0x11A, 
    GFXSHAREDSTATE_SURFACEFORMAT_B5G5R5X1_UNORM_SRGB            = 0x11B,
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8_SSCALED                   = 0x11C,
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8_USCALED                   = 0x11D,
    GFXSHAREDSTATE_SURFACEFORMAT_R16_SSCALED                    = 0x11E,
    GFXSHAREDSTATE_SURFACEFORMAT_R16_USCALED                    = 0x11F,
    GFXSHAREDSTATE_SURFACEFORMAT_R8_UNORM                       = 0x140, 
    GFXSHAREDSTATE_SURFACEFORMAT_R8_SNORM                       = 0x141, 
    GFXSHAREDSTATE_SURFACEFORMAT_R8_SINT                        = 0x142, 
    GFXSHAREDSTATE_SURFACEFORMAT_R8_UINT                        = 0x143, 
    GFXSHAREDSTATE_SURFACEFORMAT_A8_UNORM                       = 0x144, 
    GFXSHAREDSTATE_SURFACEFORMAT_I8_UNORM                       = 0x145, 
    GFXSHAREDSTATE_SURFACEFORMAT_L8_UNORM                       = 0x146, 
    GFXSHAREDSTATE_SURFACEFORMAT_P4A4_UNORM                     = 0x147, 
    GFXSHAREDSTATE_SURFACEFORMAT_A4P4_UNORM                     = 0x148,
    GFXSHAREDSTATE_SURFACEFORMAT_R8_SSCALED                     = 0x149,
    GFXSHAREDSTATE_SURFACEFORMAT_R8_USCALED                     = 0x14A,
    GFXSHAREDSTATE_SURFACEFORMAT_P8_UNORM                       = 0x14B,
    GFXSHAREDSTATE_SURFACEFORMAT_L8_UNORM_SRGB                  = 0x14C,
    GFXSHAREDSTATE_SURFACEFORMAT_DXT1_RGB_SRGB                  = 0x180, 
    GFXSHAREDSTATE_SURFACEFORMAT_R1_UINT                        = 0x181, 
    GFXSHAREDSTATE_SURFACEFORMAT_YCRCB_NORMAL                   = 0x182, 
    GFXSHAREDSTATE_SURFACEFORMAT_YCRCB_SWAPUVY                  = 0x183, 
    GFXSHAREDSTATE_SURFACEFORMAT_P2_UNORM                       = 0x184, 
    GFXSHAREDSTATE_SURFACEFORMAT_BC1_UNORM                      = 0x186, 
    GFXSHAREDSTATE_SURFACEFORMAT_BC2_UNORM                      = 0x187, 
    GFXSHAREDSTATE_SURFACEFORMAT_BC3_UNORM                      = 0x188, 
    GFXSHAREDSTATE_SURFACEFORMAT_BC4_UNORM                      = 0x189, 
    GFXSHAREDSTATE_SURFACEFORMAT_BC5_UNORM                      = 0x18A, 
    GFXSHAREDSTATE_SURFACEFORMAT_BC1_UNORM_SRGB                 = 0x18B, 
    GFXSHAREDSTATE_SURFACEFORMAT_BC2_UNORM_SRGB                 = 0x18C, 
    GFXSHAREDSTATE_SURFACEFORMAT_BC3_UNORM_SRGB                 = 0x18D, 
    GFXSHAREDSTATE_SURFACEFORMAT_MONO8                          = 0x18E, 
    GFXSHAREDSTATE_SURFACEFORMAT_YCRCB_SWAPUV                   = 0x18F, 
    GFXSHAREDSTATE_SURFACEFORMAT_YCRCB_SWAPY                    = 0x190, 
    GFXSHAREDSTATE_SURFACEFORMAT_DXT1_RGB                       = 0x191, 
    GFXSHAREDSTATE_SURFACEFORMAT_FXT1                           = 0x192, 
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8B8_UNORM                   = 0x193, 
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8B8_SNORM                   = 0x194, 
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8B8_SSCALED                 = 0x195, 
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8B8_USCALED                 = 0x196, 
    GFXSHAREDSTATE_SURFACEFORMAT_R64G64B64A64_FLOAT             = 0x197, 
    GFXSHAREDSTATE_SURFACEFORMAT_R64G64B64_FLOAT                = 0x198, 
    GFXSHAREDSTATE_SURFACEFORMAT_BC4_SNORM                      = 0x199, 
    GFXSHAREDSTATE_SURFACEFORMAT_BC5_SNORM                      = 0x19A, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16B16_UNORM                = 0x19C, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16B16_SNORM                = 0x19D, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16B16_SSCALED              = 0x19E, 
    GFXSHAREDSTATE_SURFACEFORMAT_R16G16B16_USCALED              = 0x19F,
    GFXSHAREDSTATE_SURFACEFORMAT_R8G8B8_UNORM_SRGB              = 0x1A0,
    GFXSHAREDSTATE_SURFACEFORMAT_BC6H_SF16                      = 0x1A1,
    GFXSHAREDSTATE_SURFACEFORMAT_BC7_UNORM                      = 0x1A2,
    GFXSHAREDSTATE_SURFACEFORMAT_BC7_UNORM_SRGB                 = 0x1A3,
    GFXSHAREDSTATE_SURFACEFORMAT_BC6H_UF16                      = 0x1A4,
    GFXSHAREDSTATE_SURFACEFORMAT_PLANAR_420_8                   = 0x1A5,
    GFXSHAREDSTATE_SURFACEFORMAT_RAW                            = 0x1FF,
    NUM_GFXSHAREDSTATE_SURFACEFORMATS
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_SURFACERETURNFORMAT
\*****************************************************************************/
enum GFXSHAREDSTATE_SURFACERETURNFORMAT
{
    GFXSHAREDSTATE_SURFACERETURNFORMAT_FLOAT32  = 0x0,
    GFXSHAREDSTATE_SURFACERETURNFORMAT_S1_14    = 0x1
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_SURFACETYPE
\*****************************************************************************/
enum GFXSHAREDSTATE_SURFACETYPE
{
    GFXSHAREDSTATE_SURFACETYPE_1D       = 0x0,
    GFXSHAREDSTATE_SURFACETYPE_2D       = 0x1,
    GFXSHAREDSTATE_SURFACETYPE_3D       = 0x2,
    GFXSHAREDSTATE_SURFACETYPE_CUBE     = 0x3,
    GFXSHAREDSTATE_SURFACETYPE_BUFFER   = 0x4,
    GFXSHAREDSTATE_SURFACETYPE_STRBUF   = 0x5,
    //GFXSHAREDSTATE_RESERVED = 0x6,
    GFXSHAREDSTATE_SURFACETYPE_NULL     = 0x7,
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_TEXCOORDMODE
\*****************************************************************************/
enum GFXSHAREDSTATE_TEXCOORDMODE
{
    GFXSHAREDSTATE_TEXCOORDMODE_WRAP            = 0x0,
    GFXSHAREDSTATE_TEXCOORDMODE_MIRROR          = 0x1,
    GFXSHAREDSTATE_TEXCOORDMODE_CLAMP           = 0x2,
    GFXSHAREDSTATE_TEXCOORDMODE_CUBE            = 0x3,
    GFXSHAREDSTATE_TEXCOORDMODE_CLAMP_BORDER    = 0x4,
    GFXSHAREDSTATE_TEXCOORDMODE_MIRROR_ONCE     = 0x5,
    GFXSHAREDSTATE_TEXCOORDMODE_MIRROR_101      = 0x7
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_FLEXFILTERMODE
\*****************************************************************************/
enum GFXSHAREDSTATE_FLEXFILTERMODE
{
    GFXSHAREDSTATE_FLEXFILTERMODE_SEP           = 0x0,
    GFXSHAREDSTATE_FLEXFILTERMODE_NONSEP        = 0x1,
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_TILEWALK
\*****************************************************************************/
enum GFXSHAREDSTATE_TILEWALK
{
    GFXSHAREDSTATE_TILEWALK_XMAJOR          = 0x0,
    GFXSHAREDSTATE_TILEWALK_YMAJOR          = 0x1
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_TRILINEAR_QUALITY
\*****************************************************************************/
enum GFXSHAREDSTATE_TRILINEAR_QUALITY
{
    GFXSHAREDSTATE_TRILINEAR_QUALITY_FULL   = 0x0,
    GFXSHAREDSTATE_TRILINEAR_QUALITY_HIGH   = 0x1,
    GFXSHAREDSTATE_TRILINEAR_QUALITY_MED    = 0x2,
    GFXSHAREDSTATE_TRILINEAR_QUALITY_LOW    = 0x3
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_TEXTURE_BORDER_COLOR_MODE
\*****************************************************************************/
enum GFXSHAREDSTATE_TEXTURE_BORDER_COLOR_MODE
{
    GFXSHAREDSTATE_TEXTURE_BORDER_COLOR_MODE_DX10OGL    = 0x0,
    GFXSHAREDSTATE_TEXTURE_BORDER_COLOR_MODE_DX9        = 0x1
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_NUM_MULTISAMPLES
\*****************************************************************************/
enum GFXSHAREDSTATE_NUM_MULTISAMPLES
{
    GFXSHAREDSTATE_NUMSAMPLES_1 = 0x0,
    //GFXSHAREDSTATE_RESERVED = 0x1,
    GFXSHAREDSTATE_NUMSAMPLES_4 = 0x2,
    GFXSHAREDSTATE_NUMSAMPLES_8 = 0x3
    //GFXSHAREDSTATE_RESERVED = 0x4,
    //GFXSHAREDSTATE_RESERVED = 0x5,
    //GFXSHAREDSTATE_RESERVED = 0x6,
    //GFXSHAREDSTATE_RESERVED = 0x7
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_MSFMT
\*****************************************************************************/
enum GFXSHAREDSTATE_MSFMT
{
    GFXSHAREDSTATE_MSFMT_MSS            = 0x0,
    GFXSHAREDSTATE_MSFMT_DEPTH_STENCIL  = 0x1
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_CACHEABILITY_CONTROL
\*****************************************************************************/
enum GFXSHAREDSTATE_CACHEABILITY_CONTROL
{
    GFXSHAREDSTATE_CACHEABILITY_CONTROL_USE_GTT_ENTRY       = 0x0,
    GFXSHAREDSTATE_CACHEABILITY_CONTROL_NEITHER_LLC_NOR_MLC = 0x1,
    GFXSHAREDSTATE_CACHEABILITY_CONTROL_LLC_NOT_MLC         = 0x2,
    GFXSHAREDSTATE_CACHEABILITY_CONTROL_LLC_AND_MLC         = 0x3
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_GRAPHICS_DATATYPE_SOURCE
\*****************************************************************************/
enum GFXSHAREDSTATE_GRAPHICS_DATATYPE_SOURCE
{
    GFXSHAREDSTATE_GRAPHICS_DATATYPE_SOURCE_GTT     = 0x0,
    GFXSHAREDSTATE_GRAPHICS_DATATYPE_SOURCE_SURFACE = 0x1
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_MEDIA_BOUNDARY_PIXEL_MODE
\*****************************************************************************/
enum GFXSHAREDSTATE_MEDIA_BOUNDARY_PIXEL_MODE
{
    GFXSHAREDSTATE_MEDIA_BOUNDARY_PIXEL_NORMAL              = 0x0,
    //GFXSHAREDSTATE_RESERVED = 0x1,
    GFXSHAREDSTATE_MEDIA_BOUNDARY_PIXEL_PROGRESSIVE_FRAME   = 0x2,
    GFXSHAREDSTATE_MEDIA_BOUNDARY_PIXEL_INTERLACED_FRAME    = 0x3
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_RENDER_CACHE_READ_WRITE_MODE
\*****************************************************************************/
enum GFXSHAREDSTATE_RENDER_CACHE_READ_WRITE_MODE
{
    GFXSHAREDSTATE_RENDER_CACHE_WRITE_ONLY_ON_MISS      = 0x0,
    GFXSHAREDSTATE_RENDER_CACHE_READ_WRITE_ONLY_ON_MISS = 0x1
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_SURFACE_ARRAY_SPACING
\*****************************************************************************/
enum GFXSHAREDSTATE_SURFACE_ARRAY_SPACING
{
    GFXSHAREDSTATE_SURFACE_ARRAY_SPACING_FULL   = 0x0,
    GFXSHAREDSTATE_SURFACE_ARRAY_SPACING_LOD0   = 0x1
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_SURFACE_VERTICAL_ALIGNMENT
\*****************************************************************************/
enum GFXSHAREDSTATE_SURFACE_VERTICAL_ALIGNMENT
{
    GFXSHAREDSTATE_SURFACE_VERTICAL_ALIGNMENT_2     = 0x0,
    GFXSHAREDSTATE_SURFACE_VERTICAL_ALIGNMENT_4     = 0x1,
    GFXSHAREDSTATE_SURFACE_VERTICAL_ALIGNMENT_8     = 0x2,
    GFXSHAREDSTATE_SURFACE_VERTICAL_ALIGNMENT_16    = 0x3
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_SURFACE_HORIZONTAL_ALIGNMENT
\*****************************************************************************/
enum GFXSHAREDSTATE_SURFACE_HORIZONTRAL_ALIGNMENT
{
    GFXSHAREDSTATE_SURFACE_HORIZONTAL_ALIGNMENT_2     = 0x0,
    GFXSHAREDSTATE_SURFACE_HORIZONTAL_ALIGNMENT_4     = 0x1,
    GFXSHAREDSTATE_SURFACE_HORIZONTAL_ALIGNMENT_8     = 0x2,
    GFXSHAREDSTATE_SURFACE_HORIZONTAL_ALIGNMENT_16    = 0x3
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_RENDER_TARGET_ROTATION
\*****************************************************************************/
enum GFXSHAREDSTATE_RENDER_TARGET_ROTATION
{
    GFXSHAREDSTATE_RROTATE_0DEG      = 0x0,
    GFXSHAREDSTATE_RROTATE_90DEG     = 0x1,
    GFXSHAREDSTATE_RROTATE_270DEG    = 0x3
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_L3_CACHEABILITY_CONTROL
\*****************************************************************************/
enum GFXSHAREDSTATE_L3_CACHEABILITY_CONTROL
{
    GFXSHAREDSTATE_L3_CACHEABILITY_CONTROL_NOT_CACHEABLE    = 0x0,
    GFXSHAREDSTATE_L3_CACHEABILITY_CONTROL_CACHEABLE        = 0x1
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_LLC_CACHEABILITY_CONTROL
\*****************************************************************************/
enum GFXSHAREDSTATE_LLC_CACHEABILITY_CONTROL
{
    GFXSHAREDSTATE_LLC_CACHEABILITY_CONTROL_USE_GTT_ENTRY   = 0x0,
    GFXSHAREDSTATE_LLC_CACHEABILITY_CONTROL_CACHEABLE       = 0x1
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_CLEARCOLOR
\*****************************************************************************/
enum GFXSHAREDSTATE_CLEARCOLOR
{
    GFXSHAREDSTATE_CLEARCOLOR_ZERO  = 0x0,
    GFXSHAREDSTATE_CLEARCOLOR_ONE   = 0x1
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_SHADERCHANNELSELECT
\*****************************************************************************/
enum GFXSHAREDSTATE_SHADERCHANNELSELECT
{
    GFXSHAREDSTATE_SHADERCHANNELSELECT_ZERO     = 0x0,
    GFXSHAREDSTATE_SHADERCHANNELSELECT_ONE      = 0x1,
    GFXSHAREDSTATE_SHADERCHANNELSELECT_RED      = 0x4,
    GFXSHAREDSTATE_SHADERCHANNELSELECT_GREEN    = 0x5,
    GFXSHAREDSTATE_SHADERCHANNELSELECT_BLUE     = 0x6,
    GFXSHAREDSTATE_SHADERCHANNELSELECT_ALPHA    = 0x7
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_TILEMODE
\*****************************************************************************/
enum GFXSHAREDSTATE_TILEMODE
{
    GFXSHAREDSTATE_TILEMODE_LINEAR          = 0x0,
    GFXSHAREDSTATE_TILEMODE_WMAJOR          = 0x1,
    GFXSHAREDSTATE_TILEMODE_XMAJOR          = 0x2,
    GFXSHAREDSTATE_TILEMODE_YMAJOR          = 0x3
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_REDUCTION_TYPE
\*****************************************************************************/
enum GFXSHAREDSTATE_REDUCTION_TYPE
{
    GFXSHAREDSTATE_STD_FILTER       = 0x0, 
    GFXSHAREDSTATE_COMPARISON       = 0x1, 
    GFXSHAREDSTATE_MINIMUM          = 0x2, 
    GFXSHAREDSTATE_MAXIMUM          = 0x3     
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_COHERENCY_TYPE
\*****************************************************************************/
enum GFXSHAREDSTATE_COHERENCY_TYPE
{
    GFXSHAREDSTATE_NON_COHERENT    = 0x0, 
    GFXSHAREDSTATE_IA_CHERENT      = 0x1  
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_TILED_RESOURCE_HORIZONTAL_ALIGNMENT
\*****************************************************************************/
enum GFXSHAREDSTATE_TILED_RESOURCE_HORIZONTAL_ALIGNMENT
{
    GFXSHAREDSTATE_TILED_RESOURCE_HORIZONTAL_ALIGNMENT_64       = 0x0, 
    GFXSHAREDSTATE_TILED_RESOURCE_HORIZONTAL_ALIGNMENT_128      = 0x1,
    GFXSHAREDSTATE_TILED_RESOURCE_HORIZONTAL_ALIGNMENT_256      = 0x2,
    GFXSHAREDSTATE_TILED_RESOURCE_HORIZONTAL_ALIGNMENT_512      = 0x3
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_TILED_RESOURCE_VERTICAL_ALIGNMENT
\*****************************************************************************/
enum GFXSHAREDSTATE_TILED_RESOURCE_VERTICAL_ALIGNMENT
{
    GFXSHAREDSTATE_TILED_RESOURCE_VERTICAL_ALIGNMENT_64       = 0x0, 
    GFXSHAREDSTATE_TILED_RESOURCE_VERTICAL_ALIGNMENT_128      = 0x1,
    GFXSHAREDSTATE_TILED_RESOURCE_VERTICAL_ALIGNMENT_256      = 0x2,
    GFXSHAREDSTATE_TILED_RESOURCE_VERTICAL_ALIGNMENT_512      = 0x3 
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_AUXILIARY_SURFACE_MODE
\*****************************************************************************/
enum GFXSHAREDSTATE_AUXILIARY_SURFACE_MODE
{
    GFXSHAREDSTATE_AUX_NONE       = 0x0, 
    GFXSHAREDSTATE_AUX_CCS        = 0x1,
    GFXSHAREDSTATE_AUX_APPEND     = 0x2,
    GFXSHAREDSTATE_AUX_HIZ        = 0x3 
};

/*****************************************************************************\
ENUM: GFXSHAREDSTATE_MAPFILTER
\*****************************************************************************/
enum GFXSHAREDSTATE_ANISOTROPIC_ALGORITHM
{
    GFXSHAREDSTATE_ANISOTROPIC_LEGACY               = 0x0, 
    GFXSHAREDSTATE_ANISOTROPIC_EWA_APPROXIMATION    = 0x1
};
} // namespace G6HWC