Skip to content

Commit

Permalink
[d3d8] Use non-extended IDirect3D9
Browse files Browse the repository at this point in the history
  • Loading branch information
AlpyneDreams committed Jul 7, 2024
1 parent b5e2b3e commit 545ff69
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 17 deletions.
14 changes: 7 additions & 7 deletions src/d3d8/d3d8_interface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,16 @@ namespace dxvk
{
D3D8Interface::D3D8Interface() {

d3d9::Direct3DCreate9Ex(D3D_SDK_VERSION, &m_d3d9ex);
m_d3d9 = d3d9::Direct3DCreate9(D3D_SDK_VERSION);

// Get the bridge interface to D3D9.
if (FAILED(m_d3d9ex->QueryInterface(__uuidof(IDxvkD3D8InterfaceBridge), (void**)&m_bridge))) {
if (FAILED(m_d3d9->QueryInterface(__uuidof(IDxvkD3D8InterfaceBridge), (void**)&m_bridge))) {
throw DxvkError("D3D8Device: ERROR! Failed to get D3D9 Bridge. d3d9.dll might not be DXVK!");
}

m_d3d8Options = D3D8Options(*m_bridge->GetConfig());

m_adapterCount = m_d3d9ex->GetAdapterCount();
m_adapterCount = m_d3d9->GetAdapterCount();
m_adapterModeCounts.resize(m_adapterCount);
m_adapterModes.reserve(m_adapterCount);

Expand All @@ -28,11 +28,11 @@ namespace dxvk
// cache adapter modes and mode counts for each d3d9 format
for (d3d9::D3DFORMAT fmt : ADAPTER_FORMATS) {

const UINT modeCount = m_d3d9ex->GetAdapterModeCount(adapter, fmt);
const UINT modeCount = m_d3d9->GetAdapterModeCount(adapter, fmt);
for (UINT mode = 0; mode < modeCount; mode++) {

m_adapterModes[adapter].emplace_back();
m_d3d9ex->EnumAdapterModes(adapter, fmt, mode, &(m_adapterModes[adapter].back()));
m_d3d9->EnumAdapterModes(adapter, fmt, mode, &(m_adapterModes[adapter].back()));

// can't use modeCount as it's only for one fmt
m_adapterModeCounts[adapter]++;
Expand Down Expand Up @@ -71,7 +71,7 @@ namespace dxvk
Flags |= D3DENUM_WHQL_LEVEL;

d3d9::D3DADAPTER_IDENTIFIER9 identifier9;
HRESULT res = m_d3d9ex->GetAdapterIdentifier(Adapter, Flags, &identifier9);
HRESULT res = m_d3d9->GetAdapterIdentifier(Adapter, Flags, &identifier9);

strncpy(pIdentifier->Driver, identifier9.Driver, MAX_DEVICE_IDENTIFIER_STRING);
strncpy(pIdentifier->Description, identifier9.Description, MAX_DEVICE_IDENTIFIER_STRING);
Expand Down Expand Up @@ -114,7 +114,7 @@ namespace dxvk

Com<d3d9::IDirect3DDevice9> pDevice9 = nullptr;
d3d9::D3DPRESENT_PARAMETERS params = ConvertPresentParameters9(pPresentationParameters);
HRESULT res = m_d3d9ex->CreateDevice(
HRESULT res = m_d3d9->CreateDevice(
Adapter,
(d3d9::D3DDEVTYPE)DeviceType,
hFocusWindow,
Expand Down
20 changes: 10 additions & 10 deletions src/d3d8/d3d8_interface.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@ namespace dxvk {
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);

HRESULT STDMETHODCALLTYPE RegisterSoftwareDevice(void* pInitializeFunction) {
return m_d3d9ex->RegisterSoftwareDevice(pInitializeFunction);
return m_d3d9->RegisterSoftwareDevice(pInitializeFunction);
}

UINT STDMETHODCALLTYPE GetAdapterCount() {
return m_d3d9ex->GetAdapterCount();
return m_d3d9->GetAdapterCount();
}

HRESULT STDMETHODCALLTYPE GetAdapterIdentifier(
Expand All @@ -54,7 +54,7 @@ namespace dxvk {
D3DDISPLAYMODE* pMode);

HRESULT STDMETHODCALLTYPE GetAdapterDisplayMode(UINT Adapter, D3DDISPLAYMODE* pMode) {
return m_d3d9ex->GetAdapterDisplayMode(Adapter, (d3d9::D3DDISPLAYMODE*)pMode);
return m_d3d9->GetAdapterDisplayMode(Adapter, (d3d9::D3DDISPLAYMODE*)pMode);
}

HRESULT STDMETHODCALLTYPE CheckDeviceType(
Expand All @@ -63,7 +63,7 @@ namespace dxvk {
D3DFORMAT AdapterFormat,
D3DFORMAT BackBufferFormat,
BOOL bWindowed) {
return m_d3d9ex->CheckDeviceType(
return m_d3d9->CheckDeviceType(
Adapter,
(d3d9::D3DDEVTYPE)DevType,
(d3d9::D3DFORMAT)AdapterFormat,
Expand All @@ -79,7 +79,7 @@ namespace dxvk {
DWORD Usage,
D3DRESOURCETYPE RType,
D3DFORMAT CheckFormat) {
return m_d3d9ex->CheckDeviceFormat(
return m_d3d9->CheckDeviceFormat(
Adapter,
(d3d9::D3DDEVTYPE)DeviceType,
(d3d9::D3DFORMAT)AdapterFormat,
Expand All @@ -97,7 +97,7 @@ namespace dxvk {
D3DMULTISAMPLE_TYPE MultiSampleType) {

DWORD* pQualityLevels = nullptr;
return m_d3d9ex->CheckDeviceMultiSampleType(
return m_d3d9->CheckDeviceMultiSampleType(
Adapter,
(d3d9::D3DDEVTYPE)DeviceType,
(d3d9::D3DFORMAT)SurfaceFormat,
Expand All @@ -114,7 +114,7 @@ namespace dxvk {
D3DFORMAT RenderTargetFormat,
D3DFORMAT DepthStencilFormat) {
if (isSupportedDepthStencilFormat(DepthStencilFormat))
return m_d3d9ex->CheckDepthStencilMatch(
return m_d3d9->CheckDepthStencilMatch(
Adapter,
(d3d9::D3DDEVTYPE)DeviceType,
(d3d9::D3DFORMAT)AdapterFormat,
Expand All @@ -130,13 +130,13 @@ namespace dxvk {
D3DDEVTYPE DeviceType,
D3DCAPS8* pCaps) {
d3d9::D3DCAPS9 caps9;
HRESULT res = m_d3d9ex->GetDeviceCaps(Adapter, (d3d9::D3DDEVTYPE)DeviceType, &caps9);
HRESULT res = m_d3d9->GetDeviceCaps(Adapter, (d3d9::D3DDEVTYPE)DeviceType, &caps9);
dxvk::ConvertCaps8(caps9, pCaps);
return res;
}

HMONITOR STDMETHODCALLTYPE GetAdapterMonitor(UINT Adapter) {
return m_d3d9ex->GetAdapterMonitor(Adapter);
return m_d3d9->GetAdapterMonitor(Adapter);
}

HRESULT STDMETHODCALLTYPE CreateDevice(
Expand All @@ -156,7 +156,7 @@ namespace dxvk {
std::vector<UINT> m_adapterModeCounts;
std::vector<std::vector<d3d9::D3DDISPLAYMODE>> m_adapterModes;

d3d9::IDirect3D9Ex* m_d3d9ex;
d3d9::IDirect3D9* m_d3d9;
Com<IDxvkD3D8InterfaceBridge> m_bridge;
D3D8Options m_d3d8Options;
};
Expand Down

0 comments on commit 545ff69

Please sign in to comment.