1b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
2b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens//
3b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens// Licensed under the Apache License, Version 2.0 (the "License");
4b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens// you may not use this file except in compliance with the License.
5b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens// You may obtain a copy of the License at
6b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens//
7b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens//    http://www.apache.org/licenses/LICENSE-2.0
8b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens//
9b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens// Unless required by applicable law or agreed to in writing, software
10b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens// distributed under the License is distributed on an "AS IS" BASIS,
11b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens// See the License for the specific language governing permissions and
13b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens// limitations under the License.
14b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens
15b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens#ifndef D3D8_Capabilities_hpp
16b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens#define D3D8_Capabilities_hpp
17b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens
18b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens#include <d3d8.h>
19b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens
20b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capensnamespace D3D8
21b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens{
22b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens	struct Capabilities
23b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens	{
24b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens		struct Surface
25b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens		{
26b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			struct RenderTarget
27b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			{
28b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool R8G8B8;
29b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool R5G6B5;
30b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool X1R5G5B5;
31b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool A1R5G5B5;
32b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool A4R4G4B4;
33b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool R3G3B2;
34b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool A8R3G3B2;
35b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool X4R4G4B4;
36b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool A8R8G8B8;
37b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool X8R8G8B8;
38b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool A8B8G8R8;
39b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool X8B8G8R8;
40b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				// Integer HDR formats
41b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool G16R16;
42b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool A2B10G10R10;
43b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			};
44b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens
45b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			struct DepthStencil
46b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			{
47b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool D32;
48b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool D24S8;
49b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool D24X8;
50b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool D16;
51b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			};
52b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens
53b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8;
54b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool R5G6B5;
55b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X1R5G5B5;
56b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A1R5G5B5;
57b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A4R4G4B4;
58b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool R3G3B2;
59b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8R3G3B2;
60b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X4R4G4B4;
61b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool R8G8B8;
62b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X8R8G8B8;
63b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8R8G8B8;
64b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8B8G8R8;
65b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X8B8G8R8;
66b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Paletted formats
67b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool P8;
68b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8P8;
69b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Integer HDR formats
70b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool G16R16;
71b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A2B10G10R10;
72b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Compressed formats
73b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT1;
74b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT2;
75b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT3;
76b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT4;
77b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT5;
78b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Bump map formats
79b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool V8U8;
80b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool L6V5U5;
81b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X8L8V8U8;
82b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool Q8W8V8U8;
83b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool V16U16;
84b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A2W10V10U10;
85b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Luminance formats
86b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool L8;
87b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A4L4;
88b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8L8;
89b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens		};
90b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens
91b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens		struct Volume
92b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens		{
93b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8;
94b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool R5G6B5;
95b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X1R5G5B5;
96b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A1R5G5B5;
97b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A4R4G4B4;
98b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool R3G3B2;
99b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8R3G3B2;
100b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X4R4G4B4;
101b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool R8G8B8;
102b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X8R8G8B8;
103b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8R8G8B8;
104b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8B8G8R8;
105b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X8B8G8R8;
106b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Paletted formats
107b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool P8;
108b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8P8;
109b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Integer HDR formats
110b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool G16R16;
111b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A2B10G10R10;
112b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Compressed formats
113b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT1;
114b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT2;
115b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT3;
116b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT4;
117b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT5;
118b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Bump map formats
119b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool V8U8;
120b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool L6V5U5;
121b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X8L8V8U8;
122b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool Q8W8V8U8;
123b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool V16U16;
124b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A2W10V10U10;
125b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Luminance formats
126b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool L8;
127b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A4L4;
128b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8L8;
129b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens		};
130b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens
131b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens		struct CubeMap
132b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens		{
133b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			struct RenderTarget
134b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			{
135b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool R8G8B8;
136b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool R5G6B5;
137b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool X1R5G5B5;
138b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool A1R5G5B5;
139b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool A4R4G4B4;
140b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool R3G3B2;
141b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool A8R3G3B2;
142b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool X4R4G4B4;
143b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool A8R8G8B8;
144b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool X8R8G8B8;
145b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool A8B8G8R8;
146b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool X8B8G8R8;
147b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				// Integer HDR formats
148b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool G16R16;
149b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool A2B10G10R10;
150b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			};
151b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens
152b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			struct DepthStencil
153b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			{
154b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool D32;
155b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool D24S8;
156b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool D24X8;
157b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool D16;
158b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			};
159b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens
160b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8;
161b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool R5G6B5;
162b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X1R5G5B5;
163b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A1R5G5B5;
164b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A4R4G4B4;
165b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool R3G3B2;
166b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8R3G3B2;
167b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X4R4G4B4;
168b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool R8G8B8;
169b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X8R8G8B8;
170b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8R8G8B8;
171b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8B8G8R8;
172b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X8B8G8R8;
173b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Paletted formats
174b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool P8;
175b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8P8;
176b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Integer HDR formats
177b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool G16R16;
178b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A2B10G10R10;
179b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Compressed formats
180b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT1;
181b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT2;
182b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT3;
183b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT4;
184b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT5;
185b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Bump map formats
186b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool V8U8;
187b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool L6V5U5;
188b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X8L8V8U8;
189b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool Q8W8V8U8;
190b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool V16U16;
191b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A2W10V10U10;
192b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Luminance formats
193b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool L8;
194b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A4L4;
195b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8L8;
196b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens		};
197b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens
198b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens		struct VolumeTexture
199b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens		{
200b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8;
201b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool R5G6B5;
202b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X1R5G5B5;
203b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A1R5G5B5;
204b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A4R4G4B4;
205b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool R3G3B2;
206b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8R3G3B2;
207b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X4R4G4B4;
208b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool R8G8B8;
209b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X8R8G8B8;
210b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8R8G8B8;
211b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8B8G8R8;
212b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X8B8G8R8;
213b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Paletted formats
214b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool P8;
215b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8P8;
216b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Integer HDR formats
217b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool G16R16;
218b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A2B10G10R10;
219b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Compressed formats
220b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT1;
221b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT2;
222b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT3;
223b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT4;
224b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT5;
225b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Bump map formats
226b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool V8U8;
227b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool L6V5U5;
228b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X8L8V8U8;
229b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool Q8W8V8U8;
230b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool V16U16;
231b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A2W10V10U10;
232b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Luminance formats
233b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool L8;
234b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A4L4;
235b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8L8;
236b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens		};
237b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens
238b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens		struct Texture
239b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens		{
240b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			struct RenderTarget
241b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			{
242b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool R8G8B8;
243b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool R5G6B5;
244b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool X1R5G5B5;
245b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool A1R5G5B5;
246b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool A4R4G4B4;
247b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool R3G3B2;
248b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool A8R3G3B2;
249b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool X4R4G4B4;
250b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool A8R8G8B8;
251b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool X8R8G8B8;
252b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool A8B8G8R8;
253b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool X8B8G8R8;
254b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				// Integer HDR formats
255b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool G16R16;
256b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool A2B10G10R10;
257b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			};
258b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens
259b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			struct DepthStencil
260b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			{
261b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool D32;
262b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool D24S8;
263b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool D24X8;
264b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens				static bool D16;
265b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			};
266b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens
267b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8;
268b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool R5G6B5;
269b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X1R5G5B5;
270b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A1R5G5B5;
271b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A4R4G4B4;
272b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool R3G3B2;
273b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8R3G3B2;
274b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X4R4G4B4;
275b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool R8G8B8;
276b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X8R8G8B8;
277b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8R8G8B8;
278b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8B8G8R8;
279b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X8B8G8R8;
280b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Paletted formats
281b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool P8;
282b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8P8;
283b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Integer HDR formats
284b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool G16R16;
285b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A2B10G10R10;
286b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Compressed formats
287b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT1;
288b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT2;
289b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT3;
290b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT4;
291b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool DXT5;
292b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Bump map formats
293b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool V8U8;
294b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool L6V5U5;
295b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool X8L8V8U8;
296b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool Q8W8V8U8;
297b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool V16U16;
298b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A2W10V10U10;
299b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			// Luminance formats
300b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool L8;
301b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A4L4;
302b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens			static bool A8L8;
303b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens		};
304b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens	};
305b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens
306b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens	extern unsigned int pixelShaderVersion;
307b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens	extern unsigned int vertexShaderVersion;
308b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens
309b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens	extern unsigned int textureMemory;
310b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens	extern unsigned int maxAnisotropy;
311b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens}
312b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens
313b2c87ab1e7182a2b2616ba73ff5a9179db6f90a6Nicolas Capens#endif   // D3D8_Capabilities_hpp
314