blob: 572d983661a79d5da28fe1078e454686adf65493 [file] [log] [blame]
Nicolas Capens0bac2852016-05-07 06:09:58 -04001// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
Nicolas Capensee16f0d2015-07-16 17:40:10 -04002//
Nicolas Capens0bac2852016-05-07 06:09:58 -04003// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
Nicolas Capensee16f0d2015-07-16 17:40:10 -04006//
Nicolas Capens0bac2852016-05-07 06:09:58 -04007// http://www.apache.org/licenses/LICENSE-2.0
Nicolas Capensee16f0d2015-07-16 17:40:10 -04008//
Nicolas Capens0bac2852016-05-07 06:09:58 -04009// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
Nicolas Capensee16f0d2015-07-16 17:40:10 -040014
15#include "Capabilities.hpp"
16
17#include "Main/Config.hpp"
18
19namespace D3D9
20{
21 bool Capabilities::Surface::RenderTarget::NULL_ = true;
22 bool Capabilities::Surface::RenderTarget::R8G8B8 = false;
23 bool Capabilities::Surface::RenderTarget::R5G6B5 = true;
24 bool Capabilities::Surface::RenderTarget::X1R5G5B5 = true;
25 bool Capabilities::Surface::RenderTarget::A1R5G5B5 = true;
26 bool Capabilities::Surface::RenderTarget::A4R4G4B4 = true;
27 bool Capabilities::Surface::RenderTarget::R3G3B2 = false;
28 bool Capabilities::Surface::RenderTarget::A8R3G3B2 = false;
29 bool Capabilities::Surface::RenderTarget::X4R4G4B4 = true;
30 bool Capabilities::Surface::RenderTarget::A8R8G8B8 = true;
31 bool Capabilities::Surface::RenderTarget::X8R8G8B8 = true;
32 bool Capabilities::Surface::RenderTarget::A8B8G8R8 = true;
33 bool Capabilities::Surface::RenderTarget::X8B8G8R8 = true;
34 bool Capabilities::Surface::RenderTarget::G16R16 = true;
35 bool Capabilities::Surface::RenderTarget::A2B10G10R10 = true;
36 bool Capabilities::Surface::RenderTarget::A2R10G10B10 = true;
37 bool Capabilities::Surface::RenderTarget::A16B16G16R16 = true;
38 bool Capabilities::Surface::RenderTarget::R16F = true;
39 bool Capabilities::Surface::RenderTarget::G16R16F = true;
40 bool Capabilities::Surface::RenderTarget::A16B16G16R16F = true;
41 bool Capabilities::Surface::RenderTarget::R32F = true;
42 bool Capabilities::Surface::RenderTarget::G32R32F = true;
43 bool Capabilities::Surface::RenderTarget::A32B32G32R32F = true;
44
45 bool Capabilities::Surface::DepthStencil::D32 = true;
46 bool Capabilities::Surface::DepthStencil::D24S8 = true;
47 bool Capabilities::Surface::DepthStencil::D24X8 = true;
48 bool Capabilities::Surface::DepthStencil::D16 = true;
49 bool Capabilities::Surface::DepthStencil::D24FS8 = true;
50 bool Capabilities::Surface::DepthStencil::D32F_LOCKABLE = true;
51 bool Capabilities::Surface::DepthStencil::DF24 = true;
52 bool Capabilities::Surface::DepthStencil::DF16 = true;
53 bool Capabilities::Surface::DepthStencil::INTZ = true;
54
55 bool Capabilities::Surface::A8 = true;
56 bool Capabilities::Surface::R5G6B5 = true;
57 bool Capabilities::Surface::X1R5G5B5 = true;
58 bool Capabilities::Surface::A1R5G5B5 = true;
59 bool Capabilities::Surface::A4R4G4B4 = true;
60 bool Capabilities::Surface::R3G3B2 = true;
61 bool Capabilities::Surface::A8R3G3B2 = true;
62 bool Capabilities::Surface::X4R4G4B4 = true;
63 bool Capabilities::Surface::R8G8B8 = true;
64 bool Capabilities::Surface::X8R8G8B8 = true;
65 bool Capabilities::Surface::A8R8G8B8 = true;
66 bool Capabilities::Surface::X8B8G8R8 = true;
67 bool Capabilities::Surface::A8B8G8R8 = true;
68 bool Capabilities::Surface::P8 = false;
69 bool Capabilities::Surface::A8P8 = false;
70 bool Capabilities::Surface::G16R16 = true;
71 bool Capabilities::Surface::A2R10G10B10 = true;
72 bool Capabilities::Surface::A2B10G10R10 = true;
73 bool Capabilities::Surface::A16B16G16R16 = true;
Nicolas Capens26a86752018-01-31 15:12:03 -050074 bool Capabilities::Surface::DXT1 = true;
75 bool Capabilities::Surface::DXT2 = true;
76 bool Capabilities::Surface::DXT3 = true;
77 bool Capabilities::Surface::DXT4 = true;
78 bool Capabilities::Surface::DXT5 = true;
79 bool Capabilities::Surface::ATI1 = true;
80 bool Capabilities::Surface::ATI2 = true;
Nicolas Capensee16f0d2015-07-16 17:40:10 -040081 bool Capabilities::Surface::R16F = true;
82 bool Capabilities::Surface::G16R16F = true;
83 bool Capabilities::Surface::A16B16G16R16F = true;
84 bool Capabilities::Surface::R32F = true;
85 bool Capabilities::Surface::G32R32F = true;
86 bool Capabilities::Surface::A32B32G32R32F = true;
87 bool Capabilities::Surface::V8U8 = true;
88 bool Capabilities::Surface::L6V5U5 = true;
89 bool Capabilities::Surface::X8L8V8U8 = true;
90 bool Capabilities::Surface::Q8W8V8U8 = true;
91 bool Capabilities::Surface::V16U16 = true;
92 bool Capabilities::Surface::A2W10V10U10 = true;
93 bool Capabilities::Surface::Q16W16V16U16 = true;
94 bool Capabilities::Surface::L8 = true;
95 bool Capabilities::Surface::A4L4 = true;
96 bool Capabilities::Surface::L16 = true;
97 bool Capabilities::Surface::A8L8 = true;
98 bool Capabilities::Surface::NVDB = false;
99 bool Capabilities::Surface::ATOC = true;
100
101 bool Capabilities::Volume::A8 = true;
102 bool Capabilities::Volume::R5G6B5 = true;
103 bool Capabilities::Volume::X1R5G5B5 = true;
104 bool Capabilities::Volume::A1R5G5B5 = true;
105 bool Capabilities::Volume::A4R4G4B4 = true;
106 bool Capabilities::Volume::R3G3B2 = true;
107 bool Capabilities::Volume::A8R3G3B2 = true;
108 bool Capabilities::Volume::X4R4G4B4 = true;
109 bool Capabilities::Volume::R8G8B8 = false;
110 bool Capabilities::Volume::X8R8G8B8 = true;
111 bool Capabilities::Volume::A8R8G8B8 = true;
112 bool Capabilities::Volume::X8B8G8R8 = true;
113 bool Capabilities::Volume::A8B8G8R8 = true;
114 bool Capabilities::Volume::P8 = false;
115 bool Capabilities::Volume::A8P8 = false;
116 bool Capabilities::Volume::G16R16 = true;
117 bool Capabilities::Volume::A2R10G10B10 = true;
118 bool Capabilities::Volume::A2B10G10R10 = true;
119 bool Capabilities::Volume::A16B16G16R16 = true;
Nicolas Capens26a86752018-01-31 15:12:03 -0500120 bool Capabilities::Volume::DXT1 = true;
121 bool Capabilities::Volume::DXT2 = true;
122 bool Capabilities::Volume::DXT3 = true;
123 bool Capabilities::Volume::DXT4 = true;
124 bool Capabilities::Volume::DXT5 = true;
125 bool Capabilities::Volume::ATI1 = true;
126 bool Capabilities::Volume::ATI2 = true;
Nicolas Capensee16f0d2015-07-16 17:40:10 -0400127 bool Capabilities::Volume::R16F = true;
128 bool Capabilities::Volume::G16R16F = true;
129 bool Capabilities::Volume::A16B16G16R16F = true;
130 bool Capabilities::Volume::R32F = true;
131 bool Capabilities::Volume::G32R32F = true;
132 bool Capabilities::Volume::A32B32G32R32F = true;
133 bool Capabilities::Volume::V8U8 = true;
134 bool Capabilities::Volume::L6V5U5 = true;
135 bool Capabilities::Volume::X8L8V8U8 = true;
136 bool Capabilities::Volume::Q8W8V8U8 = true;
137 bool Capabilities::Volume::V16U16 = true;
138 bool Capabilities::Volume::A2W10V10U10 = true;
139 bool Capabilities::Volume::Q16W16V16U16 = true;
140 bool Capabilities::Volume::L8 = true;
141 bool Capabilities::Volume::A4L4 = true;
142 bool Capabilities::Volume::L16 = true;
143 bool Capabilities::Volume::A8L8 = true;
144
145 bool Capabilities::CubeMap::RenderTarget::NULL_ = true;
146 bool Capabilities::CubeMap::RenderTarget::R8G8B8 = false;
147 bool Capabilities::CubeMap::RenderTarget::R5G6B5 = true;
148 bool Capabilities::CubeMap::RenderTarget::X1R5G5B5 = true;
149 bool Capabilities::CubeMap::RenderTarget::A1R5G5B5 = true;
150 bool Capabilities::CubeMap::RenderTarget::A4R4G4B4 = true;
151 bool Capabilities::CubeMap::RenderTarget::R3G3B2 = false;
152 bool Capabilities::CubeMap::RenderTarget::A8R3G3B2 = false;
153 bool Capabilities::CubeMap::RenderTarget::X4R4G4B4 = true;
154 bool Capabilities::CubeMap::RenderTarget::A8R8G8B8 = true;
155 bool Capabilities::CubeMap::RenderTarget::X8R8G8B8 = true;
156 bool Capabilities::CubeMap::RenderTarget::A8B8G8R8 = true;
157 bool Capabilities::CubeMap::RenderTarget::X8B8G8R8 = true;
158 bool Capabilities::CubeMap::RenderTarget::G16R16 = true;
159 bool Capabilities::CubeMap::RenderTarget::A2B10G10R10 = true;
160 bool Capabilities::CubeMap::RenderTarget::A2R10G10B10 = true;
161 bool Capabilities::CubeMap::RenderTarget::A16B16G16R16 = true;
162 bool Capabilities::CubeMap::RenderTarget::R16F = true;
163 bool Capabilities::CubeMap::RenderTarget::G16R16F = true;
164 bool Capabilities::CubeMap::RenderTarget::A16B16G16R16F = true;
165 bool Capabilities::CubeMap::RenderTarget::R32F = true;
166 bool Capabilities::CubeMap::RenderTarget::G32R32F = true;
167 bool Capabilities::CubeMap::RenderTarget::A32B32G32R32F = true;
168
169 bool Capabilities::CubeMap::DepthStencil::D32 = false;
170 bool Capabilities::CubeMap::DepthStencil::D24S8 = false;
171 bool Capabilities::CubeMap::DepthStencil::D24X8 = false;
172 bool Capabilities::CubeMap::DepthStencil::D16 = false;
173 bool Capabilities::CubeMap::DepthStencil::D24FS8 = false;
174 bool Capabilities::CubeMap::DepthStencil::D32F_LOCKABLE = false;
175 bool Capabilities::CubeMap::DepthStencil::DF24 = false;
176 bool Capabilities::CubeMap::DepthStencil::DF16 = false;
177 bool Capabilities::CubeMap::DepthStencil::INTZ = false;
178
179 bool Capabilities::CubeMap::A8 = true;
180 bool Capabilities::CubeMap::R5G6B5 = true;
181 bool Capabilities::CubeMap::X1R5G5B5 = true;
182 bool Capabilities::CubeMap::A1R5G5B5 = true;
183 bool Capabilities::CubeMap::A4R4G4B4 = true;
184 bool Capabilities::CubeMap::R3G3B2 = true;
185 bool Capabilities::CubeMap::A8R3G3B2 = true;
186 bool Capabilities::CubeMap::X4R4G4B4 = true;
187 bool Capabilities::CubeMap::R8G8B8 = false;
188 bool Capabilities::CubeMap::X8R8G8B8 = true;
189 bool Capabilities::CubeMap::A8R8G8B8 = true;
190 bool Capabilities::CubeMap::X8B8G8R8 = true;
191 bool Capabilities::CubeMap::A8B8G8R8 = true;
192 bool Capabilities::CubeMap::P8 = false;
193 bool Capabilities::CubeMap::A8P8 = false;
194 bool Capabilities::CubeMap::G16R16 = true;
195 bool Capabilities::CubeMap::A2R10G10B10 = true;
196 bool Capabilities::CubeMap::A2B10G10R10 = true;
197 bool Capabilities::CubeMap::A16B16G16R16 = true;
Nicolas Capens26a86752018-01-31 15:12:03 -0500198 bool Capabilities::CubeMap::DXT1 = true;
199 bool Capabilities::CubeMap::DXT2 = true;
200 bool Capabilities::CubeMap::DXT3 = true;
201 bool Capabilities::CubeMap::DXT4 = true;
202 bool Capabilities::CubeMap::DXT5 = true;
203 bool Capabilities::CubeMap::ATI1 = true;
204 bool Capabilities::CubeMap::ATI2 = true;
Nicolas Capensee16f0d2015-07-16 17:40:10 -0400205 bool Capabilities::CubeMap::R16F = true;
206 bool Capabilities::CubeMap::G16R16F = true;
207 bool Capabilities::CubeMap::A16B16G16R16F = true;
208 bool Capabilities::CubeMap::R32F = true;
209 bool Capabilities::CubeMap::G32R32F = true;
210 bool Capabilities::CubeMap::A32B32G32R32F = true;
211 bool Capabilities::CubeMap::V8U8 = true;
212 bool Capabilities::CubeMap::L6V5U5 = true;
213 bool Capabilities::CubeMap::X8L8V8U8 = true;
214 bool Capabilities::CubeMap::Q8W8V8U8 = true;
215 bool Capabilities::CubeMap::V16U16 = true;
216 bool Capabilities::CubeMap::A2W10V10U10 = true;
217 bool Capabilities::CubeMap::Q16W16V16U16 = true;
218 bool Capabilities::CubeMap::L8 = true;
219 bool Capabilities::CubeMap::A4L4 = true;
220 bool Capabilities::CubeMap::L16 = true;
221 bool Capabilities::CubeMap::A8L8 = true;
222
223 bool Capabilities::VolumeTexture::A8 = true;
224 bool Capabilities::VolumeTexture::R5G6B5 = true;
225 bool Capabilities::VolumeTexture::X1R5G5B5 = true;
226 bool Capabilities::VolumeTexture::A1R5G5B5 = true;
227 bool Capabilities::VolumeTexture::A4R4G4B4 = true;
228 bool Capabilities::VolumeTexture::R3G3B2 = true;
229 bool Capabilities::VolumeTexture::A8R3G3B2 = true;
230 bool Capabilities::VolumeTexture::X4R4G4B4 = true;
231 bool Capabilities::VolumeTexture::R8G8B8 = false;
232 bool Capabilities::VolumeTexture::X8R8G8B8 = true;
233 bool Capabilities::VolumeTexture::A8R8G8B8 = true;
234 bool Capabilities::VolumeTexture::X8B8G8R8 = true;
235 bool Capabilities::VolumeTexture::A8B8G8R8 = true;
236 bool Capabilities::VolumeTexture::P8 = false;
237 bool Capabilities::VolumeTexture::A8P8 = false;
238 bool Capabilities::VolumeTexture::G16R16 = true;
239 bool Capabilities::VolumeTexture::A2R10G10B10 = true;
240 bool Capabilities::VolumeTexture::A2B10G10R10 = true;
241 bool Capabilities::VolumeTexture::A16B16G16R16 = true;
Nicolas Capens26a86752018-01-31 15:12:03 -0500242 bool Capabilities::VolumeTexture::DXT1 = true;
243 bool Capabilities::VolumeTexture::DXT2 = true;
244 bool Capabilities::VolumeTexture::DXT3 = true;
245 bool Capabilities::VolumeTexture::DXT4 = true;
246 bool Capabilities::VolumeTexture::DXT5 = true;
247 bool Capabilities::VolumeTexture::ATI1 = true;
248 bool Capabilities::VolumeTexture::ATI2 = true;
Nicolas Capensee16f0d2015-07-16 17:40:10 -0400249 bool Capabilities::VolumeTexture::R16F = true;
250 bool Capabilities::VolumeTexture::G16R16F = true;
251 bool Capabilities::VolumeTexture::A16B16G16R16F = true;
252 bool Capabilities::VolumeTexture::R32F = true;
253 bool Capabilities::VolumeTexture::G32R32F = true;
254 bool Capabilities::VolumeTexture::A32B32G32R32F = true;
255 bool Capabilities::VolumeTexture::V8U8 = true;
256 bool Capabilities::VolumeTexture::L6V5U5 = true;
257 bool Capabilities::VolumeTexture::X8L8V8U8 = true;
258 bool Capabilities::VolumeTexture::Q8W8V8U8 = true;
259 bool Capabilities::VolumeTexture::V16U16 = true;
260 bool Capabilities::VolumeTexture::A2W10V10U10 = true;
261 bool Capabilities::VolumeTexture::Q16W16V16U16 = true;
262 bool Capabilities::VolumeTexture::L8 = true;
263 bool Capabilities::VolumeTexture::A4L4 = true;
264 bool Capabilities::VolumeTexture::L16 = true;
265 bool Capabilities::VolumeTexture::A8L8 = true;
266
267 bool Capabilities::Texture::RenderTarget::NULL_ = true;
268 bool Capabilities::Texture::RenderTarget::R8G8B8 = false;
269 bool Capabilities::Texture::RenderTarget::R5G6B5 = true;
270 bool Capabilities::Texture::RenderTarget::X1R5G5B5 = true;
271 bool Capabilities::Texture::RenderTarget::A1R5G5B5 = true;
272 bool Capabilities::Texture::RenderTarget::A4R4G4B4 = true;
273 bool Capabilities::Texture::RenderTarget::R3G3B2 = false;
274 bool Capabilities::Texture::RenderTarget::A8R3G3B2 = false;
275 bool Capabilities::Texture::RenderTarget::X4R4G4B4 = true;
276 bool Capabilities::Texture::RenderTarget::A8R8G8B8 = true;
277 bool Capabilities::Texture::RenderTarget::X8R8G8B8 = true;
278 bool Capabilities::Texture::RenderTarget::A8B8G8R8 = true;
279 bool Capabilities::Texture::RenderTarget::X8B8G8R8 = true;
280 bool Capabilities::Texture::RenderTarget::G16R16 = true;
281 bool Capabilities::Texture::RenderTarget::A2B10G10R10 = true;
282 bool Capabilities::Texture::RenderTarget::A2R10G10B10 = true;
283 bool Capabilities::Texture::RenderTarget::A16B16G16R16 = true;
284 bool Capabilities::Texture::RenderTarget::R16F = true;
285 bool Capabilities::Texture::RenderTarget::G16R16F = true;
286 bool Capabilities::Texture::RenderTarget::A16B16G16R16F = true;
287 bool Capabilities::Texture::RenderTarget::R32F = true;
288 bool Capabilities::Texture::RenderTarget::G32R32F = true;
289 bool Capabilities::Texture::RenderTarget::A32B32G32R32F = true;
290
291 bool Capabilities::Texture::DepthStencil::D32 = true;
292 bool Capabilities::Texture::DepthStencil::D24S8 = true;
293 bool Capabilities::Texture::DepthStencil::D24X8 = true;
294 bool Capabilities::Texture::DepthStencil::D16 = true;
295 bool Capabilities::Texture::DepthStencil::D24FS8 = true;
296 bool Capabilities::Texture::DepthStencil::D32F_LOCKABLE = true;
297 bool Capabilities::Texture::DepthStencil::DF24 = true;
298 bool Capabilities::Texture::DepthStencil::DF16 = true;
299 bool Capabilities::Texture::DepthStencil::INTZ = true;
300
301 bool Capabilities::Texture::NULL_ = true;
302 bool Capabilities::Texture::A8 = true;
303 bool Capabilities::Texture::R5G6B5 = true;
304 bool Capabilities::Texture::X1R5G5B5 = true;
305 bool Capabilities::Texture::A1R5G5B5 = true;
306 bool Capabilities::Texture::A4R4G4B4 = true;
307 bool Capabilities::Texture::R3G3B2 = true;
308 bool Capabilities::Texture::A8R3G3B2 = true;
309 bool Capabilities::Texture::X4R4G4B4 = true;
310 bool Capabilities::Texture::R8G8B8 = false;
311 bool Capabilities::Texture::X8R8G8B8 = true;
312 bool Capabilities::Texture::A8R8G8B8 = true;
313 bool Capabilities::Texture::X8B8G8R8 = true;
314 bool Capabilities::Texture::A8B8G8R8 = true;
315 bool Capabilities::Texture::P8 = false;
316 bool Capabilities::Texture::A8P8 = false;
317 bool Capabilities::Texture::G16R16 = true;
318 bool Capabilities::Texture::A2R10G10B10 = true;
319 bool Capabilities::Texture::A2B10G10R10 = true;
320 bool Capabilities::Texture::A16B16G16R16 = true;
Nicolas Capens26a86752018-01-31 15:12:03 -0500321 bool Capabilities::Texture::DXT1 = true;
322 bool Capabilities::Texture::DXT2 = true;
323 bool Capabilities::Texture::DXT3 = true;
324 bool Capabilities::Texture::DXT4 = true;
325 bool Capabilities::Texture::DXT5 = true;
326 bool Capabilities::Texture::ATI1 = true;
327 bool Capabilities::Texture::ATI2 = true;
Nicolas Capensee16f0d2015-07-16 17:40:10 -0400328 bool Capabilities::Texture::R16F = true;
329 bool Capabilities::Texture::G16R16F = true;
330 bool Capabilities::Texture::A16B16G16R16F = true;
331 bool Capabilities::Texture::R32F = true;
332 bool Capabilities::Texture::G32R32F = true;
333 bool Capabilities::Texture::A32B32G32R32F = true;
334 bool Capabilities::Texture::V8U8 = true;
335 bool Capabilities::Texture::L6V5U5 = true;
336 bool Capabilities::Texture::X8L8V8U8 = true;
337 bool Capabilities::Texture::Q8W8V8U8 = true;
338 bool Capabilities::Texture::V16U16 = true;
339 bool Capabilities::Texture::A2W10V10U10 = true;
340 bool Capabilities::Texture::Q16W16V16U16 = true;
341 bool Capabilities::Texture::L8 = true;
342 bool Capabilities::Texture::A4L4 = true;
343 bool Capabilities::Texture::L16 = true;
344 bool Capabilities::Texture::A8L8 = true;
345 bool Capabilities::Texture::D32 = true;
346 bool Capabilities::Texture::D24S8 = true;
347 bool Capabilities::Texture::D24X8 = true;
348 bool Capabilities::Texture::D16 = true;
349 bool Capabilities::Texture::D24FS8 = true;
350 bool Capabilities::Texture::D32F_LOCKABLE = true;
351 bool Capabilities::Texture::DF24 = true;
352 bool Capabilities::Texture::DF16 = true;
353 bool Capabilities::Texture::INTZ = true;
354
355 bool Capabilities::isSRGBreadable(D3DFORMAT format)
356 {
357 // Keep in sync with Surface::isSRGBreadable
358 switch(format)
359 {
360 case D3DFMT_L8:
361 case D3DFMT_A8L8:
362 case D3DFMT_R8G8B8:
363 case D3DFMT_A8R8G8B8:
364 case D3DFMT_X8R8G8B8:
365 case D3DFMT_A8B8G8R8:
366 case D3DFMT_X8B8G8R8:
367 case D3DFMT_R5G6B5:
368 case D3DFMT_X1R5G5B5:
369 case D3DFMT_A1R5G5B5:
370 case D3DFMT_A4R4G4B4:
371 case D3DFMT_DXT1:
372 case D3DFMT_DXT2:
373 case D3DFMT_DXT3:
374 case D3DFMT_DXT4:
375 case D3DFMT_DXT5:
376 case D3DFMT_ATI1:
377 case D3DFMT_ATI2:
378 return true;
379 default:
380 return false;
381 }
382
383 return false;
384 }
385
386 bool Capabilities::isSRGBwritable(D3DFORMAT format)
387 {
388 // Keep in sync with Surface::isSRGBwritable
389 switch(format)
390 {
391 case D3DFMT_NULL:
392 case D3DFMT_A8R8G8B8:
393 case D3DFMT_X8R8G8B8:
394 case D3DFMT_A8B8G8R8:
395 case D3DFMT_X8B8G8R8:
396 case D3DFMT_R5G6B5:
397 return true;
398 default:
399 return false;
400 }
401 }
402
403 unsigned int pixelShaderVersionX = D3DPS_VERSION(3, 0);
404 unsigned int vertexShaderVersionX = D3DVS_VERSION(3, 0);
405
406 unsigned long pixelShaderArbitrarySwizzle = D3DPS20CAPS_ARBITRARYSWIZZLE;
407 unsigned long pixelShaderGradientInstructions = D3DPS20CAPS_GRADIENTINSTRUCTIONS;
408 unsigned long pixelShaderPredication = D3DPS20CAPS_PREDICATION;
409 unsigned long pixelShaderNoDependentReadLimit = D3DPS20CAPS_NODEPENDENTREADLIMIT;
410 unsigned long pixelShaderNoTexInstructionLimit = D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT;
411
412 unsigned long pixelShaderDynamicFlowControlDepth = D3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH;
413 unsigned long pixelShaderStaticFlowControlDepth = D3DPS20_MAX_STATICFLOWCONTROLDEPTH;
414
415 unsigned long vertexShaderPredication = D3DVS20CAPS_PREDICATION;
416 unsigned long vertexShaderDynamicFlowControlDepth = D3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH;
417
418 unsigned int textureMemory = 256 * 1024 * 1024;
419 unsigned int maxAnisotropy = 16;
420}