OpenBarnyard
 
Loading...
Searching...
No Matches
TD3DAdapter Class Reference

#include <TRenderAdapter_DX8.h>

Inheritance diagram for TD3DAdapter:
TRenderAdapter TNodeList< T >::TNode

Classes

class  Mode
 

Public Member Functions

 TD3DAdapter ()
 
 ~TD3DAdapter ()
 
virtual TUINT32 GetAdapterIndex () const override
 
virtual const TString8GetDriver () const override
 
virtual const TString8GetDriverDescription () const override
 
virtual TUINT16 GetProductID () const override
 
virtual TUINT16 GetVersion () const override
 
virtual TUINT16 GetSubVersion () const override
 
virtual TUINT16 GetBuild () const override
 
virtual const void * GetDeviceIdentifier () const override
 
virtual TUINT32 GetNumSupportedDevices () const override
 
void SetAdapterIndex (TUINT32 a_uiAdapterIndex)
 
void SetDriver (const TString8 &a_rDriver)
 
void SetDescription (const TString8 &a_rDescription)
 
void SetDriverVersionLowPart (DWORD a_uiDriverVersionLowPart)
 
void SetDriverVersionHighPart (DWORD a_uiDriverVersionHighPart)
 
void SetVendorId (DWORD a_uiVendorId)
 
void SetDeviceId (DWORD a_uiDeviceId)
 
void SetSubSysId (DWORD a_uiSubSysId)
 
void SetRevision (DWORD a_uiRevision)
 
void SetDeviceIdentifier (const GUID &a_rDeviceIdentifier)
 
ModeGetMode ()
 
const ModeGetMode () const
 
D3DADAPTER_IDENTIFIER8 * GetD3DIdentifier8 ()
 
const D3DADAPTER_IDENTIFIER8 * GetD3DIdentifier8 () const
 
void EnumerateOutputs (TRenderInterface *a_pRenderer)
 
- Public Member Functions inherited from TRenderAdapter
 TRenderAdapter ()=default
 
virtual ~TRenderAdapter ()=default
 
TNodeList< Mode > * GetModeList ()
 
- Public Member Functions inherited from TNodeList< T >::TNode
constexpr TNode ()
 
constexpr TNode (const TNode &a_rcNode)
 
 TNode (TNode &&a_rNode)
 
T * Next () const
 
T * Prev () const
 
void Remove ()
 
void SetList (TNodeList *list)
 
TNodeListGetList () const
 
TBOOL IsLinked () const
 

Additional Inherited Members

- Protected Attributes inherited from TNodeList< T >::TNode
friend TNodeList
 
TNodeListm_pList
 
T * m_pNext
 
T * m_pPrev
 

Detailed Description

Definition at line 11 of file TRenderAdapter_DX8.h.

Constructor & Destructor Documentation

◆ TD3DAdapter()

TD3DAdapter::TD3DAdapter ( )

Definition at line 13 of file TRenderAdapter_DX8.cpp.

14{
15}

◆ ~TD3DAdapter()

TD3DAdapter::~TD3DAdapter ( )

Definition at line 19 of file TRenderAdapter_DX8.cpp.

20{
21}

Member Function Documentation

◆ EnumerateOutputs()

void TD3DAdapter::EnumerateOutputs ( TRenderInterface * a_pRenderer)

Definition at line 78 of file TRenderAdapter_DX8.cpp.

79{
80 TRenderD3DInterface* pRenderer = TSTATICCAST( TRenderD3DInterface, a_pRenderer );
81
82 TUINT32 uiAdapterIndex = GetAdapterIndex();
83 TUINT32 uiNumSupportedDevices = GetNumSupportedDevices();
84 TUINT32 uiAdapterModeCount = pRenderer->GetDirect3D()->GetAdapterModeCount( uiAdapterIndex );
85
86 for ( TUINT32 i = 0; i < uiAdapterModeCount; i++ )
87 {
88 auto pMode = new Mode();
89
90 pMode->SetOwnerAdapter( this );
91 pMode->SetModeIndex( i );
92
93 pRenderer->GetDirect3D()->EnumAdapterModes( uiAdapterIndex, i, &pMode->GetD3DDisplayMode() );
94
95 for ( TUINT32 k = 0; k < uiNumSupportedDevices; k++ )
96 {
97 auto pDevice = TSTATICCAST( TD3DAdapter::Mode::Device, pMode->GetDevice( k ) );
98
99 pDevice->SetOwnerMode( pMode );
100 pDevice->SetDeviceIndex( k );
101
102 pRenderer->GetDirect3D()->GetDeviceCaps( uiAdapterIndex, Mode::Device::DEVICETYPES[ k ], &pDevice->GetD3DCaps() );
103 HRESULT hRes = pRenderer->GetDirect3D()->CheckDeviceType(
104 uiAdapterIndex,
106 pMode->GetD3DDisplayMode().Format,
107 pMode->GetD3DDisplayMode().Format,
108 FALSE
109 );
110
111 if ( SUCCEEDED( hRes ) )
112 {
113 auto& caps = pDevice->GetD3DCaps();
114
115 if ( Mode::Device::DEVICETYPES[ k ] == D3DDEVTYPE_REF )
116 {
117 pDevice->m_bIsSoftware = TTRUE;
118 }
119
120 if ( caps.Caps2 & D3DCAPS2_CANRENDERWINDOWED )
121 {
122 pDevice->m_bCanRenderWindowed = TTRUE;
123 }
124
125 if ( caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT )
126 {
127 pDevice->m_bSupportsTransformation = TTRUE;
128 pDevice->m_bSupportsPureDevice = caps.DevCaps & D3DDEVCAPS_PUREDEVICE;
129 }
130
131 if ( caps.DevCaps & D3DDEVCAPS_NPATCHES )
132 {
133 pDevice->m_bSupportsNPatches = TTRUE;
134 }
135
136 if ( pDevice->SupportsHardwareTransfomations() )
137 {
138 if ( pDevice->SupportsPureDevice() )
139 {
140 pDevice->m_eFlags |= D3DCREATE_HARDWARE_VERTEXPROCESSING;
141 }
142 else
143 {
144 pDevice->m_eFlags |= D3DCREATE_MIXED_VERTEXPROCESSING;
145 }
146 }
147 else
148 {
149 pDevice->m_eFlags |= D3DCREATE_SOFTWARE_VERTEXPROCESSING;
150 }
151
152 for ( TINT j = 0; j < Mode::Device::NUMDEPTHSTENCILFORMATS; j++ )
153 {
154 if ( Mode::Device::DEPTHSTENCILFORMATS[ j ] != D3DFMT_UNKNOWN )
155 {
156 HRESULT hCheck = pRenderer->GetDirect3D()->CheckDeviceFormat(
157 uiAdapterIndex,
159 pMode->GetD3DDisplayMode().Format,
160 D3DUSAGE_DEPTHSTENCIL,
161 D3DRTYPE_SURFACE,
163 );
164
165 if ( SUCCEEDED( hCheck ) )
166 {
167 HRESULT hMatch = pRenderer->GetDirect3D()->CheckDepthStencilMatch(
168 uiAdapterIndex,
170 pMode->GetD3DDisplayMode().Format,
171 pMode->GetD3DDisplayMode().Format,
173 );
174
175 if ( SUCCEEDED( hMatch ) )
176 {
177 pDevice->m_aSupportedDSFormats[ j ] = TTRUE;
178 }
179 }
180 }
181 }
182 }
183 }
184
185 GetModeList()->InsertTail( pMode );
186 }
187}
#define TSTATICCAST(POINTERTYPE, VALUE)
Definition Defines.h:69
uint32_t TUINT32
Definition Typedefs.h:13
int TINT
Definition Typedefs.h:7
#define TTRUE
Definition Typedefs.h:25
virtual TUINT32 GetAdapterIndex() const override
virtual TUINT32 GetNumSupportedDevices() const override
static constexpr D3DFORMAT DEPTHSTENCILFORMATS[]
static constexpr TUINT32 NUMDEPTHSTENCILFORMATS
static constexpr D3DDEVTYPE DEVICETYPES[NUMSUPPORTEDDEVICES]
TFORCEINLINE IDirect3D8 * GetDirect3D() const
Gets the Direct3D interface.
TNodeList< Mode > * GetModeList()

◆ GetAdapterIndex()

TUINT32 TD3DAdapter::GetAdapterIndex ( ) const
overridevirtual

Implements TRenderAdapter.

Definition at line 24 of file TRenderAdapter_DX8.cpp.

25{
26 return m_uiAdapterIndex;
27}

◆ GetBuild()

TUINT16 TD3DAdapter::GetBuild ( ) const
overridevirtual

Implements TRenderAdapter.

Definition at line 60 of file TRenderAdapter_DX8.cpp.

61{
62 return m_DriverVersionLowPart & 0xFFFF;
63}

◆ GetD3DIdentifier8() [1/2]

D3DADAPTER_IDENTIFIER8 * TD3DAdapter::GetD3DIdentifier8 ( )
inline

Definition at line 130 of file TRenderAdapter_DX8.h.

130{ return &m_Identifier; }

◆ GetD3DIdentifier8() [2/2]

const D3DADAPTER_IDENTIFIER8 * TD3DAdapter::GetD3DIdentifier8 ( ) const
inline

Definition at line 131 of file TRenderAdapter_DX8.h.

131{ return &m_Identifier; }

◆ GetDeviceIdentifier()

const void * TD3DAdapter::GetDeviceIdentifier ( ) const
overridevirtual

Implements TRenderAdapter.

Definition at line 66 of file TRenderAdapter_DX8.cpp.

67{
68 return &m_DeviceIdentifier;
69}

◆ GetDriver()

const TString8 & TD3DAdapter::GetDriver ( ) const
overridevirtual

Implements TRenderAdapter.

Definition at line 30 of file TRenderAdapter_DX8.cpp.

31{
32 return m_Driver;
33}

◆ GetDriverDescription()

const TString8 & TD3DAdapter::GetDriverDescription ( ) const
overridevirtual

Implements TRenderAdapter.

Definition at line 36 of file TRenderAdapter_DX8.cpp.

37{
38 return m_Description;
39}

◆ GetMode() [1/2]

Mode & TD3DAdapter::GetMode ( )
inline

Definition at line 127 of file TRenderAdapter_DX8.h.

127{ return m_Mode; }

◆ GetMode() [2/2]

const Mode & TD3DAdapter::GetMode ( ) const
inline

Definition at line 128 of file TRenderAdapter_DX8.h.

128{ return m_Mode; }

◆ GetNumSupportedDevices()

TUINT32 TD3DAdapter::GetNumSupportedDevices ( ) const
overridevirtual

Implements TRenderAdapter.

Definition at line 72 of file TRenderAdapter_DX8.cpp.

73{
75}
static constexpr TUINT32 NUMSUPPORTEDDEVICES

◆ GetProductID()

TUINT16 TD3DAdapter::GetProductID ( ) const
overridevirtual

Implements TRenderAdapter.

Definition at line 42 of file TRenderAdapter_DX8.cpp.

43{
44 return m_DriverVersionHighPart >> 16;
45}

◆ GetSubVersion()

TUINT16 TD3DAdapter::GetSubVersion ( ) const
overridevirtual

Implements TRenderAdapter.

Definition at line 54 of file TRenderAdapter_DX8.cpp.

55{
56 return m_DriverVersionLowPart >> 16;
57}

◆ GetVersion()

TUINT16 TD3DAdapter::GetVersion ( ) const
overridevirtual

Implements TRenderAdapter.

Definition at line 48 of file TRenderAdapter_DX8.cpp.

49{
50 return m_DriverVersionHighPart & 0xFFFF;
51}

◆ SetAdapterIndex()

void TD3DAdapter::SetAdapterIndex ( TUINT32 a_uiAdapterIndex)
inline

Definition at line 116 of file TRenderAdapter_DX8.h.

116{ m_uiAdapterIndex = a_uiAdapterIndex; }

◆ SetDescription()

void TD3DAdapter::SetDescription ( const TString8 & a_rDescription)
inline

Definition at line 118 of file TRenderAdapter_DX8.h.

118{ m_Description = a_rDescription; }

◆ SetDeviceId()

void TD3DAdapter::SetDeviceId ( DWORD a_uiDeviceId)
inline

Definition at line 122 of file TRenderAdapter_DX8.h.

122{ m_DeviceId = a_uiDeviceId; }

◆ SetDeviceIdentifier()

void TD3DAdapter::SetDeviceIdentifier ( const GUID & a_rDeviceIdentifier)
inline

Definition at line 125 of file TRenderAdapter_DX8.h.

125{ m_DeviceIdentifier = a_rDeviceIdentifier; }

◆ SetDriver()

void TD3DAdapter::SetDriver ( const TString8 & a_rDriver)
inline

Definition at line 117 of file TRenderAdapter_DX8.h.

117{ m_Driver = a_rDriver; }

◆ SetDriverVersionHighPart()

void TD3DAdapter::SetDriverVersionHighPart ( DWORD a_uiDriverVersionHighPart)
inline

Definition at line 120 of file TRenderAdapter_DX8.h.

120{ m_DriverVersionHighPart = a_uiDriverVersionHighPart; }

◆ SetDriverVersionLowPart()

void TD3DAdapter::SetDriverVersionLowPart ( DWORD a_uiDriverVersionLowPart)
inline

Definition at line 119 of file TRenderAdapter_DX8.h.

119{ m_DriverVersionLowPart = a_uiDriverVersionLowPart; }

◆ SetRevision()

void TD3DAdapter::SetRevision ( DWORD a_uiRevision)
inline

Definition at line 124 of file TRenderAdapter_DX8.h.

124{ m_Revision = a_uiRevision; }

◆ SetSubSysId()

void TD3DAdapter::SetSubSysId ( DWORD a_uiSubSysId)
inline

Definition at line 123 of file TRenderAdapter_DX8.h.

123{ m_SubSysId = a_uiSubSysId; }

◆ SetVendorId()

void TD3DAdapter::SetVendorId ( DWORD a_uiVendorId)
inline

Definition at line 121 of file TRenderAdapter_DX8.h.

121{ m_VendorId = a_uiVendorId; }

The documentation for this class was generated from the following files: