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