| // SwiftShader Software Renderer |
| // |
| // Copyright(c) 2005-2011 TransGaming Inc. |
| // |
| // All rights reserved. No part of this software may be copied, distributed, transmitted, |
| // transcribed, stored in a retrieval system, translated into any human or computer |
| // language by any means, or disclosed to third parties without the explicit written |
| // agreement of TransGaming Inc. Without such an agreement, no rights or licenses, express |
| // or implied, including but not limited to any patent rights, are granted to you. |
| // |
| |
| #ifndef D3D9_Capabilities_hpp |
| #define D3D9_Capabilities_hpp |
| |
| #include <d3d9.h> |
| |
| namespace D3D9 |
| { |
| enum |
| { |
| D3DFMT_ATI1 = MAKEFOURCC('A', 'T', 'I', '1'), |
| D3DFMT_ATI2 = MAKEFOURCC('A', 'T', 'I', '2'), |
| D3DFMT_INST = MAKEFOURCC('I', 'N', 'S', 'T'), |
| D3DFMT_DF24 = MAKEFOURCC('D', 'F', '2', '4'), |
| D3DFMT_DF16 = MAKEFOURCC('D', 'F', '1', '6'), |
| D3DFMT_NULL = MAKEFOURCC('N', 'U', 'L', 'L'), |
| D3DFMT_GET4 = MAKEFOURCC('G', 'E', 'T', '4'), |
| D3DFMT_GET1 = MAKEFOURCC('G', 'E', 'T', '1'), |
| D3DFMT_NVDB = MAKEFOURCC('N', 'V', 'D', 'B'), |
| D3DFMT_A2M1 = MAKEFOURCC('A', '2', 'M', '1'), |
| D3DFMT_A2M0 = MAKEFOURCC('A', '2', 'M', '0'), |
| D3DFMT_ATOC = MAKEFOURCC('A', 'T', 'O', 'C'), |
| D3DFMT_INTZ = MAKEFOURCC('I', 'N', 'T', 'Z') |
| }; |
| |
| struct Capabilities |
| { |
| struct Surface |
| { |
| struct RenderTarget |
| { |
| static bool NULL_; |
| static bool R8G8B8; |
| static bool R5G6B5; |
| static bool X1R5G5B5; |
| static bool A1R5G5B5; |
| static bool A4R4G4B4; |
| static bool R3G3B2; |
| static bool A8R3G3B2; |
| static bool X4R4G4B4; |
| static bool A8R8G8B8; |
| static bool X8R8G8B8; |
| static bool A8B8G8R8; |
| static bool X8B8G8R8; |
| // Integer HDR formats |
| static bool G16R16; |
| static bool A2B10G10R10; |
| static bool A2R10G10B10; |
| static bool A16B16G16R16; |
| // Floating-point formats |
| static bool R16F; |
| static bool G16R16F; |
| static bool A16B16G16R16F; |
| static bool R32F; |
| static bool G32R32F; |
| static bool A32B32G32R32F; |
| }; |
| |
| struct DepthStencil |
| { |
| static bool D32; |
| static bool D24S8; |
| static bool D24X8; |
| static bool D16; |
| static bool D24FS8; |
| static bool D32F_LOCKABLE; |
| static bool DF24; |
| static bool DF16; |
| static bool INTZ; |
| }; |
| |
| static bool A8; |
| static bool R5G6B5; |
| static bool X1R5G5B5; |
| static bool A1R5G5B5; |
| static bool A4R4G4B4; |
| static bool R3G3B2; |
| static bool A8R3G3B2; |
| static bool X4R4G4B4; |
| static bool R8G8B8; |
| static bool X8R8G8B8; |
| static bool A8R8G8B8; |
| static bool A8B8G8R8; |
| static bool X8B8G8R8; |
| // Paletted formats |
| static bool P8; |
| static bool A8P8; |
| // Integer HDR formats |
| static bool G16R16; |
| static bool A2R10G10B10; |
| static bool A2B10G10R10; |
| static bool A16B16G16R16; |
| // Compressed formats |
| static bool DXT1; |
| static bool DXT2; |
| static bool DXT3; |
| static bool DXT4; |
| static bool DXT5; |
| static bool ATI1; |
| static bool ATI2; |
| // Floating-point formats |
| static bool R16F; |
| static bool G16R16F; |
| static bool A16B16G16R16F; |
| static bool R32F; |
| static bool G32R32F; |
| static bool A32B32G32R32F; |
| // Bump map formats |
| static bool V8U8; |
| static bool L6V5U5; |
| static bool X8L8V8U8; |
| static bool Q8W8V8U8; |
| static bool V16U16; |
| static bool A2W10V10U10; |
| static bool Q16W16V16U16; |
| // Luminance formats |
| static bool L8; |
| static bool A4L4; |
| static bool L16; |
| static bool A8L8; |
| // Depth Bounds Test |
| static bool NVDB; |
| // Transparency anti-aliasing |
| static bool ATOC; |
| }; |
| |
| struct Volume |
| { |
| static bool A8; |
| static bool R5G6B5; |
| static bool X1R5G5B5; |
| static bool A1R5G5B5; |
| static bool A4R4G4B4; |
| static bool R3G3B2; |
| static bool A8R3G3B2; |
| static bool X4R4G4B4; |
| static bool R8G8B8; |
| static bool X8R8G8B8; |
| static bool A8R8G8B8; |
| static bool A8B8G8R8; |
| static bool X8B8G8R8; |
| // Paletted formats |
| static bool P8; |
| static bool A8P8; |
| // Integer HDR formats |
| static bool G16R16; |
| static bool A2R10G10B10; |
| static bool A2B10G10R10; |
| static bool A16B16G16R16; |
| // Compressed formats |
| static bool DXT1; |
| static bool DXT2; |
| static bool DXT3; |
| static bool DXT4; |
| static bool DXT5; |
| static bool ATI1; |
| static bool ATI2; |
| // Floating-point formats |
| static bool R16F; |
| static bool G16R16F; |
| static bool A16B16G16R16F; |
| static bool R32F; |
| static bool G32R32F; |
| static bool A32B32G32R32F; |
| // Bump map formats |
| static bool V8U8; |
| static bool L6V5U5; |
| static bool X8L8V8U8; |
| static bool Q8W8V8U8; |
| static bool V16U16; |
| static bool A2W10V10U10; |
| static bool Q16W16V16U16; |
| // Luminance formats |
| static bool L8; |
| static bool A4L4; |
| static bool L16; |
| static bool A8L8; |
| }; |
| |
| struct CubeMap |
| { |
| struct RenderTarget |
| { |
| static bool NULL_; |
| static bool R8G8B8; |
| static bool R5G6B5; |
| static bool X1R5G5B5; |
| static bool A1R5G5B5; |
| static bool A4R4G4B4; |
| static bool R3G3B2; |
| static bool A8R3G3B2; |
| static bool X4R4G4B4; |
| static bool A8R8G8B8; |
| static bool X8R8G8B8; |
| static bool A8B8G8R8; |
| static bool X8B8G8R8; |
| // Integer HDR formats |
| static bool G16R16; |
| static bool A2B10G10R10; |
| static bool A2R10G10B10; |
| static bool A16B16G16R16; |
| // Floating-point formats |
| static bool R16F; |
| static bool G16R16F; |
| static bool A16B16G16R16F; |
| static bool R32F; |
| static bool G32R32F; |
| static bool A32B32G32R32F; |
| }; |
| |
| struct DepthStencil |
| { |
| static bool D32; |
| static bool D24S8; |
| static bool D24X8; |
| static bool D16; |
| static bool D24FS8; |
| static bool D32F_LOCKABLE; |
| static bool DF24; |
| static bool DF16; |
| static bool INTZ; |
| }; |
| |
| static bool A8; |
| static bool R5G6B5; |
| static bool X1R5G5B5; |
| static bool A1R5G5B5; |
| static bool A4R4G4B4; |
| static bool R3G3B2; |
| static bool A8R3G3B2; |
| static bool X4R4G4B4; |
| static bool R8G8B8; |
| static bool X8R8G8B8; |
| static bool A8R8G8B8; |
| static bool A8B8G8R8; |
| static bool X8B8G8R8; |
| // Paletted formats |
| static bool P8; |
| static bool A8P8; |
| // Integer HDR formats |
| static bool G16R16; |
| static bool A2R10G10B10; |
| static bool A2B10G10R10; |
| static bool A16B16G16R16; |
| // Compressed formats |
| static bool DXT1; |
| static bool DXT2; |
| static bool DXT3; |
| static bool DXT4; |
| static bool DXT5; |
| static bool ATI1; |
| static bool ATI2; |
| // Floating-point formats |
| static bool R16F; |
| static bool G16R16F; |
| static bool A16B16G16R16F; |
| static bool R32F; |
| static bool G32R32F; |
| static bool A32B32G32R32F; |
| // Bump map formats |
| static bool V8U8; |
| static bool L6V5U5; |
| static bool X8L8V8U8; |
| static bool Q8W8V8U8; |
| static bool V16U16; |
| static bool A2W10V10U10; |
| static bool Q16W16V16U16; |
| // Luminance formats |
| static bool L8; |
| static bool A4L4; |
| static bool L16; |
| static bool A8L8; |
| }; |
| |
| struct VolumeTexture |
| { |
| static bool A8; |
| static bool R5G6B5; |
| static bool X1R5G5B5; |
| static bool A1R5G5B5; |
| static bool A4R4G4B4; |
| static bool R3G3B2; |
| static bool A8R3G3B2; |
| static bool X4R4G4B4; |
| static bool R8G8B8; |
| static bool X8R8G8B8; |
| static bool A8R8G8B8; |
| static bool A8B8G8R8; |
| static bool X8B8G8R8; |
| // Paletted formats |
| static bool P8; |
| static bool A8P8; |
| // Integer HDR formats |
| static bool G16R16; |
| static bool A2R10G10B10; |
| static bool A2B10G10R10; |
| static bool A16B16G16R16; |
| // Compressed formats |
| static bool DXT1; |
| static bool DXT2; |
| static bool DXT3; |
| static bool DXT4; |
| static bool DXT5; |
| static bool ATI1; |
| static bool ATI2; |
| // Floating-point formats |
| static bool R16F; |
| static bool G16R16F; |
| static bool A16B16G16R16F; |
| static bool R32F; |
| static bool G32R32F; |
| static bool A32B32G32R32F; |
| // Bump map formats |
| static bool V8U8; |
| static bool L6V5U5; |
| static bool X8L8V8U8; |
| static bool Q8W8V8U8; |
| static bool V16U16; |
| static bool A2W10V10U10; |
| static bool Q16W16V16U16; |
| // Luminance formats |
| static bool L8; |
| static bool A4L4; |
| static bool L16; |
| static bool A8L8; |
| }; |
| |
| struct Texture |
| { |
| struct RenderTarget |
| { |
| static bool NULL_; |
| static bool R8G8B8; |
| static bool R5G6B5; |
| static bool X1R5G5B5; |
| static bool A1R5G5B5; |
| static bool A4R4G4B4; |
| static bool R3G3B2; |
| static bool A8R3G3B2; |
| static bool X4R4G4B4; |
| static bool A8R8G8B8; |
| static bool X8R8G8B8; |
| static bool A8B8G8R8; |
| static bool X8B8G8R8; |
| // Integer HDR formats |
| static bool G16R16; |
| static bool A2B10G10R10; |
| static bool A2R10G10B10; |
| static bool A16B16G16R16; |
| // Floating-point formats |
| static bool R16F; |
| static bool G16R16F; |
| static bool A16B16G16R16F; |
| static bool R32F; |
| static bool G32R32F; |
| static bool A32B32G32R32F; |
| }; |
| |
| struct DepthStencil |
| { |
| static bool D32; |
| static bool D24S8; |
| static bool D24X8; |
| static bool D16; |
| static bool D24FS8; |
| static bool D32F_LOCKABLE; |
| static bool DF24; |
| static bool DF16; |
| static bool INTZ; |
| }; |
| |
| static bool NULL_; |
| static bool A8; |
| static bool R5G6B5; |
| static bool X1R5G5B5; |
| static bool A1R5G5B5; |
| static bool A4R4G4B4; |
| static bool R3G3B2; |
| static bool A8R3G3B2; |
| static bool X4R4G4B4; |
| static bool R8G8B8; |
| static bool X8R8G8B8; |
| static bool A8R8G8B8; |
| static bool A8B8G8R8; |
| static bool X8B8G8R8; |
| // Paletted formats |
| static bool P8; |
| static bool A8P8; |
| // Integer HDR formats |
| static bool G16R16; |
| static bool A2R10G10B10; |
| static bool A2B10G10R10; |
| static bool A16B16G16R16; |
| // Compressed formats |
| static bool DXT1; |
| static bool DXT2; |
| static bool DXT3; |
| static bool DXT4; |
| static bool DXT5; |
| static bool ATI1; |
| static bool ATI2; |
| // Floating-point formats |
| static bool R16F; |
| static bool G16R16F; |
| static bool A16B16G16R16F; |
| static bool R32F; |
| static bool G32R32F; |
| static bool A32B32G32R32F; |
| // Bump map formats |
| static bool V8U8; |
| static bool L6V5U5; |
| static bool X8L8V8U8; |
| static bool Q8W8V8U8; |
| static bool V16U16; |
| static bool A2W10V10U10; |
| static bool Q16W16V16U16; |
| // Luminance formats |
| static bool L8; |
| static bool A4L4; |
| static bool L16; |
| static bool A8L8; |
| // Depth formats |
| static bool D32; |
| static bool D24S8; |
| static bool D24X8; |
| static bool D16; |
| static bool D24FS8; |
| static bool D32F_LOCKABLE; |
| static bool DF24; |
| static bool DF16; |
| static bool INTZ; |
| }; |
| |
| static bool isSRGBreadable(D3DFORMAT format); |
| static bool isSRGBwritable(D3DFORMAT format); |
| }; |
| |
| extern unsigned int pixelShaderVersionX; |
| extern unsigned int vertexShaderVersionX; |
| |
| extern unsigned long pixelShaderArbitrarySwizzle; |
| extern unsigned long pixelShaderGradientInstructions; |
| extern unsigned long pixelShaderPredication; |
| extern unsigned long pixelShaderNoDependentReadLimit; |
| extern unsigned long pixelShaderNoTexInstructionLimit; |
| |
| extern unsigned long pixelShaderDynamicFlowControlDepth; |
| extern unsigned long pixelShaderStaticFlowControlDepth; |
| |
| extern unsigned long vertexShaderPredication; |
| extern unsigned long vertexShaderDynamicFlowControlDepth; |
| |
| extern unsigned int textureMemory; |
| extern unsigned int maxAnisotropy; |
| } |
| |
| #endif // D3D9_Capabilities_hpp |