OpenBarnyard
 
Loading...
Searching...
No Matches
TRenderAdapter_DX8.h
Go to the documentation of this file.
1#pragma once
2#include "Toshi/TString8.h"
5
6#include <d3d8.h>
7#include <windows.h>
8
10
12{
13public:
15 {
16 public:
17 static constexpr TUINT32 NUMSUPPORTEDDEVICES = 2;
18
20 {
21 public:
23 friend Mode;
24
25 static constexpr D3DDEVTYPE DEVICETYPES[ NUMSUPPORTEDDEVICES ] = {
26 D3DDEVTYPE_HAL,
27 D3DDEVTYPE_REF
28 };
29
30 static constexpr const TCHAR* DEVICETYPESSTRINGS[ NUMSUPPORTEDDEVICES ] = {
31 "HAL",
32 "REF"
33 };
34
35 static constexpr D3DFORMAT DEPTHSTENCILFORMATS[] = {
36 D3DFMT_D16,
37 D3DFMT_D15S1,
38 D3DFMT_D24X8,
39 D3DFMT_D24S8,
40 D3DFMT_D32
41 };
42
44
45 public:
46 virtual TRenderAdapter::Mode* GetMode() const override;
47 virtual TUINT32 GetDeviceIndex() const override;
48 virtual const TCHAR* GetTypeString() const override;
49 virtual TBOOL IsSoftware() const override;
50 virtual TBOOL CanRenderWindowed() const override;
51 virtual TBOOL SupportsHardwareTransfomations() const override;
52 virtual TBOOL IsDepthStencilFormatSupported( TUINT32 a_iIndex ) const override;
53 virtual TBOOL SupportsPureDevice() const;
54
55 void SetD3DCaps( const D3DCAPS8& a_rCaps ) { m_Caps = a_rCaps; }
56 void SetOwnerMode( Mode* a_pMode ) { m_pOwnerMode = a_pMode; }
57 void SetDeviceIndex( TUINT32 a_uiIndex ) { m_uiDeviceIndex = a_uiIndex; }
58
59 TUINT32 GetD3DDeviceFlags() const { return m_eFlags; }
60
61 D3DCAPS8& GetD3DCaps() { return m_Caps; }
62 const D3DCAPS8& GetD3DCaps() const { return m_Caps; }
63
64 private:
65 D3DCAPS8 m_Caps;
66 TUINT32 m_eFlags;
67 Mode* m_pOwnerMode;
68 TUINT32 m_uiDeviceIndex;
69 TBOOL m_bIsSoftware;
70 TBOOL m_bCanRenderWindowed;
71 TBOOL m_bSupportsTransformation;
72 TBOOL m_bSupportsPureDevice;
73 TBOOL m_bSupportsNPatches;
74 TBOOL m_aSupportedDSFormats[ NUMDEPTHSTENCILFORMATS ];
75 };
76
77 public:
78 virtual TRenderAdapter* GetAdapter() const override;
79 virtual size_t GetModeIndex() const override;
80 virtual TUINT32 GetWidth() const override;
81 virtual TUINT32 GetHeight() const override;
82 virtual TBOOL Is32Bit() const override;
83 virtual TBOOL Is16Bit() const override;
84 virtual TUINT32 GetRefreshRate() const override;
85 virtual TRenderAdapter::Mode::Device* GetDevice( TUINT32 a_iDevice ) override;
86
87 D3DFORMAT GetBackBufferFormat( TUINT32 a_uiColourDepth );
88
89 void SetOwnerAdapter( TD3DAdapter* a_pOwnerAdapter ) { m_pOwnerAdapter = a_pOwnerAdapter; }
90 void SetModeIndex( TUINT32 a_uiModeIndex ) { m_uiModeIndex = a_uiModeIndex; }
91
92 void SetD3DDisplayMode( const D3DDISPLAYMODE& a_rDisplayMode ) { m_DisplayMode = a_rDisplayMode; }
93 D3DDISPLAYMODE& GetD3DDisplayMode() { return m_DisplayMode; }
94
95 private:
96 TD3DAdapter* m_pOwnerAdapter;
97 D3DDISPLAYMODE m_DisplayMode;
98 TUINT32 m_uiModeIndex;
99 Device m_aDevices[ NUMSUPPORTEDDEVICES ];
100 };
101
102public:
103 TD3DAdapter();
104 ~TD3DAdapter();
105
106 virtual TUINT32 GetAdapterIndex() const override;
107 virtual const TString8& GetDriver() const override;
108 virtual const TString8& GetDriverDescription() const override;
109 virtual TUINT16 GetProductID() const override;
110 virtual TUINT16 GetVersion() const override;
111 virtual TUINT16 GetSubVersion() const override;
112 virtual TUINT16 GetBuild() const override;
113 virtual const void* GetDeviceIdentifier() const override;
114 virtual TUINT32 GetNumSupportedDevices() const override;
115
116 void SetAdapterIndex( TUINT32 a_uiAdapterIndex ) { m_uiAdapterIndex = a_uiAdapterIndex; }
117 void SetDriver( const TString8& a_rDriver ) { m_Driver = a_rDriver; }
118 void SetDescription( const TString8& a_rDescription ) { m_Description = a_rDescription; }
119 void SetDriverVersionLowPart( DWORD a_uiDriverVersionLowPart ) { m_DriverVersionLowPart = a_uiDriverVersionLowPart; }
120 void SetDriverVersionHighPart( DWORD a_uiDriverVersionHighPart ) { m_DriverVersionHighPart = a_uiDriverVersionHighPart; }
121 void SetVendorId( DWORD a_uiVendorId ) { m_VendorId = a_uiVendorId; }
122 void SetDeviceId( DWORD a_uiDeviceId ) { m_DeviceId = a_uiDeviceId; }
123 void SetSubSysId( DWORD a_uiSubSysId ) { m_SubSysId = a_uiSubSysId; }
124 void SetRevision( DWORD a_uiRevision ) { m_Revision = a_uiRevision; }
125 void SetDeviceIdentifier( const GUID& a_rDeviceIdentifier ) { m_DeviceIdentifier = a_rDeviceIdentifier; }
126
127 Mode& GetMode() { return m_Mode; }
128 const Mode& GetMode() const { return m_Mode; }
129
130 D3DADAPTER_IDENTIFIER8* GetD3DIdentifier8() { return &m_Identifier; }
131 const D3DADAPTER_IDENTIFIER8* GetD3DIdentifier8() const { return &m_Identifier; }
132
133 void EnumerateOutputs( TRenderInterface* a_pRenderer );
134
135private:
136 D3DADAPTER_IDENTIFIER8 m_Identifier;
137 Mode m_Mode;
138 TUINT32 m_uiAdapterIndex;
139 TString8 m_Driver;
140 TString8 m_Description;
141 DWORD m_DriverVersionLowPart;
142 DWORD m_DriverVersionHighPart;
143 DWORD m_VendorId;
144 DWORD m_DeviceId;
145 DWORD m_SubSysId;
146 DWORD m_Revision;
147 GUID m_DeviceIdentifier;
148};
149
Rendering system interface for the Toshi engine.
#define TOSHI_NAMESPACE_START
Definition Defines.h:47
#define TARRAYSIZE(ARRAY)
Definition Defines.h:70
#define TOSHI_NAMESPACE_END
Definition Defines.h:50
Char string implementation for the Toshi engine.
uint16_t TUINT16
Definition Typedefs.h:15
char TCHAR
Definition Typedefs.h:20
uint32_t TUINT32
Definition Typedefs.h:13
bool TBOOL
Definition Typedefs.h:6
void SetDriverVersionLowPart(DWORD a_uiDriverVersionLowPart)
void SetDeviceIdentifier(const GUID &a_rDeviceIdentifier)
virtual TUINT16 GetVersion() const override
void SetDescription(const TString8 &a_rDescription)
virtual const void * GetDeviceIdentifier() const override
virtual TUINT32 GetAdapterIndex() const override
void SetDriverVersionHighPart(DWORD a_uiDriverVersionHighPart)
virtual TUINT16 GetSubVersion() const override
const D3DADAPTER_IDENTIFIER8 * GetD3DIdentifier8() const
void EnumerateOutputs(TRenderInterface *a_pRenderer)
const Mode & GetMode() const
void SetAdapterIndex(TUINT32 a_uiAdapterIndex)
virtual TUINT32 GetNumSupportedDevices() const override
D3DADAPTER_IDENTIFIER8 * GetD3DIdentifier8()
void SetRevision(DWORD a_uiRevision)
virtual TUINT16 GetBuild() const override
void SetVendorId(DWORD a_uiVendorId)
virtual const TString8 & GetDriver() const override
void SetDeviceId(DWORD a_uiDeviceId)
virtual TUINT16 GetProductID() const override
virtual const TString8 & GetDriverDescription() const override
void SetDriver(const TString8 &a_rDriver)
void SetSubSysId(DWORD a_uiSubSysId)
virtual TBOOL Is32Bit() const override
virtual TUINT32 GetWidth() const override
void SetD3DDisplayMode(const D3DDISPLAYMODE &a_rDisplayMode)
virtual TRenderAdapter * GetAdapter() const override
D3DFORMAT GetBackBufferFormat(TUINT32 a_uiColourDepth)
virtual size_t GetModeIndex() const override
static constexpr TUINT32 NUMSUPPORTEDDEVICES
virtual TBOOL Is16Bit() const override
virtual TRenderAdapter::Mode::Device * GetDevice(TUINT32 a_iDevice) override
void SetModeIndex(TUINT32 a_uiModeIndex)
void SetOwnerAdapter(TD3DAdapter *a_pOwnerAdapter)
virtual TUINT32 GetRefreshRate() const override
virtual TUINT32 GetHeight() const override
D3DDISPLAYMODE & GetD3DDisplayMode()
virtual TBOOL IsSoftware() const override
virtual TBOOL SupportsHardwareTransfomations() const override
virtual TBOOL IsDepthStencilFormatSupported(TUINT32 a_iIndex) const override
virtual TUINT32 GetDeviceIndex() const override
static constexpr const TCHAR * DEVICETYPESSTRINGS[NUMSUPPORTEDDEVICES]
void SetOwnerMode(Mode *a_pMode)
virtual TBOOL CanRenderWindowed() const override
virtual const TCHAR * GetTypeString() const override
virtual TBOOL SupportsPureDevice() const
void SetD3DCaps(const D3DCAPS8 &a_rCaps)
virtual TRenderAdapter::Mode * GetMode() const override
static constexpr D3DFORMAT DEPTHSTENCILFORMATS[]
void SetDeviceIndex(TUINT32 a_uiIndex)
static constexpr TUINT32 NUMDEPTHSTENCILFORMATS
static constexpr D3DDEVTYPE DEVICETYPES[NUMSUPPORTEDDEVICES]
const D3DCAPS8 & GetD3DCaps() const
TRenderAdapter()=default