

#ifndef __dxgitype_h__

#define __dxgitype_h__





#include "dxgiformat.h"



#define _FACDXGI    0x87a

#define MAKE_DXGI_HRESULT(code) MAKE_HRESULT(1, _FACDXGI, code)

#define MAKE_DXGI_STATUS(code)  MAKE_HRESULT(0, _FACDXGI, code)



#define DXGI_STATUS_OCCLUDED                    MAKE_DXGI_STATUS(1)

#define DXGI_STATUS_CLIPPED                     MAKE_DXGI_STATUS(2)

#define DXGI_STATUS_NO_REDIRECTION              MAKE_DXGI_STATUS(4)

#define DXGI_STATUS_NO_DESKTOP_ACCESS           MAKE_DXGI_STATUS(5)

#define DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE MAKE_DXGI_STATUS(6)

#define DXGI_STATUS_MODE_CHANGED                MAKE_DXGI_STATUS(7)

#define DXGI_STATUS_MODE_CHANGE_IN_PROGRESS     MAKE_DXGI_STATUS(8)





#define DXGI_ERROR_INVALID_CALL                 MAKE_DXGI_HRESULT(1)

#define DXGI_ERROR_NOT_FOUND                    MAKE_DXGI_HRESULT(2)

#define DXGI_ERROR_MORE_DATA                    MAKE_DXGI_HRESULT(3)

#define DXGI_ERROR_UNSUPPORTED                  MAKE_DXGI_HRESULT(4)

#define DXGI_ERROR_DEVICE_REMOVED               MAKE_DXGI_HRESULT(5)

#define DXGI_ERROR_DEVICE_HUNG                  MAKE_DXGI_HRESULT(6)

#define DXGI_ERROR_DEVICE_RESET                 MAKE_DXGI_HRESULT(7)

#define DXGI_ERROR_WAS_STILL_DRAWING            MAKE_DXGI_HRESULT(10)

#define DXGI_ERROR_FRAME_STATISTICS_DISJOINT    MAKE_DXGI_HRESULT(11)

#define DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE MAKE_DXGI_HRESULT(12)

#define DXGI_ERROR_DRIVER_INTERNAL_ERROR        MAKE_DXGI_HRESULT(32)

#define DXGI_ERROR_NONEXCLUSIVE                 MAKE_DXGI_HRESULT(33)

#define DXGI_ERROR_NOT_CURRENTLY_AVAILABLE      MAKE_DXGI_HRESULT(34)

#define DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED   MAKE_DXGI_HRESULT(35)

#define DXGI_ERROR_REMOTE_OUTOFMEMORY           MAKE_DXGI_HRESULT(36)







#define DXGI_CPU_ACCESS_NONE                    ( 0 )

#define DXGI_CPU_ACCESS_DYNAMIC                 ( 1 )

#define DXGI_CPU_ACCESS_READ_WRITE              ( 2 )

#define DXGI_CPU_ACCESS_SCRATCH                 ( 3 )

#define DXGI_CPU_ACCESS_FIELD                   15



#define DXGI_USAGE_SHADER_INPUT                 ( 1L << (0 + 4) )

#define DXGI_USAGE_RENDER_TARGET_OUTPUT         ( 1L << (1 + 4) )

#define DXGI_USAGE_BACK_BUFFER                  ( 1L << (2 + 4) )

#define DXGI_USAGE_SHARED                       ( 1L << (3 + 4) )

#define DXGI_USAGE_READ_ONLY                    ( 1L << (4 + 4) )

#define DXGI_USAGE_DISCARD_ON_PRESENT           ( 1L << (5 + 4) )

#define DXGI_USAGE_UNORDERED_ACCESS             ( 1L << (6 + 4) )



typedef struct DXGI_RGB

{

    float Red;

    float Green;

    float Blue;

} DXGI_RGB;



typedef struct DXGI_GAMMA_CONTROL

{

    DXGI_RGB Scale;

    DXGI_RGB Offset;

    DXGI_RGB GammaCurve[ 1025 ];

} DXGI_GAMMA_CONTROL;



typedef struct DXGI_GAMMA_CONTROL_CAPABILITIES

{

    BOOL ScaleAndOffsetSupported;

    float MaxConvertedValue;

    float MinConvertedValue;

    UINT NumGammaControlPoints;

    float ControlPointPositions[1025];

} DXGI_GAMMA_CONTROL_CAPABILITIES;



typedef struct DXGI_RATIONAL

{

    UINT Numerator;

    UINT Denominator;

} DXGI_RATIONAL;



typedef enum DXGI_MODE_SCANLINE_ORDER

{

    DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED        = 0,

    DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE        = 1,

    DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST  = 2,

    DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST  = 3

} DXGI_MODE_SCANLINE_ORDER;



typedef enum DXGI_MODE_SCALING

{

    DXGI_MODE_SCALING_UNSPECIFIED   = 0,

    DXGI_MODE_SCALING_CENTERED      = 1,

    DXGI_MODE_SCALING_STRETCHED     = 2

} DXGI_MODE_SCALING;



typedef enum DXGI_MODE_ROTATION

{

    DXGI_MODE_ROTATION_UNSPECIFIED  = 0,

    DXGI_MODE_ROTATION_IDENTITY     = 1,

    DXGI_MODE_ROTATION_ROTATE90     = 2,

    DXGI_MODE_ROTATION_ROTATE180    = 3,

    DXGI_MODE_ROTATION_ROTATE270    = 4

} DXGI_MODE_ROTATION;



typedef struct DXGI_MODE_DESC

{

    UINT Width;

    UINT Height;

    DXGI_RATIONAL RefreshRate;

    DXGI_FORMAT Format;

    DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;

    DXGI_MODE_SCALING Scaling;

} DXGI_MODE_DESC;



typedef struct DXGI_SAMPLE_DESC

{

    UINT Count;

    UINT Quality;

} DXGI_SAMPLE_DESC;



#endif // __dxgitype_h__



