1
0
mirror of https://github.com/narzoul/DDrawCompat synced 2024-12-30 08:55:36 +01:00

Moved Direct3D DDI parts to D3dDdi namespace and subdirectory

This commit is contained in:
narzoul 2016-08-29 21:09:42 +02:00
parent 1a9b4ce860
commit 3243a17daf
19 changed files with 150 additions and 119 deletions

View File

@ -1,5 +0,0 @@
#include "CompatD3dDdiAdapterCallbacks.h"
void CompatD3dDdiAdapterCallbacks::setCompatVtable(D3DDDI_ADAPTERCALLBACKS& /*vtable*/)
{
}

View File

@ -1,11 +0,0 @@
#pragma once
#include "CompatVtable.h"
#include "D3dDdiAdapterCallbacksVisitor.h"
class CompatD3dDdiAdapterCallbacks :
public CompatVtable<CompatD3dDdiAdapterCallbacks, D3dDdiAdapterCallbacksIntf>
{
public:
static void setCompatVtable(D3DDDI_ADAPTERCALLBACKS& vtable);
};

View File

@ -1,22 +0,0 @@
#include "CompatD3dDdiAdapterFuncs.h"
#include "CompatD3dDdiDeviceCallbacks.h"
#include "CompatD3dDdiDeviceFuncs.h"
namespace
{
HRESULT APIENTRY createDevice(HANDLE hAdapter, D3DDDIARG_CREATEDEVICE* pCreateData)
{
CompatD3dDdiDeviceCallbacks::hookVtable(pCreateData->pCallbacks);
HRESULT result = CompatD3dDdiAdapterFuncs::s_origVtable.pfnCreateDevice(hAdapter, pCreateData);
if (SUCCEEDED(result))
{
CompatD3dDdiDeviceFuncs::hookVtable(pCreateData->pDeviceFuncs);
}
return result;
}
}
void CompatD3dDdiAdapterFuncs::setCompatVtable(D3DDDI_ADAPTERFUNCS& vtable)
{
vtable.pfnCreateDevice = &createDevice;
}

View File

@ -1,10 +0,0 @@
#pragma once
#include "CompatVtable.h"
#include "D3dDdiAdapterFuncsVisitor.h"
class CompatD3dDdiAdapterFuncs : public CompatVtable<CompatD3dDdiAdapterFuncs, D3dDdiAdapterFuncsIntf>
{
public:
static void setCompatVtable(D3DDDI_ADAPTERFUNCS& vtable);
};

View File

@ -0,0 +1,8 @@
#include "D3dDdi/AdapterCallbacks.h"
namespace D3dDdi
{
void AdapterCallbacks::setCompatVtable(D3DDDI_ADAPTERCALLBACKS& /*vtable*/)
{
}
}

View File

@ -0,0 +1,14 @@
#pragma once
#include "CompatVtable.h"
#include "D3dDdiAdapterCallbacksVisitor.h"
namespace D3dDdi
{
class AdapterCallbacks :
public CompatVtable<AdapterCallbacks, D3dDdiAdapterCallbacksIntf>
{
public:
static void setCompatVtable(D3DDDI_ADAPTERCALLBACKS& vtable);
};
}

View File

@ -0,0 +1,26 @@
#include "D3dDdi/AdapterFuncs.h"
#include "D3dDdi/DeviceCallbacks.h"
#include "D3dDdi/DeviceFuncs.h"
namespace
{
HRESULT APIENTRY createDevice(HANDLE hAdapter, D3DDDIARG_CREATEDEVICE* pCreateData)
{
D3dDdi::DeviceCallbacks::hookVtable(pCreateData->pCallbacks);
HRESULT result = D3dDdi::AdapterFuncs::s_origVtable.pfnCreateDevice(
hAdapter, pCreateData);
if (SUCCEEDED(result))
{
D3dDdi::DeviceFuncs::hookVtable(pCreateData->pDeviceFuncs);
}
return result;
}
}
namespace D3dDdi
{
void AdapterFuncs::setCompatVtable(D3DDDI_ADAPTERFUNCS& vtable)
{
vtable.pfnCreateDevice = &createDevice;
}
}

View File

@ -0,0 +1,13 @@
#pragma once
#include "CompatVtable.h"
#include "D3dDdiAdapterFuncsVisitor.h"
namespace D3dDdi
{
class AdapterFuncs : public CompatVtable<AdapterFuncs, D3dDdiAdapterFuncsIntf>
{
public:
static void setCompatVtable(D3DDDI_ADAPTERFUNCS& vtable);
};
}

View File

@ -3,7 +3,7 @@
#include <Windows.h>
#include <../km/d3dkmthk.h>
#include "CompatD3dDdiDeviceCallbacks.h"
#include "D3dDdi/DeviceCallbacks.h"
#include "DDrawLog.h"
#include "Hook.h"
@ -95,6 +95,9 @@ std::ostream& operator<<(std::ostream& os, const D3DDDICB_UNLOCK2& data)
<< Compat::hex(data.hAllocation);
}
void CompatD3dDdiDeviceCallbacks::setCompatVtable(D3DDDI_DEVICECALLBACKS& /*vtable*/)
namespace D3dDdi
{
void DeviceCallbacks::setCompatVtable(D3DDDI_DEVICECALLBACKS& /*vtable*/)
{
}
}

View File

@ -12,8 +12,11 @@ std::ostream& operator<<(std::ostream& os, const D3DDDICB_LOCK2& data);
std::ostream& operator<<(std::ostream& os, const D3DDDICB_UNLOCK& data);
std::ostream& operator<<(std::ostream& os, const D3DDDICB_UNLOCK2& data);
class CompatD3dDdiDeviceCallbacks : public CompatVtable<CompatD3dDdiDeviceCallbacks, D3dDdiDeviceCallbacksIntf>
namespace D3dDdi
{
public:
static void setCompatVtable(D3DDDI_DEVICECALLBACKS& vtable);
};
class DeviceCallbacks : public CompatVtable<DeviceCallbacks, D3dDdiDeviceCallbacksIntf>
{
public:
static void setCompatVtable(D3DDDI_DEVICECALLBACKS& vtable);
};
}

View File

@ -1,4 +1,4 @@
#include "CompatD3dDdiDeviceFuncs.h"
#include "D3dDdi/DeviceFuncs.h"
std::ostream& operator<<(std::ostream& os, const D3DDDI_RATIONAL& val)
{
@ -99,6 +99,9 @@ std::ostream& operator<<(std::ostream& os, const D3DDDIBOX& box)
<< box.Back;
}
void CompatD3dDdiDeviceFuncs::setCompatVtable(D3DDDI_DEVICEFUNCS& /*vtable*/)
namespace D3dDdi
{
void DeviceFuncs::setCompatVtable(D3DDDI_DEVICEFUNCS& /*vtable*/)
{
}
}

View File

@ -12,8 +12,11 @@ std::ostream& operator<<(std::ostream& os, const D3DDDIARG_OPENRESOURCE& val);
std::ostream& operator<<(std::ostream& os, const D3DDDIARG_UNLOCK& val);
std::ostream& operator<<(std::ostream& os, const D3DDDIBOX& val);
class CompatD3dDdiDeviceFuncs : public CompatVtable<CompatD3dDdiDeviceFuncs, D3dDdiDeviceFuncsIntf>
namespace D3dDdi
{
public:
static void setCompatVtable(D3DDDI_DEVICEFUNCS& vtable);
};
class DeviceFuncs : public CompatVtable<DeviceFuncs, D3dDdiDeviceFuncsIntf>
{
public:
static void setCompatVtable(D3DDDI_DEVICEFUNCS& vtable);
};
}

View File

@ -5,8 +5,8 @@
#include <d3dumddi.h>
#include <..\km\d3dkmthk.h>
#include "CompatD3dDdiAdapterCallbacks.h"
#include "CompatD3dDdiAdapterFuncs.h"
#include "D3dDdi/AdapterCallbacks.h"
#include "D3dDdi/AdapterFuncs.h"
#include "DDrawLog.h"
#include "Hook.h"
@ -114,12 +114,12 @@ namespace
HRESULT APIENTRY openAdapter(D3DDDIARG_OPENADAPTER* pOpenData)
{
Compat::LogEnter("openAdapter", pOpenData);
CompatD3dDdiAdapterCallbacks::hookVtable(pOpenData->pAdapterCallbacks);
D3dDdi::AdapterCallbacks::hookVtable(pOpenData->pAdapterCallbacks);
HRESULT result = CALL_ORIG_FUNC(OpenAdapter)(pOpenData);
if (SUCCEEDED(result))
{
g_ddiVersion = min(pOpenData->Version, pOpenData->DriverVersion);
CompatD3dDdiAdapterFuncs::hookVtable(pOpenData->pAdapterFuncs);
D3dDdi::AdapterFuncs::hookVtable(pOpenData->pAdapterFuncs);
}
Compat::LogLeave("openAdapter", pOpenData) << result;
return result;
@ -139,7 +139,7 @@ namespace
}
}
namespace D3dDdiHooks
namespace D3dDdi
{
UINT getDdiVersion()
{
@ -154,7 +154,7 @@ namespace D3dDdiHooks
{
Compat::Log() << "Failed to load the primary display driver library";
}
char umdFileName[MAX_PATH] = {};
wcstombs_s(nullptr, umdFileName, primaryUmd.UmdFileName, _TRUNCATE);
Compat::hookFunction<decltype(&OpenAdapter), &OpenAdapter>(

View File

@ -1,6 +1,6 @@
#pragma once
namespace D3dDdiHooks
namespace D3dDdi
{
UINT getDdiVersion();
void installHooks();

View File

@ -5,7 +5,7 @@
#include <d3d.h>
#include <d3dumddi.h>
#include "D3dDdiHooks.h"
#include "D3dDdi/Hooks.h"
#include "DDrawVtableVisitor.h"
struct D3dDdiDeviceCallbacksIntf
@ -42,7 +42,7 @@ struct DDrawVtableForEach<D3DDDI_DEVICECALLBACKS>
// DD_VISIT(pfnSetAsyncCallbacksCb); -- not set by ddraw
DD_VISIT(pfnSetDisplayPrivateDriverFormatCb);
if (D3dDdiHooks::getDdiVersion() >= D3D_UMD_INTERFACE_VERSION_WIN8)
if (D3dDdi::getDdiVersion() >= D3D_UMD_INTERFACE_VERSION_WIN8)
{
DD_VISIT(pfnOfferAllocationsCb);
DD_VISIT(pfnReclaimAllocationsCb);
@ -52,12 +52,12 @@ struct DDrawVtableForEach<D3DDDI_DEVICECALLBACKS>
// DD_VISIT(pfnPresentMultiPlaneOverlayCb); -- not set by ddraw
}
if (D3dDdiHooks::getDdiVersion() >= D3D_UMD_INTERFACE_VERSION_WDDM1_3)
if (D3dDdi::getDdiVersion() >= D3D_UMD_INTERFACE_VERSION_WDDM1_3)
{
// DD_VISIT(pfnLogUMDMarkerCb); -- not set by ddraw
}
if (D3dDdiHooks::getDdiVersion() >= D3D_UMD_INTERFACE_VERSION_WDDM2_0)
if (D3dDdi::getDdiVersion() >= D3D_UMD_INTERFACE_VERSION_WDDM2_0)
{
DD_VISIT(pfnMakeResidentCb);
DD_VISIT(pfnEvictCb);

View File

@ -5,7 +5,7 @@
#include <d3d.h>
#include <d3dumddi.h>
#include "D3dDdiHooks.h"
#include "D3dDdi/Hooks.h"
#include "DDrawVtableVisitor.h"
struct D3dDdiDeviceFuncsIntf
@ -119,7 +119,7 @@ struct DDrawVtableForEach<D3DDDI_DEVICEFUNCS>
DD_VISIT(pfnUnlockAsync);
DD_VISIT(pfnRename);
if (D3dDdiHooks::getDdiVersion() >= D3D_UMD_INTERFACE_VERSION_WIN7)
if (D3dDdi::getDdiVersion() >= D3D_UMD_INTERFACE_VERSION_WIN7)
{
DD_VISIT(pfnCreateVideoProcessor);
DD_VISIT(pfnSetVideoProcessBltState);
@ -145,7 +145,7 @@ struct DDrawVtableForEach<D3DDDI_DEVICEFUNCS>
DD_VISIT(pfnResolveSharedResource);
}
if (D3dDdiHooks::getDdiVersion() >= D3D_UMD_INTERFACE_VERSION_WIN8)
if (D3dDdi::getDdiVersion() >= D3D_UMD_INTERFACE_VERSION_WIN8)
{
DD_VISIT(pfnVolBlt1);
DD_VISIT(pfnBufBlt1);
@ -159,7 +159,7 @@ struct DDrawVtableForEach<D3DDDI_DEVICEFUNCS>
DD_VISIT(pfnPresentMultiPlaneOverlay);
}
if (D3dDdiHooks::getDdiVersion() >= D3D_UMD_INTERFACE_VERSION_WDDM1_3)
if (D3dDdi::getDdiVersion() >= D3D_UMD_INTERFACE_VERSION_WDDM1_3)
{
// DD_VISIT(pfnReserved1); -- unused
DD_VISIT(pfnFlush1);
@ -173,7 +173,7 @@ struct DDrawVtableForEach<D3DDDI_DEVICEFUNCS>
DD_VISIT(pfnSetMarkerMode);
}
if (D3dDdiHooks::getDdiVersion() >= D3D_UMD_INTERFACE_VERSION_WDDM2_0)
if (D3dDdi::getDdiVersion() >= D3D_UMD_INTERFACE_VERSION_WDDM2_0)
{
DD_VISIT(pfnTrimResidencySet);
}

View File

@ -149,10 +149,6 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="CompatD3dDdiAdapterCallbacks.h" />
<ClInclude Include="CompatD3dDdiAdapterFuncs.h" />
<ClInclude Include="CompatD3dDdiDeviceCallbacks.h" />
<ClInclude Include="CompatD3dDdiDeviceFuncs.h" />
<ClInclude Include="CompatFontSmoothing.h" />
<ClInclude Include="CompatHooks.h" />
<ClInclude Include="CompatPtr.h" />
@ -166,7 +162,11 @@
<ClInclude Include="D3dDdiAdapterFuncsVisitor.h" />
<ClInclude Include="D3dDdiDeviceCallbacksVisitor.h" />
<ClInclude Include="D3dDdiDeviceFuncsVisitor.h" />
<ClInclude Include="D3dDdiHooks.h" />
<ClInclude Include="D3dDdi\AdapterCallbacks.h" />
<ClInclude Include="D3dDdi\AdapterFuncs.h" />
<ClInclude Include="D3dDdi\DeviceCallbacks.h" />
<ClInclude Include="D3dDdi\DeviceFuncs.h" />
<ClInclude Include="D3dDdi\Hooks.h" />
<ClInclude Include="DDrawProcs.h" />
<ClInclude Include="DDrawVtableVisitor.h" />
<ClInclude Include="DDraw\ActivateAppHandler.h" />
@ -208,14 +208,14 @@
<ClInclude Include="Time.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="CompatD3dDdiAdapterCallbacks.cpp" />
<ClCompile Include="CompatD3dDdiAdapterFuncs.cpp" />
<ClCompile Include="CompatD3dDdiDeviceCallbacks.cpp" />
<ClCompile Include="CompatD3dDdiDeviceFuncs.cpp" />
<ClCompile Include="CompatFontSmoothing.cpp" />
<ClCompile Include="CompatHooks.cpp" />
<ClCompile Include="CompatRegistry.cpp" />
<ClCompile Include="D3dDdiHooks.cpp" />
<ClCompile Include="D3dDdi\AdapterCallbacks.cpp" />
<ClCompile Include="D3dDdi\AdapterFuncs.cpp" />
<ClCompile Include="D3dDdi\DeviceCallbacks.cpp" />
<ClCompile Include="D3dDdi\DeviceFuncs.cpp" />
<ClCompile Include="D3dDdi\Hooks.cpp" />
<ClCompile Include="DDrawLog.cpp" />
<ClCompile Include="DDraw\ActivateAppHandler.cpp" />
<ClCompile Include="DDraw\DirectDraw.cpp" />

View File

@ -31,6 +31,12 @@
<Filter Include="Source Files\Direct3d">
<UniqueIdentifier>{08a23b36-cd96-4214-985b-0473ecf6ecab}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\D3dDdi">
<UniqueIdentifier>{10719dd2-f68b-4f6c-82b1-3e3bd8def099}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\D3dDdi">
<UniqueIdentifier>{9c81f8c4-c564-49f2-b66f-c051d332d6a0}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="DDrawProcs.h">
@ -102,21 +108,6 @@
<ClInclude Include="D3dDdiDeviceFuncsVisitor.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="CompatD3dDdiDeviceFuncs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="CompatD3dDdiDeviceCallbacks.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="CompatD3dDdiAdapterFuncs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="CompatD3dDdiAdapterCallbacks.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="D3dDdiHooks.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Gdi\Gdi.h">
<Filter>Header Files\Gdi</Filter>
</ClInclude>
@ -204,6 +195,21 @@
<ClInclude Include="Direct3d\Hooks.h">
<Filter>Header Files\Direct3d</Filter>
</ClInclude>
<ClInclude Include="D3dDdi\AdapterCallbacks.h">
<Filter>Header Files\D3dDdi</Filter>
</ClInclude>
<ClInclude Include="D3dDdi\AdapterFuncs.h">
<Filter>Header Files\D3dDdi</Filter>
</ClInclude>
<ClInclude Include="D3dDdi\DeviceCallbacks.h">
<Filter>Header Files\D3dDdi</Filter>
</ClInclude>
<ClInclude Include="D3dDdi\DeviceFuncs.h">
<Filter>Header Files\D3dDdi</Filter>
</ClInclude>
<ClInclude Include="D3dDdi\Hooks.h">
<Filter>Header Files\D3dDdi</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="DllMain.cpp">
@ -233,21 +239,6 @@
<ClCompile Include="CompatHooks.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="CompatD3dDdiDeviceFuncs.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="CompatD3dDdiDeviceCallbacks.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="CompatD3dDdiAdapterFuncs.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="CompatD3dDdiAdapterCallbacks.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="D3dDdiHooks.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Gdi\Gdi.cpp">
<Filter>Source Files\Gdi</Filter>
</ClCompile>
@ -323,6 +314,21 @@
<ClCompile Include="Direct3d\Hooks.cpp">
<Filter>Source Files\Direct3d</Filter>
</ClCompile>
<ClCompile Include="D3dDdi\AdapterCallbacks.cpp">
<Filter>Source Files\D3dDdi</Filter>
</ClCompile>
<ClCompile Include="D3dDdi\AdapterFuncs.cpp">
<Filter>Source Files\D3dDdi</Filter>
</ClCompile>
<ClCompile Include="D3dDdi\DeviceCallbacks.cpp">
<Filter>Source Files\D3dDdi</Filter>
</ClCompile>
<ClCompile Include="D3dDdi\DeviceFuncs.cpp">
<Filter>Source Files\D3dDdi</Filter>
</ClCompile>
<ClCompile Include="D3dDdi\Hooks.cpp">
<Filter>Source Files\D3dDdi</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="DDrawCompat.def">

View File

@ -8,7 +8,7 @@
#include "CompatFontSmoothing.h"
#include "CompatHooks.h"
#include "CompatRegistry.h"
#include "D3dDdiHooks.h"
#include "D3dDdi/Hooks.h"
#include "DDraw/DisplayMode.h"
#include "DDraw/Hooks.h"
#include "DDrawProcs.h"
@ -29,7 +29,7 @@ namespace
if (!isAlreadyInstalled)
{
Compat::Log() << "Installing Direct3D driver hooks";
D3dDdiHooks::installHooks();
D3dDdi::installHooks();
Compat::Log() << "Installing DirectDraw hooks";
DDraw::installHooks();
Compat::Log() << "Installing Direct3D hooks";
@ -139,7 +139,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID /*lpvReserved*/)
{
Compat::Log() << "Detaching DDrawCompat";
DDraw::uninstallHooks();
D3dDdiHooks::uninstallHooks();
D3dDdi::uninstallHooks();
Gdi::uninstallHooks();
Compat::unhookAllFunctions();
FreeLibrary(g_origDInputModule);