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