blob: dc16fcec283a952014b234cf330438c863a96cb8 [file] [log] [blame]
// 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