Skip to content

Commit

Permalink
Share address table across all interfaces
Browse files Browse the repository at this point in the history
  • Loading branch information
elishacloud committed Aug 24, 2024
1 parent 74d5141 commit 47be4eb
Show file tree
Hide file tree
Showing 35 changed files with 101 additions and 180 deletions.
2 changes: 1 addition & 1 deletion Dllmain/BuildNo.rc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
#define BUILD_NUMBER 7109
#define BUILD_NUMBER 7110
24 changes: 23 additions & 1 deletion d3d9/AddressLookupTable.h
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,10 @@ class AddressLookupTableD3d9
template <typename T>
void SaveAddress(T *Wrapper, void *Proxy)
{
while (ClearFlag)
{
Sleep(0);
}
constexpr UINT CacheIndex = AddressCacheIndex<T>::CacheIndex;
if (Wrapper && Proxy)
{
Expand All @@ -149,7 +153,7 @@ class AddressLookupTableD3d9
template <typename T>
void DeleteAddress(T *Wrapper)
{
if (!Wrapper || ConstructorFlag)
if (!Wrapper || ConstructorFlag || ClearFlag)
{
return;
}
Expand All @@ -173,8 +177,26 @@ class AddressLookupTableD3d9
return g_map[AddressCacheIndex<m_IDirect3DDevice9Ex>::CacheIndex].size();
}

void ClearInterfaces()
{
ClearFlag = true;
for (UINT x = 0; x < MaxIndex; x++)
{
if (x != AddressCacheIndex<m_IDirect3D9Ex>::CacheIndex)
{
for (const auto& entry : g_map[x])
{
entry.second->DeleteMe();
}
g_map[x].clear();
}
}
ClearFlag = false;
}

private:
bool ConstructorFlag = false;
bool ClearFlag = false;
std::unordered_map<void*, class AddressLookupTableD3d9Object*> g_map[MaxIndex];
};

Expand Down
29 changes: 1 addition & 28 deletions d3d9/IDirect3D9Ex.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,8 @@
// WndProc hook
bool EnableWndProcHook = false;

AddressLookupTableD3d9<m_IDirect3DDevice9Ex> ProxyAddressLookupTableD3d9(nullptr); // Just used for m_IDirect3D9Ex interfaces only

void AdjustWindow(HWND MainhWnd, LONG displayWidth, LONG displayHeight, bool isWindowed);

void m_IDirect3D9Ex::InitInterface()
{
ProxyAddressLookupTableD3d9.SaveAddress(this, ProxyInterface);
}
void m_IDirect3D9Ex::ReleaseInterface()
{
ProxyAddressLookupTableD3d9.DeleteAddress(this);
}

HRESULT m_IDirect3D9Ex::QueryInterface(REFIID riid, void** ppvObj)
{
Logging::LogDebug() << __FUNCTION__ << " (" << this << ") " << riid;
Expand All @@ -52,7 +41,7 @@ HRESULT m_IDirect3D9Ex::QueryInterface(REFIID riid, void** ppvObj)
{
if (riid == IID_IDirect3D9 || riid == IID_IDirect3D9Ex)
{
*ppvObj = ProxyAddressLookupTableD3d9.FindAddress<m_IDirect3D9Ex, void>(*ppvObj, nullptr, riid);
*ppvObj = ProxyAddressLookupTable9.FindAddress<m_IDirect3D9Ex, void>(*ppvObj, nullptr, riid);
}
else
{
Expand Down Expand Up @@ -306,14 +295,6 @@ HRESULT m_IDirect3D9Ex::CreateDevice(UINT Adapter, D3DDEVTYPE DeviceType, HWND h
DeviceDetails.DeviceMultiSampleQuality = pPresentationParameters->MultiSampleQuality;

*ppReturnedDeviceInterface = new m_IDirect3DDevice9Ex((LPDIRECT3DDEVICE9EX)*ppReturnedDeviceInterface, this, IID_IDirect3DDevice9);

// Create the object and add it to the vector
ADDRESSTABLE newAddressTable = { new AddressLookupTableD3d9<m_IDirect3DDevice9Ex>(nullptr) };

// Add the newTable to the AddressDeviceMap vector
AddressDeviceMap.push_back(newAddressTable);

((m_IDirect3DDevice9Ex*)(*ppReturnedDeviceInterface))->SetProxyLookupTable(newAddressTable.ProxyAddressLookupTable);
((m_IDirect3DDevice9Ex*)(*ppReturnedDeviceInterface))->SetDeviceDetails(DeviceDetails);

return D3D_OK;
Expand Down Expand Up @@ -385,14 +366,6 @@ HRESULT m_IDirect3D9Ex::CreateDeviceEx(THIS_ UINT Adapter, D3DDEVTYPE DeviceType
DeviceDetails.DeviceMultiSampleQuality = pPresentationParameters->MultiSampleQuality;

*ppReturnedDeviceInterface = new m_IDirect3DDevice9Ex(*ppReturnedDeviceInterface, this, IID_IDirect3DDevice9Ex);

// Create the object and add it to the vector
ADDRESSTABLE newAddressTable = { new AddressLookupTableD3d9<m_IDirect3DDevice9Ex>(nullptr) };

// Add the newTable to the AddressDeviceMap vector
AddressDeviceMap.push_back(newAddressTable);

((m_IDirect3DDevice9Ex*)(*ppReturnedDeviceInterface))->SetProxyLookupTable(newAddressTable.ProxyAddressLookupTable);
((m_IDirect3DDevice9Ex*)(*ppReturnedDeviceInterface))->SetDeviceDetails(DeviceDetails);

return D3D_OK;
Expand Down
32 changes: 2 additions & 30 deletions d3d9/IDirect3D9Ex.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,8 @@ class m_IDirect3D9Ex : public IDirect3D9Ex, public AddressLookupTableD3d9Object
HRESULT CreateDeviceT(UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* pPresentationParameters, D3DDISPLAYMODEEX* pFullscreenDisplayMode, IDirect3DDevice9Ex** ppReturnedDeviceInterface)
{ return (ProxyInterfaceEx) ? ProxyInterfaceEx->CreateDeviceEx(Adapter, DeviceType, hFocusWindow, BehaviorFlags, pPresentationParameters, pFullscreenDisplayMode, ppReturnedDeviceInterface) : D3DERR_INVALIDCALL; }

// AddressTable Structure
struct ADDRESSTABLE {
AddressLookupTableD3d9<m_IDirect3DDevice9Ex>* ProxyAddressLookupTable = nullptr;
};

// AddressDeviceMap as a vector of ADDRESSTABLE
std::vector<ADDRESSTABLE> AddressDeviceMap;

// Other helper functions
void LogAdapterNames();
void InitInterface();
void ReleaseInterface();

public:
m_IDirect3D9Ex(LPDIRECT3D9EX pDirect3D, REFIID DeviceID) : ProxyInterface(pDirect3D), WrapperID(DeviceID)
Expand All @@ -42,31 +32,13 @@ class m_IDirect3D9Ex : public IDirect3D9Ex, public AddressLookupTableD3d9Object

LogAdapterNames();

InitInterface();
ProxyAddressLookupTable9.SaveAddress(this, ProxyInterface);
}
~m_IDirect3D9Ex()
{
LOG_LIMIT(3, __FUNCTION__ << " (" << this << ")" << " deleting interface!");

for (auto& entry : AddressDeviceMap)
{
delete entry.ProxyAddressLookupTable;
}

ReleaseInterface();
}
void ClearAddressTable(AddressLookupTableD3d9<m_IDirect3DDevice9Ex>* ProxyAddressLookupTable)
{
// Remove device from the map
for (auto it = AddressDeviceMap.begin(); it != AddressDeviceMap.end(); ++it)
{
if (it->ProxyAddressLookupTable == ProxyAddressLookupTable)
{
AddressDeviceMap.erase(it);
delete ProxyAddressLookupTable;
break;
}
}
ProxyAddressLookupTable9.DeleteAddress(this);
}

/*** IUnknown methods ***/
Expand Down
4 changes: 2 additions & 2 deletions d3d9/IDirect3DCubeTexture9.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ HRESULT m_IDirect3DCubeTexture9::QueryInterface(THIS_ REFIID riid, void** ppvObj

if (SUCCEEDED(hr))
{
D3d9Wrapper::genericQueryInterface(riid, ppvObj, m_pDeviceEx, ProxyAddressLookupTable);
D3d9Wrapper::genericQueryInterface(riid, ppvObj, m_pDeviceEx);
}

return hr;
Expand Down Expand Up @@ -175,7 +175,7 @@ HRESULT m_IDirect3DCubeTexture9::GetCubeMapSurface(THIS_ D3DCUBEMAP_FACES FaceTy

if (SUCCEEDED(hr) && ppCubeMapSurface)
{
*ppCubeMapSurface = ProxyAddressLookupTable->FindAddress<m_IDirect3DSurface9, m_IDirect3DDevice9Ex>(*ppCubeMapSurface, m_pDeviceEx, IID_IDirect3DTexture9);
*ppCubeMapSurface = ProxyAddressLookupTable9.FindAddress<m_IDirect3DSurface9, m_IDirect3DDevice9Ex>(*ppCubeMapSurface, m_pDeviceEx, IID_IDirect3DTexture9);
}

return hr;
Expand Down
7 changes: 2 additions & 5 deletions d3d9/IDirect3DCubeTexture9.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,12 @@ class m_IDirect3DCubeTexture9 : public IDirect3DCubeTexture9, public AddressLook
LPDIRECT3DCUBETEXTURE9 ProxyInterface;
m_IDirect3DDevice9Ex* m_pDeviceEx;

AddressLookupTableD3d9<m_IDirect3DDevice9Ex>* ProxyAddressLookupTable;

public:
m_IDirect3DCubeTexture9(LPDIRECT3DCUBETEXTURE9 pTexture9, m_IDirect3DDevice9Ex* pDevice) :
ProxyInterface(pTexture9), m_pDeviceEx(pDevice), ProxyAddressLookupTable(pDevice->ProxyAddressLookupTable)
m_IDirect3DCubeTexture9(LPDIRECT3DCUBETEXTURE9 pTexture9, m_IDirect3DDevice9Ex* pDevice) : ProxyInterface(pTexture9), m_pDeviceEx(pDevice)
{
LOG_LIMIT(3, "Creating interface " << __FUNCTION__ << " (" << this << ")");

ProxyAddressLookupTable->SaveAddress(this, ProxyInterface);
ProxyAddressLookupTable9.SaveAddress(this, ProxyInterface);
}
~m_IDirect3DCubeTexture9()
{
Expand Down
32 changes: 15 additions & 17 deletions d3d9/IDirect3DDevice9Ex.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,12 @@ HRESULT m_IDirect3DDevice9Ex::QueryInterface(REFIID riid, void** ppvObj)
{
if (riid == IID_IDirect3DDevice9 || riid == IID_IDirect3DDevice9Ex)
{
*ppvObj = ProxyAddressLookupTable->FindAddress<m_IDirect3DDevice9Ex>(*ppvObj, m_pD3DEx, riid);

((m_IDirect3DDevice9Ex*)(*ppvObj))->SetProxyLookupTable(ProxyAddressLookupTable);
*ppvObj = ProxyAddressLookupTable9.FindAddress<m_IDirect3DDevice9Ex>(*ppvObj, m_pD3DEx, riid);
((m_IDirect3DDevice9Ex*)(*ppvObj))->SetDeviceDetails(DeviceDetails);
}
else
{
D3d9Wrapper::genericQueryInterface(riid, ppvObj, this, ProxyAddressLookupTable);
D3d9Wrapper::genericQueryInterface(riid, ppvObj, this);
}
}

Expand Down Expand Up @@ -508,7 +506,7 @@ HRESULT m_IDirect3DDevice9Ex::EndStateBlock(THIS_ IDirect3DStateBlock9** ppSB)

if (SUCCEEDED(hr) && ppSB)
{
*ppSB = ProxyAddressLookupTable->FindAddress<m_IDirect3DStateBlock9, m_IDirect3DDevice9Ex>(*ppSB, this, IID_IDirect3DStateBlock9);
*ppSB = ProxyAddressLookupTable9.FindAddress<m_IDirect3DStateBlock9, m_IDirect3DDevice9Ex>(*ppSB, this, IID_IDirect3DStateBlock9);
}

return hr;
Expand Down Expand Up @@ -543,7 +541,7 @@ HRESULT m_IDirect3DDevice9Ex::GetRenderTarget(THIS_ DWORD RenderTargetIndex, IDi

if (SUCCEEDED(hr) && ppRenderTarget)
{
*ppRenderTarget = ProxyAddressLookupTable->FindAddress<m_IDirect3DSurface9, m_IDirect3DDevice9Ex>(*ppRenderTarget, this, IID_IDirect3DSurface9);
*ppRenderTarget = ProxyAddressLookupTable9.FindAddress<m_IDirect3DSurface9, m_IDirect3DDevice9Ex>(*ppRenderTarget, this, IID_IDirect3DSurface9);
}

return hr;
Expand Down Expand Up @@ -646,7 +644,7 @@ HRESULT m_IDirect3DDevice9Ex::GetIndices(THIS_ IDirect3DIndexBuffer9** ppIndexDa

if (SUCCEEDED(hr) && ppIndexData)
{
*ppIndexData = ProxyAddressLookupTable->FindAddress<m_IDirect3DIndexBuffer9, m_IDirect3DDevice9Ex>(*ppIndexData, this, IID_IDirect3DIndexBuffer9);
*ppIndexData = ProxyAddressLookupTable9.FindAddress<m_IDirect3DIndexBuffer9, m_IDirect3DDevice9Ex>(*ppIndexData, this, IID_IDirect3DIndexBuffer9);
}

return hr;
Expand Down Expand Up @@ -839,7 +837,7 @@ HRESULT m_IDirect3DDevice9Ex::GetPixelShader(THIS_ IDirect3DPixelShader9** ppSha

if (SUCCEEDED(hr) && ppShader)
{
*ppShader = ProxyAddressLookupTable->FindAddress<m_IDirect3DPixelShader9, m_IDirect3DDevice9Ex>(*ppShader, this, IID_IDirect3DPixelShader9);
*ppShader = ProxyAddressLookupTable9.FindAddress<m_IDirect3DPixelShader9, m_IDirect3DDevice9Ex>(*ppShader, this, IID_IDirect3DPixelShader9);
}

return hr;
Expand Down Expand Up @@ -995,7 +993,7 @@ HRESULT m_IDirect3DDevice9Ex::GetStreamSource(THIS_ UINT StreamNumber, IDirect3D

if (SUCCEEDED(hr) && ppStreamData)
{
*ppStreamData = ProxyAddressLookupTable->FindAddress<m_IDirect3DVertexBuffer9, m_IDirect3DDevice9Ex>(*ppStreamData, this, IID_IDirect3DVertexBuffer9);
*ppStreamData = ProxyAddressLookupTable9.FindAddress<m_IDirect3DVertexBuffer9, m_IDirect3DDevice9Ex>(*ppStreamData, this, IID_IDirect3DVertexBuffer9);
}

return hr;
Expand All @@ -1021,7 +1019,7 @@ HRESULT m_IDirect3DDevice9Ex::GetBackBuffer(THIS_ UINT iSwapChain, UINT iBackBuf

if (SUCCEEDED(hr) && ppBackBuffer)
{
*ppBackBuffer = ProxyAddressLookupTable->FindAddress<m_IDirect3DSurface9, m_IDirect3DDevice9Ex>(*ppBackBuffer, this, IID_IDirect3DSurface9);
*ppBackBuffer = ProxyAddressLookupTable9.FindAddress<m_IDirect3DSurface9, m_IDirect3DDevice9Ex>(*ppBackBuffer, this, IID_IDirect3DSurface9);
}

return hr;
Expand All @@ -1035,7 +1033,7 @@ HRESULT m_IDirect3DDevice9Ex::GetDepthStencilSurface(IDirect3DSurface9 **ppZSten

if (SUCCEEDED(hr) && ppZStencilSurface)
{
*ppZStencilSurface = ProxyAddressLookupTable->FindAddress<m_IDirect3DSurface9, m_IDirect3DDevice9Ex>(*ppZStencilSurface, this, IID_IDirect3DSurface9);
*ppZStencilSurface = ProxyAddressLookupTable9.FindAddress<m_IDirect3DSurface9, m_IDirect3DDevice9Ex>(*ppZStencilSurface, this, IID_IDirect3DSurface9);
}

return hr;
Expand All @@ -1052,13 +1050,13 @@ HRESULT m_IDirect3DDevice9Ex::GetTexture(DWORD Stage, IDirect3DBaseTexture9 **pp
switch ((*ppTexture)->GetType())
{
case D3DRTYPE_TEXTURE:
*ppTexture = ProxyAddressLookupTable->FindAddress<m_IDirect3DTexture9, m_IDirect3DDevice9Ex>(*ppTexture, this, IID_IDirect3DTexture9);
*ppTexture = ProxyAddressLookupTable9.FindAddress<m_IDirect3DTexture9, m_IDirect3DDevice9Ex>(*ppTexture, this, IID_IDirect3DTexture9);
break;
case D3DRTYPE_VOLUMETEXTURE:
*ppTexture = ProxyAddressLookupTable->FindAddress<m_IDirect3DVolumeTexture9, m_IDirect3DDevice9Ex>(*ppTexture, this, IID_IDirect3DVolumeTexture9);
*ppTexture = ProxyAddressLookupTable9.FindAddress<m_IDirect3DVolumeTexture9, m_IDirect3DDevice9Ex>(*ppTexture, this, IID_IDirect3DVolumeTexture9);
break;
case D3DRTYPE_CUBETEXTURE:
*ppTexture = ProxyAddressLookupTable->FindAddress<m_IDirect3DCubeTexture9, m_IDirect3DDevice9Ex>(*ppTexture, this, IID_IDirect3DCubeTexture9);
*ppTexture = ProxyAddressLookupTable9.FindAddress<m_IDirect3DCubeTexture9, m_IDirect3DDevice9Ex>(*ppTexture, this, IID_IDirect3DCubeTexture9);
break;
default:
return D3DERR_INVALIDCALL;
Expand Down Expand Up @@ -1282,7 +1280,7 @@ HRESULT m_IDirect3DDevice9Ex::GetVertexShader(THIS_ IDirect3DVertexShader9** ppS

if (SUCCEEDED(hr) && ppShader)
{
*ppShader = ProxyAddressLookupTable->FindAddress<m_IDirect3DVertexShader9, m_IDirect3DDevice9Ex>(*ppShader, this, IID_IDirect3DVertexShader9);
*ppShader = ProxyAddressLookupTable9.FindAddress<m_IDirect3DVertexShader9, m_IDirect3DDevice9Ex>(*ppShader, this, IID_IDirect3DVertexShader9);
}

return hr;
Expand Down Expand Up @@ -1474,7 +1472,7 @@ HRESULT m_IDirect3DDevice9Ex::GetVertexDeclaration(THIS_ IDirect3DVertexDeclarat

if (SUCCEEDED(hr) && ppDecl)
{
*ppDecl = ProxyAddressLookupTable->FindAddress<m_IDirect3DVertexDeclaration9, m_IDirect3DDevice9Ex>(*ppDecl, this, IID_IDirect3DVertexDeclaration9);
*ppDecl = ProxyAddressLookupTable9.FindAddress<m_IDirect3DVertexDeclaration9, m_IDirect3DDevice9Ex>(*ppDecl, this, IID_IDirect3DVertexDeclaration9);
}

return hr;
Expand Down Expand Up @@ -2055,7 +2053,7 @@ HRESULT m_IDirect3DDevice9Ex::GetSwapChain(THIS_ UINT iSwapChain, IDirect3DSwapC

if (SUCCEEDED(hr))
{
*ppSwapChain = ProxyAddressLookupTable->FindAddress<m_IDirect3DSwapChain9Ex, m_IDirect3DDevice9Ex>(*ppSwapChain, this, IID_IDirect3DSwapChain9);
*ppSwapChain = ProxyAddressLookupTable9.FindAddress<m_IDirect3DSwapChain9Ex, m_IDirect3DDevice9Ex>(*ppSwapChain, this, IID_IDirect3DSwapChain9);
}

return hr;
Expand Down
19 changes: 5 additions & 14 deletions d3d9/IDirect3DDevice9Ex.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ class m_IDirect3DDevice9Ex : public IDirect3DDevice9Ex, public AddressLookupTabl
ProxyInterfaceEx = pDevice;
}

ProxyAddressLookupTable9.SaveAddress(this, ProxyInterface);

ReInitDevice();
}
~m_IDirect3DDevice9Ex()
Expand All @@ -72,20 +74,11 @@ class m_IDirect3DDevice9Ex : public IDirect3DDevice9Ex, public AddressLookupTabl
WndProc::RemoveWndProc(DeviceDetails.DeviceWindow);
}

ProxyAddressLookupTable->DeleteAddress(this);
ProxyAddressLookupTable9.DeleteAddress(this);

if (ProxyAddressLookupTable->GetDeviceCount() == 0)
if (ProxyAddressLookupTable9.GetDeviceCount() == 0)
{
m_pD3DEx->ClearAddressTable(ProxyAddressLookupTable);
}
}
void SetProxyLookupTable(AddressLookupTableD3d9<m_IDirect3DDevice9Ex>* LookupTable)
{
if (!ProxyAddressLookupTable)
{
ProxyAddressLookupTable = LookupTable;

ProxyAddressLookupTable->SaveAddress(this, ProxyInterface);
ProxyAddressLookupTable9.ClearInterfaces();
}
}
void SetDeviceDetails(DEVICEDETAILS& NewDeviceDetails)
Expand All @@ -107,8 +100,6 @@ class m_IDirect3DDevice9Ex : public IDirect3DDevice9Ex, public AddressLookupTabl
}
}

AddressLookupTableD3d9<m_IDirect3DDevice9Ex>* ProxyAddressLookupTable = nullptr;

/*** IUnknown methods ***/
STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj);
STDMETHOD_(ULONG, AddRef)(THIS);
Expand Down
2 changes: 1 addition & 1 deletion d3d9/IDirect3DIndexBuffer9.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ HRESULT m_IDirect3DIndexBuffer9::QueryInterface(THIS_ REFIID riid, void** ppvObj

if (SUCCEEDED(hr))
{
D3d9Wrapper::genericQueryInterface(riid, ppvObj, m_pDeviceEx, ProxyAddressLookupTable);
D3d9Wrapper::genericQueryInterface(riid, ppvObj, m_pDeviceEx);
}

return hr;
Expand Down
7 changes: 2 additions & 5 deletions d3d9/IDirect3DIndexBuffer9.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,12 @@ class m_IDirect3DIndexBuffer9 : public IDirect3DIndexBuffer9, public AddressLook
LPDIRECT3DINDEXBUFFER9 ProxyInterface;
m_IDirect3DDevice9Ex* m_pDeviceEx;

AddressLookupTableD3d9<m_IDirect3DDevice9Ex>* ProxyAddressLookupTable;

public:
m_IDirect3DIndexBuffer9(LPDIRECT3DINDEXBUFFER9 pBuffer9, m_IDirect3DDevice9Ex* pDevice) :
ProxyInterface(pBuffer9), m_pDeviceEx(pDevice), ProxyAddressLookupTable(pDevice->ProxyAddressLookupTable)
m_IDirect3DIndexBuffer9(LPDIRECT3DINDEXBUFFER9 pBuffer9, m_IDirect3DDevice9Ex* pDevice) : ProxyInterface(pBuffer9), m_pDeviceEx(pDevice)
{
LOG_LIMIT(3, "Creating interface " << __FUNCTION__ << " (" << this << ")");

ProxyAddressLookupTable->SaveAddress(this, ProxyInterface);
ProxyAddressLookupTable9.SaveAddress(this, ProxyInterface);
}
~m_IDirect3DIndexBuffer9()
{
Expand Down
2 changes: 1 addition & 1 deletion d3d9/IDirect3DPixelShader9.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ HRESULT m_IDirect3DPixelShader9::QueryInterface(THIS_ REFIID riid, void** ppvObj

if (SUCCEEDED(hr))
{
D3d9Wrapper::genericQueryInterface(riid, ppvObj, m_pDeviceEx, ProxyAddressLookupTable);
D3d9Wrapper::genericQueryInterface(riid, ppvObj, m_pDeviceEx);
}

return hr;
Expand Down
Loading

0 comments on commit 47be4eb

Please sign in to comment.