1 module directx.dxgitype;
2 //
3 //    Copyright (C) Microsoft.  All rights reserved.
4 //
5 
6 version(Windows):
7 
8 public import directx.dxgiformat;
9 
10 import directx.d3dcommon;
11 
12 enum _FACDXGI   = 0x87a;
13 
14 HRESULT MAKE_DXGI_HRESULT(T)(T code) {
15 	return MAKE_HRESULT(1, _FACDXGI, code);
16 }
17 
18 HRESULT MAKE_DXGI_STATUS(T)(T code) {
19 	return MAKE_HRESULT(0, _FACDXGI, code);
20 }
21 
22 // DXGI error messages have moved to winerror.h
23 enum DXGI_STATUS_OCCLUDED                   = MAKE_DXGI_STATUS(1);
24 enum DXGI_STATUS_CLIPPED                    = MAKE_DXGI_STATUS(2);
25 enum DXGI_STATUS_NO_REDIRECTION             = MAKE_DXGI_STATUS(4);
26 enum DXGI_STATUS_NO_DESKTOP_ACCESS          = MAKE_DXGI_STATUS(5);
27 enum DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE = MAKE_DXGI_STATUS(6);
28 enum DXGI_STATUS_MODE_CHANGED               = MAKE_DXGI_STATUS(7);
29 enum DXGI_STATUS_MODE_CHANGE_IN_PROGRESS    = MAKE_DXGI_STATUS(8);
30 
31 enum DXGI_ERROR_INVALID_CALL                = MAKE_DXGI_HRESULT(1);
32 enum DXGI_ERROR_NOT_FOUND                   = MAKE_DXGI_HRESULT(2);
33 enum DXGI_ERROR_MORE_DATA                   = MAKE_DXGI_HRESULT(3);
34 enum DXGI_ERROR_UNSUPPORTED                 = MAKE_DXGI_HRESULT(4);
35 enum DXGI_ERROR_DEVICE_REMOVED              = MAKE_DXGI_HRESULT(5);
36 enum DXGI_ERROR_DEVICE_HUNG                 = MAKE_DXGI_HRESULT(6);
37 enum DXGI_ERROR_DEVICE_RESET                = MAKE_DXGI_HRESULT(7);
38 enum DXGI_ERROR_WAS_STILL_DRAWING           = MAKE_DXGI_HRESULT(10);
39 enum DXGI_ERROR_FRAME_STATISTICS_DISJOINT   = MAKE_DXGI_HRESULT(11);
40 enum DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE = MAKE_DXGI_HRESULT(12);
41 enum DXGI_ERROR_DRIVER_INTERNAL_ERROR       = MAKE_DXGI_HRESULT(32);
42 enum DXGI_ERROR_NONEXCLUSIVE                = MAKE_DXGI_HRESULT(33);
43 enum DXGI_ERROR_NOT_CURRENTLY_AVAILABLE     = MAKE_DXGI_HRESULT(34);
44 enum DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED  = MAKE_DXGI_HRESULT(35);
45 enum DXGI_ERROR_REMOTE_OUTOFMEMORY          = MAKE_DXGI_HRESULT(36);
46 
47 struct DXGI_RGB
48 {
49     float Red;
50     float Green;
51     float Blue;
52 }
53 
54 alias D3DCOLORVALUE DXGI_RGBA;
55 
56 struct DXGI_GAMMA_CONTROL
57 {
58     DXGI_RGB Scale;
59     DXGI_RGB Offset;
60     DXGI_RGB[ 1025 ] GammaCurve;
61 }
62 
63 struct DXGI_GAMMA_CONTROL_CAPABILITIES
64 {
65     int ScaleAndOffsetSupported;
66     float MaxConvertedValue;
67     float MinConvertedValue;
68     uint NumGammaControlPoints;
69     float[1025] ControlPointPositions;
70 }
71 
72 struct DXGI_RATIONAL
73 {
74     uint Numerator;
75     uint Denominator;
76 }
77 
78 alias DXGI_MODE_SCANLINE_ORDER = int;
79 enum : DXGI_MODE_SCANLINE_ORDER
80 {
81     DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED        = 0,
82     DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE        = 1,
83     DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST  = 2,
84     DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST  = 3
85 }
86 
87 alias DXGI_MODE_SCALING = int;
88 enum : DXGI_MODE_SCALING
89 {
90     DXGI_MODE_SCALING_UNSPECIFIED   = 0,
91     DXGI_MODE_SCALING_CENTERED      = 1,
92     DXGI_MODE_SCALING_STRETCHED     = 2
93 }
94 
95 alias DXGI_MODE_ROTATION = int;
96 enum : DXGI_MODE_ROTATION
97 {
98     DXGI_MODE_ROTATION_UNSPECIFIED  = 0,
99     DXGI_MODE_ROTATION_IDENTITY     = 1,
100     DXGI_MODE_ROTATION_ROTATE90     = 2,
101     DXGI_MODE_ROTATION_ROTATE180    = 3,
102     DXGI_MODE_ROTATION_ROTATE270    = 4
103 }
104 
105 struct DXGI_MODE_DESC
106 {
107     uint Width;
108     uint Height;
109     DXGI_RATIONAL RefreshRate;
110     DXGI_FORMAT Format;
111     DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
112     DXGI_MODE_SCALING Scaling;
113 }
114 
115 // The following values are used with DXGI_SAMPLE_DESC::Quality:
116 enum DXGI_STANDARD_MULTISAMPLE_QUALITY_PATTERN = 0xffffffff;
117 enum DXGI_CENTER_MULTISAMPLE_QUALITY_PATTERN   = 0xfffffffe;
118 
119 struct DXGI_SAMPLE_DESC
120 {
121     uint Count;
122     uint Quality;
123 }
124 
125 alias DWORD DXGI_COLOR_SPACE_TYPE;
126 enum : DXGI_COLOR_SPACE_TYPE
127 {
128     DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709             = 0,
129     DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709             = 1,
130     DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P709           = 2,
131     DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P2020          = 3,
132     DXGI_COLOR_SPACE_RESERVED                           = 4,
133     DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601      = 5,
134     DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601         = 6,
135     DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601           = 7,
136     DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709         = 8,
137     DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709           = 9,
138     DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020        = 10,
139     DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020          = 11,
140     DXGI_COLOR_SPACE_CUSTOM                             = 0xFFFFFFFF
141 }
142 
143 struct DXGI_JPEG_DC_HUFFMAN_TABLE
144 {
145     BYTE[12] CodeCounts;
146     BYTE[12] CodeValues;
147 }
148 
149 struct DXGI_JPEG_AC_HUFFMAN_TABLE
150 {
151     BYTE[16] CodeCounts;
152     BYTE[162] CodeValues;
153 }
154 
155 struct DXGI_JPEG_QUANTIZATION_TABLE
156 {
157     BYTE[64] Elements;
158 }