initial
This commit is contained in:
132
public/rendersystem/irenderhardwareconfig.h
Normal file
132
public/rendersystem/irenderhardwareconfig.h
Normal file
@@ -0,0 +1,132 @@
|
||||
//===== Copyright <20> 1996-2005, Valve Corporation, All rights reserved. ======//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $Header: $
|
||||
// $NoKeywords: $
|
||||
//===========================================================================//
|
||||
|
||||
#ifndef IRENDERHARDWARECONFIG_H
|
||||
#define IRENDERHARDWARECONFIG_H
|
||||
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
|
||||
#include "tier1/interface.h"
|
||||
#include "bitmap/imageformat.h"
|
||||
|
||||
|
||||
// use DEFCONFIGMETHOD to define time-critical methods that we want to make just return constants
|
||||
// on the 360, so that the checks will happen at compile time. Not all methods are defined this way
|
||||
// - just the ones that I perceive as being called often in the frame interval.
|
||||
#ifdef _X360
|
||||
#define DEFCONFIGMETHOD( ret_type, method, xbox_return_value ) \
|
||||
FORCEINLINE ret_type method const \
|
||||
{ \
|
||||
return xbox_return_value; \
|
||||
}
|
||||
|
||||
|
||||
#else
|
||||
#define DEFCONFIGMETHOD( ret_type, method, xbox_return_value ) \
|
||||
virtual ret_type method const = 0;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Render system configuration
|
||||
//-----------------------------------------------------------------------------
|
||||
class IRenderHardwareConfig
|
||||
{
|
||||
public:
|
||||
virtual int GetFrameBufferColorDepth() const = 0;
|
||||
virtual int GetSamplerCount() const = 0;
|
||||
virtual bool HasSetDeviceGammaRamp() const = 0;
|
||||
DEFCONFIGMETHOD( bool, SupportsNormalMapCompression(), true );
|
||||
virtual int MaximumAnisotropicLevel() const = 0; // 0 means no anisotropic filtering
|
||||
virtual int MaxTextureWidth() const = 0;
|
||||
virtual int MaxTextureHeight() const = 0;
|
||||
virtual int TextureMemorySize() const = 0;
|
||||
virtual bool SupportsMipmappedCubemaps() const = 0;
|
||||
|
||||
virtual int NumVertexShaderConstants() const = 0;
|
||||
virtual int NumPixelShaderConstants() const = 0;
|
||||
virtual int MaxNumLights() const = 0;
|
||||
virtual int MaxTextureAspectRatio() const = 0;
|
||||
virtual int MaxVertexShaderBlendMatrices() const = 0;
|
||||
virtual int MaxUserClipPlanes() const = 0;
|
||||
virtual bool UseFastClipping() const = 0;
|
||||
|
||||
// This here should be the major item looked at when checking for compat
|
||||
// from anywhere other than the material system shaders
|
||||
DEFCONFIGMETHOD( int, GetDXSupportLevel(), 98 );
|
||||
virtual const char *GetShaderDLLName() const = 0;
|
||||
|
||||
virtual bool ReadPixelsFromFrontBuffer() const = 0;
|
||||
|
||||
// Are dx dynamic textures preferred?
|
||||
virtual bool PreferDynamicTextures() const = 0;
|
||||
|
||||
virtual bool NeedsAAClamp() const = 0;
|
||||
virtual bool NeedsATICentroidHack() const = 0;
|
||||
|
||||
// This is the max dx support level supported by the card
|
||||
virtual int GetMaxDXSupportLevel() const = 0;
|
||||
|
||||
// Does the card specify fog color in linear space when sRGBWrites are enabled?
|
||||
virtual bool SpecifiesFogColorInLinearSpace() const = 0;
|
||||
|
||||
// Does the card support sRGB reads/writes?
|
||||
DEFCONFIGMETHOD( bool, SupportsSRGB(), true );
|
||||
|
||||
virtual bool IsAAEnabled() const = 0; // Is antialiasing being used?
|
||||
|
||||
// NOTE: Anything after this was added after shipping HL2.
|
||||
virtual int GetVertexTextureCount() const = 0;
|
||||
virtual int GetMaxVertexTextureDimension() const = 0;
|
||||
|
||||
virtual int MaxTextureDepth() const = 0;
|
||||
|
||||
virtual bool SupportsStreamOffset() const = 0;
|
||||
|
||||
virtual int StencilBufferBits() const = 0;
|
||||
virtual int MaxViewports() const = 0;
|
||||
|
||||
virtual void OverrideStreamOffsetSupport( bool bOverrideEnabled, bool bEnableSupport ) = 0;
|
||||
|
||||
virtual ShadowFilterMode_t GetShadowFilterMode( bool bForceLowQualityShadows, bool bPS30 ) const = 0;
|
||||
|
||||
virtual int NeedsShaderSRGBConversion() const = 0;
|
||||
|
||||
DEFCONFIGMETHOD( bool, UsesSRGBCorrectBlending(), true );
|
||||
|
||||
virtual bool HasFastVertexTextures() const = 0;
|
||||
virtual int MaxHWMorphBatchCount() const = 0;
|
||||
|
||||
virtual bool SupportsBorderColor( void ) const = 0;
|
||||
virtual bool SupportsFetch4( void ) const = 0;
|
||||
|
||||
virtual float GetShadowDepthBias() const = 0;
|
||||
virtual float GetShadowSlopeScaleDepthBias() const = 0;
|
||||
|
||||
virtual bool PreferZPrepass() const = 0;
|
||||
|
||||
virtual bool SuppressPixelShaderCentroidHackFixup() const = 0;
|
||||
virtual bool PreferTexturesInHWMemory() const = 0;
|
||||
virtual bool PreferHardwareSync() const = 0;
|
||||
virtual bool ActualHasFastVertexTextures() const = 0;
|
||||
|
||||
virtual bool SupportsShadowDepthTextures( void ) const = 0;
|
||||
virtual ImageFormat GetShadowDepthTextureFormat( void ) const = 0;
|
||||
virtual ImageFormat GetNullTextureFormat( void ) const = 0;
|
||||
virtual int GetMinDXSupportLevel() const = 0;
|
||||
virtual bool IsUnsupported() const = 0;
|
||||
|
||||
// Necessary on the 360 to improve performance of hierarchical Z
|
||||
virtual bool ReverseDepth() const = 0;
|
||||
};
|
||||
|
||||
#endif // IRENDERHARDWARECONFIG_H
|
||||
Reference in New Issue
Block a user