mirror of
https://github.com/dege-diosg/dgVoodoo2
synced 2024-07-08 20:51:02 +02:00
Update to v2.8 (including D3D12 addon sample code)
This commit is contained in:
parent
ffda187459
commit
3706948311
Binary file not shown.
Binary file not shown.
BIN
dgVoodooAPI/Bin/x64/Release/dgVoodooAPI.dll
Normal file
BIN
dgVoodooAPI/Bin/x64/Release/dgVoodooAPI.dll
Normal file
Binary file not shown.
BIN
dgVoodooAPI/Bin/x64/Spec Release/dgVoodooAPI.dll
Normal file
BIN
dgVoodooAPI/Bin/x64/Spec Release/dgVoodooAPI.dll
Normal file
Binary file not shown.
BIN
dgVoodooAPI/Bin/x86/Release/dgVoodooAPI.dll
Normal file
BIN
dgVoodooAPI/Bin/x86/Release/dgVoodooAPI.dll
Normal file
Binary file not shown.
BIN
dgVoodooAPI/Bin/x86/Spec Release/dgVoodooAPI.dll
Normal file
BIN
dgVoodooAPI/Bin/x86/Spec Release/dgVoodooAPI.dll
Normal file
Binary file not shown.
Binary file not shown.
56
dgVoodooAPI/Inc/APIControl.hpp
Normal file
56
dgVoodooAPI/Inc/APIControl.hpp
Normal file
@ -0,0 +1,56 @@
|
||||
// *****************************************************************************
|
||||
// File: APIControl.hpp
|
||||
//
|
||||
// Description: Functions and structures for controlling dgVoodoo
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
#ifndef APICONTROL_HPP
|
||||
#define APICONTROL_HPP
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include "APITypes.h"
|
||||
|
||||
// --- Defines -----------------------------------------------------------------
|
||||
|
||||
#define IMPORT /*_declspec(dllimport)*/ _stdcall
|
||||
|
||||
// --- Predeclarations ---------------------------------------------------------
|
||||
|
||||
namespace dgVoodoo {
|
||||
|
||||
// --- APIControl --------------------------------------------------------------
|
||||
|
||||
// --- Objects
|
||||
|
||||
struct APIControl
|
||||
{
|
||||
struct Debug
|
||||
{
|
||||
bool enableGlideVisualDebug;
|
||||
bool enableDDrawVisualDebug;
|
||||
bool enableD3DVisualDebug;
|
||||
};
|
||||
|
||||
Debug debug;
|
||||
|
||||
void* internalHandle;
|
||||
};
|
||||
|
||||
// --- Functions
|
||||
|
||||
typedef APIControl* (IMPORT *DGAPIGetAPIControlPtrType) ();
|
||||
typedef bool (IMPORT *DGAPIReleaseAPIControlPtrType) (APIControl* pCtrl);
|
||||
|
||||
extern "C" {
|
||||
|
||||
APIControl* DGAPIGetAPIControlPtr ();
|
||||
bool DGAPIReleaseAPIControlPtr (APIControl* pCtrl);
|
||||
}
|
||||
|
||||
} // namespace dgVoodoo
|
||||
|
||||
#endif // !APICONTROL_HPP
|
55
dgVoodooAPI/Inc/Addon/AddonDefs.hpp
Normal file
55
dgVoodooAPI/Inc/Addon/AddonDefs.hpp
Normal file
@ -0,0 +1,55 @@
|
||||
// *****************************************************************************
|
||||
// File: AddonDefs.hpp
|
||||
//
|
||||
// Description: Main dgVoodoo addon header
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
#ifndef ADDONDEFS_HPP
|
||||
#define ADDONDEFS_HPP
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include <Windows.h>
|
||||
#include "APITypes.h"
|
||||
|
||||
// --- Defines -----------------------------------------------------------------
|
||||
|
||||
#define DEFINE_ADDON_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
|
||||
EXTERN_C const GUID FAR name
|
||||
|
||||
// --- Interface GUIDs
|
||||
|
||||
DEFINE_ADDON_GUID (IID_D3DObserver, 0x1ad8ea63, 0x72c4, 0x4219, 0xbf, 0xf3, 0x88, 0x87, 0x98, 0xc6, 0xb7, 0xc0);
|
||||
DEFINE_ADDON_GUID (IID_D3DDeviceObserver, 0x80b505f3, 0x9b00, 0x428e, 0x92, 0x7, 0xcb, 0x60, 0x9, 0x58, 0xec, 0xe1);
|
||||
DEFINE_ADDON_GUID (IID_D3DResourceObserver, 0xd5010988, 0x96b2, 0x4158, 0xa9, 0xd4, 0x9, 0x45, 0xaa, 0xaf, 0x24, 0xb3);
|
||||
|
||||
DEFINE_ADDON_GUID (IID_D3D12RootObserver, 0x68801515, 0xfec7, 0x43d2, 0xae, 0xc4, 0x21, 0xa8, 0xab, 0x9a, 0x6c, 0x62);
|
||||
|
||||
// --- Predeclarations ---------------------------------------------------------
|
||||
|
||||
// --- Addon interfaces
|
||||
|
||||
namespace dgVoodoo {
|
||||
|
||||
class IAddonMainCallback;
|
||||
|
||||
class ID3DObserver;
|
||||
class ID3DDeviceObserver;
|
||||
class ID3DResourceObserver;
|
||||
|
||||
class ID3D12RootObserver;
|
||||
|
||||
};
|
||||
|
||||
// --- TypeDefs ----------------------------------------------------------------
|
||||
|
||||
// --- Mandatory functions to be implemented in the addon
|
||||
|
||||
typedef bool API_EXPORT (*AddonInitType) (dgVoodoo::IAddonMainCallback* pAddonMain);
|
||||
typedef void API_EXPORT (*AddonExitType) ();
|
||||
|
||||
|
||||
#endif // ADDONDEFS_HPP
|
53
dgVoodooAPI/Inc/Addon/IAddonMainCallback.hpp
Normal file
53
dgVoodooAPI/Inc/Addon/IAddonMainCallback.hpp
Normal file
@ -0,0 +1,53 @@
|
||||
// *****************************************************************************
|
||||
// File: IAddonMain.hpp
|
||||
//
|
||||
// Description: Main callback interface for dgVoodoo add-ons
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
#ifndef IADDONMAIN_HPP
|
||||
#define IADDONMAIN_HPP
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include <Windows.h>
|
||||
#include "..\APIDebugObj.hpp"
|
||||
#include "..\IIniParser.hpp"
|
||||
|
||||
namespace dgVoodoo {
|
||||
|
||||
// --- IAddonMain --------------------------------------------------------------
|
||||
|
||||
class IAddonMainCallback
|
||||
{
|
||||
public:
|
||||
// --- Query
|
||||
|
||||
virtual UInt32 GetVersion () const = 0;
|
||||
|
||||
// --- Interface registering
|
||||
|
||||
virtual bool RegisterForCallback (REFIID iid, void* pCallbackObject) = 0;
|
||||
virtual void UnregisterForCallback (REFIID iid, void* pCallbackObject) = 0;
|
||||
|
||||
// --- Factoring
|
||||
|
||||
virtual IIniParser* CreateIniParser (const APIDebugObj* pDebugObj = NULL) = 0;
|
||||
|
||||
virtual UInt32 RSSizeOfResource (HMODULE hModule, LPCTSTR name, LPCTSTR type) = 0;
|
||||
virtual bool RSLoadResource (HMODULE hModule, LPCTSTR name, LPCTSTR type, BYTE* dst) = 0;
|
||||
virtual const BYTE* RSLoadResource (HMODULE hModule, LPCTSTR name, LPCTSTR type) = 0;
|
||||
|
||||
// --- Debug
|
||||
|
||||
virtual void IssueInfo (const APIDebugObj* pDebugObj, const char* pInfoMessage, ...) = 0;
|
||||
virtual void IssueWarning (const APIDebugObj* pDebugObj, const char* pWarningMessage, ...) = 0;
|
||||
virtual void IssueError (const APIDebugObj* pDebugObj, const char* pErrorMessage, ...) = 0;
|
||||
};
|
||||
|
||||
|
||||
} // namespace dgVoodoo
|
||||
|
||||
#endif // !IADDONMAIN_HPP
|
37
dgVoodooAPI/Inc/Addon/ID3D.hpp
Normal file
37
dgVoodooAPI/Inc/Addon/ID3D.hpp
Normal file
@ -0,0 +1,37 @@
|
||||
// *****************************************************************************
|
||||
// File: ID3D.hpp
|
||||
//
|
||||
// Description: Interface for D3D objects
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
#ifndef ID3D_HPP
|
||||
#define ID3D_HPP
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include "..\APITypes.h"
|
||||
|
||||
namespace dgVoodoo {
|
||||
|
||||
// --- ID3D --------------------------------------------------------------------
|
||||
|
||||
class ID3D
|
||||
{
|
||||
public:
|
||||
enum ObjectType
|
||||
{
|
||||
OT_D3D = 0,
|
||||
OT_D3D8,
|
||||
OT_D3D9
|
||||
};
|
||||
|
||||
virtual ObjectType GetObjectType () const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // namespace dgVoodoo
|
||||
|
||||
#endif // !ID3D_HPP
|
287
dgVoodooAPI/Inc/Addon/ID3D12Root.hpp
Normal file
287
dgVoodooAPI/Inc/Addon/ID3D12Root.hpp
Normal file
@ -0,0 +1,287 @@
|
||||
// *****************************************************************************
|
||||
// File: ID3D12Root.hpp
|
||||
//
|
||||
// Description: Interface for D3D12 Root
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
#ifndef ID3D12ROOT_HPP
|
||||
#define ID3D12ROOT_HPP
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include "..\APITypes.h"
|
||||
#include "D3D12.h"
|
||||
|
||||
//namespace dgVoodoo {
|
||||
|
||||
// --- Predeclarations ---------------------------------------------------------
|
||||
|
||||
class ID3D12ResourceDescAllocator;
|
||||
class ID3D12GraphicsCommandListAuto;
|
||||
class ID3D12ResourceDescRingBuffer;
|
||||
class ID3D12Buffer;
|
||||
class ID3D12HeapPageAllocator;
|
||||
class ID3D12Swapchain;
|
||||
|
||||
// --- ID3D12Root --------------------------------------------------------------
|
||||
|
||||
class ID3D12Root
|
||||
{
|
||||
public:
|
||||
|
||||
struct SwapchainData
|
||||
{
|
||||
SIZE imageSize;
|
||||
SIZE imagePresentationSize;
|
||||
DXGI_FORMAT format;
|
||||
SIZE maxOverriddenInputTextureSize;
|
||||
};
|
||||
|
||||
|
||||
struct GraphicsPLDesc
|
||||
{
|
||||
ID3D12RootSignature* pRootSignature;
|
||||
ID3DBlob* pVS;
|
||||
ID3DBlob* pPS;
|
||||
ID3DBlob* pDS;
|
||||
ID3DBlob* pHS;
|
||||
ID3DBlob* pGS;
|
||||
D3D12_STREAM_OUTPUT_DESC* pStreamOutput;
|
||||
D3D12_BLEND_DESC* pBlendState;
|
||||
UINT SampleMask;
|
||||
D3D12_RASTERIZER_DESC* pRasterizerState;
|
||||
D3D12_DEPTH_STENCIL_DESC* pDepthStencilState;
|
||||
D3D12_INPUT_LAYOUT_DESC* pInputLayout;
|
||||
D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
|
||||
D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
|
||||
UINT NumRenderTargets;
|
||||
DXGI_FORMAT RTVFormats[8];
|
||||
DXGI_FORMAT DSVFormat;
|
||||
DXGI_SAMPLE_DESC SampleDesc;
|
||||
UINT NodeMask;
|
||||
D3D12_PIPELINE_STATE_FLAGS Flags;
|
||||
};
|
||||
|
||||
struct ComputePLDesc
|
||||
{
|
||||
ID3D12RootSignature* pRootSignature;
|
||||
ID3DBlob* pCS;
|
||||
UINT NodeMask;
|
||||
D3D12_PIPELINE_STATE_FLAGS Flags;
|
||||
};
|
||||
|
||||
struct SwapchainProxyTextureData
|
||||
{
|
||||
ID3D12Resource* pTexture;
|
||||
UINT texState;
|
||||
D3D12_CPU_DESCRIPTOR_HANDLE srvHandle;
|
||||
D3D12_CPU_DESCRIPTOR_HANDLE rtvHandle;
|
||||
DXGI_FORMAT rtvFormat;
|
||||
};
|
||||
|
||||
enum DynamicAllocator
|
||||
{
|
||||
DA_RingAllocator = 0,
|
||||
DA_ConstBufferPageHeapAllocator,
|
||||
DA_VertexBufferPageHeapAllocator,
|
||||
DA_IndexBufferPageHeapAllocator,
|
||||
DA_UploadBufferPageHeapAllocator,
|
||||
DA_ReadbackBufferPageHeapAllocator
|
||||
};
|
||||
|
||||
public:
|
||||
// Factoring related methods
|
||||
|
||||
virtual ID3D12Device* GetDevice (UInt32 adapterID) = 0;
|
||||
|
||||
virtual ID3D12RootSignature* SerializeAndCreateRootSignature (UInt32 adapterID, D3D_ROOT_SIGNATURE_VERSION Version,
|
||||
const D3D12_ROOT_SIGNATURE_DESC* pRootSignatureDesc,
|
||||
ID3DBlob** ppErrorBlob) = 0;
|
||||
|
||||
virtual ID3DBlob* CreateD3DBlob (UIntPtr dataSize, const void* pInitialData) = 0;
|
||||
|
||||
virtual ID3D12ResourceDescAllocator* GetCBV_SRV_UAV_DescAllocator (UInt32 adapterID) = 0;
|
||||
virtual ID3D12ResourceDescAllocator* GetRTV_DescAllocator (UInt32 adapterID) = 0;
|
||||
virtual ID3D12ResourceDescAllocator* GetDSV_DescAllocator (UInt32 adapterID) = 0;
|
||||
virtual ID3D12ResourceDescAllocator* GetSampler_DescAllocator (UInt32 adapterID) = 0;
|
||||
|
||||
virtual ID3D12GraphicsCommandListAuto* GetGraphicsCommandListAuto (UInt32 adapterID) = 0;
|
||||
virtual ID3D12GraphicsCommandListAuto* GetCopyCommandListAuto (UInt32 adapterID) = 0;
|
||||
|
||||
virtual ID3D12HeapPageAllocator* GetHeapPageAllocator (UInt32 adapterID, DynamicAllocator allocator) = 0;
|
||||
|
||||
virtual ID3D12ResourceDescRingBuffer* GetCBV_SRV_UAV_RingBuffer (UInt32 adapterID) = 0;
|
||||
virtual ID3D12ResourceDescRingBuffer* CreateResourceDescRingBuffer (UInt32 adapterID, D3D12_DESCRIPTOR_HEAP_TYPE heapType,
|
||||
UINT numDescriptors, D3D12_DESCRIPTOR_HEAP_FLAGS heapFlags) = 0;
|
||||
|
||||
virtual ID3D12Buffer* CreateStaticBuffer (UInt32 adapterID, UInt32 bufferSize, D3D12_HEAP_TYPE heapType, D3D12_HEAP_FLAGS heapFlags) = 0;
|
||||
virtual ID3D12Buffer* CreateDynamicBuffer (UInt32 adapterID, UInt32 bufferSize, DynamicAllocator allocatorType) = 0;
|
||||
|
||||
// Swapchains
|
||||
|
||||
virtual SwapchainData GetSwapchainData (ID3D12Swapchain* pSwapchain) = 0;
|
||||
virtual UInt32 GetMaxNumberOfProxyTextures (UInt32 adapterID) = 0;
|
||||
virtual bool GetProxyTexture (ID3D12Swapchain* pSwapchain, UInt32 idx, SwapchainProxyTextureData* pOutData) = 0;
|
||||
|
||||
// Resource tracking
|
||||
|
||||
virtual bool RTEnableTrackingUnkownResources (bool enable) = 0;
|
||||
virtual bool RTResourceDestroyed (ID3D12Resource* pResource, bool waitForCompletion = true) = 0;
|
||||
virtual bool RTObjectDestroyed (void* pObject, bool waitForCompletion = true) = 0;
|
||||
|
||||
// Pipeline object caches
|
||||
|
||||
virtual D3D12_DEPTH_STENCIL_DESC* PLCacheGetDepthStencilDesc (UInt32 adapterID, const D3D12_DEPTH_STENCIL_DESC& desc) = 0;
|
||||
virtual D3D12_BLEND_DESC* PLCacheGetBlend4Desc (UInt32 adapterID, const D3D12_BLEND_DESC& desc) = 0; // only the first 4 RT's are taken into account... sorry about that
|
||||
virtual D3D12_RASTERIZER_DESC* PLCacheGetRasterizerDesc (UInt32 adapterID, const D3D12_RASTERIZER_DESC& desc) = 0;
|
||||
virtual D3D12_INPUT_LAYOUT_DESC* PLCacheGetInputLayoutDesc (UInt32 adapterID, UInt32 numOfElements, const D3D12_INPUT_ELEMENT_DESC* pElements) = 0;
|
||||
virtual ID3D12PipelineState* PLCacheGetGraphicsPipeline (UInt32 adapterID, const GraphicsPLDesc& desc) = 0;
|
||||
virtual ID3D12PipelineState* PLCacheGetComputePipeline (UInt32 adapterID, const ComputePLDesc& desc) = 0;
|
||||
|
||||
// Graphics pipeline state notification methods
|
||||
|
||||
virtual void GPLRootSignatureReleased (UInt32 adapterID, ID3D12RootSignature* pRootSignature) = 0;
|
||||
virtual void GPLShaderReleased (UInt32 adapterID, ID3DBlob* pShader) = 0;
|
||||
virtual void GPLStreamOutputReleased (UInt32 adapterID, D3D12_STREAM_OUTPUT_DESC* pStreamOutput) = 0;
|
||||
virtual void GPLBlendStateReleased (UInt32 adapterID, D3D12_BLEND_DESC* pBlendState) = 0;
|
||||
virtual void GPLRasterizerStateReleased (UInt32 adapterID, D3D12_RASTERIZER_DESC* pRasterizerState) = 0;
|
||||
virtual void GPLDepthStencilStateReleased (UInt32 adapterID, D3D12_DEPTH_STENCIL_DESC* pDepthStencilState) = 0;
|
||||
virtual void GPLInputLayoutReleased (UInt32 adapterID, D3D12_INPUT_LAYOUT_DESC* pInputLayout) = 0;
|
||||
|
||||
// Compute pipeline state notification methods
|
||||
|
||||
virtual void CPLRootSignatureReleased (UInt32 adapterID, ID3D12RootSignature* pRootSignature) = 0;
|
||||
virtual void CPLShaderReleased (UInt32 adapterID, ID3DBlob* pShader) = 0;
|
||||
};
|
||||
|
||||
|
||||
// --- ID3D12ResourceDescAllocator ---------------------------------------------
|
||||
|
||||
class ID3D12ResourceDescAllocator
|
||||
{
|
||||
public:
|
||||
virtual UInt32 AllocDescriptorGroup (UInt32 numOfContinuousDescriptors) = 0;
|
||||
virtual void DeallocDescriptorGroup (UInt32 handle, UInt32 numOfContinuousDescriptors,
|
||||
ID3D12Fence* pFence = NULL, UINT64 fenceValue = 0) = 0;
|
||||
|
||||
virtual UInt32 GetSubGroupHandle (UInt32 handle, UInt32 descIndex) = 0;
|
||||
|
||||
virtual D3D12_GPU_DESCRIPTOR_HANDLE GetGPUDescHandle (UInt32 handle, UInt32 descIndex = 0) = 0;
|
||||
virtual D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescHandle (UInt32 handle, UInt32 descIndex = 0) = 0;
|
||||
|
||||
virtual ID3D12DescriptorHeap* GetDescriptorHeap (UInt32 handle) = 0;
|
||||
};
|
||||
|
||||
|
||||
// --- ID3D12ResourceDescRingBuffer --------------------------------------------
|
||||
|
||||
class ID3D12ResourceDescRingBuffer
|
||||
{
|
||||
public:
|
||||
struct AllocData
|
||||
{
|
||||
D3D12_GPU_DESCRIPTOR_HANDLE gpuDescHandle;
|
||||
D3D12_CPU_DESCRIPTOR_HANDLE cpuDescHandle;
|
||||
ID3D12DescriptorHeap* pHeap;
|
||||
UInt32 incrementSize;
|
||||
};
|
||||
|
||||
virtual bool Alloc (UInt32 numOfDescriptors, ID3D12Fence* pFence, UINT64 fenceValue, AllocData& allocData) = 0;
|
||||
|
||||
virtual void Release () = 0;
|
||||
};
|
||||
|
||||
// --- ID3D12Buffer ------------------------------------------------------------
|
||||
|
||||
class ID3D12Buffer
|
||||
{
|
||||
public:
|
||||
enum LockType
|
||||
{
|
||||
LT_Default = 0, // Wait for GPU (static buffer)
|
||||
LT_NoOverwrite, // Nooverwrite - No wait for GPU (dynamic buffer)
|
||||
LT_Discard // Discard - No wait for GPU (dynamic buffer)
|
||||
};
|
||||
|
||||
struct LockData
|
||||
{
|
||||
UInt64 gpuAddress;
|
||||
void* ptr;
|
||||
ID3D12Resource* pBuffer;
|
||||
};
|
||||
|
||||
virtual bool HasAddressChanged () const = 0;
|
||||
virtual void ClearAddressChangedFlag () = 0;
|
||||
virtual bool GetAndClearAddressChangedBit (UInt32 idx) = 0;
|
||||
|
||||
virtual LockData Lock (LockType lockType, ID3D12Fence* pFence = NULL, UInt64 fenceValue = 0) = 0;
|
||||
virtual void Unlock () = 0;
|
||||
|
||||
virtual void Release () = 0;
|
||||
};
|
||||
|
||||
// --- ID3D12GraphicsCommandListAuto -------------------------------------------
|
||||
|
||||
class ID3D12GraphicsCommandListAuto
|
||||
{
|
||||
public:
|
||||
virtual ID3D12GraphicsCommandList* GetCommandListInterface () = 0;
|
||||
|
||||
virtual bool IsCurrentId (void* id) = 0;
|
||||
virtual bool ChangeId (void* newId) = 0;
|
||||
|
||||
virtual UINT64 GetFenceValue () const = 0;
|
||||
|
||||
virtual bool AFlush (bool waitForCompletion = false) = 0;
|
||||
virtual void AFlushLock () = 0;
|
||||
virtual void AFlushUnlock (bool forceFlush = false) = 0;
|
||||
virtual UINT64 AGetLastFlushFenceValue () const = 0;
|
||||
virtual ID3D12Fence* AGetFence () const = 0;
|
||||
|
||||
virtual bool HIUpdateSubBuffer (ID3D12Resource* pMADBuffer, ID3D12HeapPageAllocator* pAllocator,
|
||||
UInt32 begin, UInt32 end, const void* pSrcData, bool setToUnmappedState = false) = 0;
|
||||
|
||||
virtual bool HIUpdateSubTexture (ID3D12Resource* pMADTexture, UInt32 dstSubResIdx,
|
||||
ID3D12HeapPageAllocator* pAllocator, const D3D12_BOX& dstBox,
|
||||
const void* pSrcData, UInt32 srcPitch, UInt32 srcDepth) = 0;
|
||||
};
|
||||
|
||||
// --- Helpers -----------------------------------------------------------------
|
||||
|
||||
struct D3D12RSPARAMETER: public D3D12_ROOT_PARAMETER
|
||||
{
|
||||
D3D12RSPARAMETER (D3D12_ROOT_PARAMETER_TYPE _ParameterType, UINT NumDescriptorRanges, const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
|
||||
D3D12_SHADER_VISIBILITY _ShaderVisibility)
|
||||
{
|
||||
ParameterType = _ParameterType;
|
||||
DescriptorTable.NumDescriptorRanges = NumDescriptorRanges;
|
||||
DescriptorTable.pDescriptorRanges = pDescriptorRanges;
|
||||
ShaderVisibility = _ShaderVisibility;
|
||||
}
|
||||
|
||||
D3D12RSPARAMETER (D3D12_ROOT_PARAMETER_TYPE _ParameterType, UINT ShaderRegister, UINT RegisterSpace, UINT Num32BitValues,
|
||||
D3D12_SHADER_VISIBILITY _ShaderVisibility)
|
||||
{
|
||||
ParameterType = _ParameterType;
|
||||
Constants.ShaderRegister = ShaderRegister;
|
||||
Constants.RegisterSpace = RegisterSpace;
|
||||
Constants.Num32BitValues = Num32BitValues;
|
||||
ShaderVisibility = _ShaderVisibility;
|
||||
}
|
||||
|
||||
D3D12RSPARAMETER (D3D12_ROOT_PARAMETER_TYPE _ParameterType, UINT ShaderRegister, UINT RegisterSpace,
|
||||
D3D12_SHADER_VISIBILITY _ShaderVisibility)
|
||||
{
|
||||
ParameterType = _ParameterType;
|
||||
Descriptor.ShaderRegister = ShaderRegister;
|
||||
Descriptor.RegisterSpace = RegisterSpace;
|
||||
ShaderVisibility = _ShaderVisibility;
|
||||
}
|
||||
};
|
||||
|
||||
//} // namespace dgVoodoo
|
||||
|
||||
#endif // !ID3D12ROOT_HPP
|
82
dgVoodooAPI/Inc/Addon/ID3D12RootObserver.hpp
Normal file
82
dgVoodooAPI/Inc/Addon/ID3D12RootObserver.hpp
Normal file
@ -0,0 +1,82 @@
|
||||
// *****************************************************************************
|
||||
// File: ID3D12RootObserver.hpp
|
||||
//
|
||||
// Description: Callback interface for observing D3D12 Root
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
#ifndef ID3D12ROOTOBSERVER_HPP
|
||||
#define ID3D12ROOTOBSERVER_HPP
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include "ID3D12Root.hpp"
|
||||
|
||||
namespace dgVoodoo {
|
||||
|
||||
// --- ID3D12RootObserver ------------------------------------------------------
|
||||
|
||||
class ID3D12RootObserver
|
||||
{
|
||||
public:
|
||||
|
||||
struct SwapchainDrawingTarget
|
||||
{
|
||||
RECT dstRect;
|
||||
ID3D12Resource* pDstTexture;
|
||||
D3D12_CPU_DESCRIPTOR_HANDLE rtvCPUHandle;
|
||||
UINT dstTextureState;
|
||||
};
|
||||
|
||||
|
||||
struct PresentBeginContextInput
|
||||
{
|
||||
ID3D12Swapchain* pSwapchain;
|
||||
SwapchainDrawingTarget drawingTarget;
|
||||
|
||||
RECT srcRect;
|
||||
ID3D12Resource* pSrcTexture;
|
||||
D3D12_CPU_DESCRIPTOR_HANDLE srvCPUHandle;
|
||||
UINT srcTextureState;
|
||||
};
|
||||
|
||||
|
||||
struct PresentBeginContextOutput
|
||||
{
|
||||
ID3D12Resource* pOutputTexture;
|
||||
D3D12_CPU_DESCRIPTOR_HANDLE outputTexSRVCPUHandle;
|
||||
UINT outputTextureExpectedState;
|
||||
};
|
||||
|
||||
|
||||
struct PresentEndContextInput
|
||||
{
|
||||
ID3D12Swapchain* pSwapchain;
|
||||
SwapchainDrawingTarget drawingTarget;
|
||||
};
|
||||
|
||||
|
||||
public:
|
||||
|
||||
// --- Factoring
|
||||
|
||||
virtual bool D3D12RootCreated (HMODULE hD3D12Dll, ID3D12Root* pD3D12Root) = 0;
|
||||
virtual void D3D12RootReleased (const ID3D12Root* pD3D12Root) = 0;
|
||||
|
||||
virtual bool D3D12BeginUsingAdapter (UInt32 adapterID) = 0;
|
||||
virtual void D3D12EndUsingAdapter (UInt32 adapterID) = 0;
|
||||
|
||||
virtual void D3D12SwapchainCreated (UInt32 adapterID, ID3D12Swapchain* pSwapchain, const ID3D12Root::SwapchainData& swapchainData) = 0;
|
||||
virtual void D3D12SwapchainChanged (UInt32 adapterID, ID3D12Swapchain* pSwapchain, const ID3D12Root::SwapchainData& swapchainData) = 0;
|
||||
virtual void D3D12SwapchainReleased (UInt32 adapterID, ID3D12Swapchain* pSwapchain) = 0;
|
||||
|
||||
virtual bool D3D12SwapchainPresentBegin (UInt32 adapterID, const PresentBeginContextInput& iCtx, PresentBeginContextOutput& oCtx) = 0;
|
||||
virtual void D3D12SwapchainPresentEnd (UInt32 adapterID, const PresentEndContextInput& iCtx) = 0;
|
||||
};
|
||||
|
||||
|
||||
} // namespace dgVoodoo
|
||||
|
||||
#endif // !ID3D12ROOTOBSERVER_HPP
|
37
dgVoodooAPI/Inc/Addon/ID3DDevice.hpp
Normal file
37
dgVoodooAPI/Inc/Addon/ID3DDevice.hpp
Normal file
@ -0,0 +1,37 @@
|
||||
// *****************************************************************************
|
||||
// File: ID3DDevice.hpp
|
||||
//
|
||||
// Description: Interface for D3DDevice objects
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
#ifndef ID3DDEVICE_HPP
|
||||
#define ID3DDEVICE_HPP
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include "..\APITypes.h"
|
||||
|
||||
namespace dgVoodoo {
|
||||
|
||||
// --- ID3DDevice --------------------------------------------------------------
|
||||
|
||||
class ID3DDevice
|
||||
{
|
||||
public:
|
||||
enum ObjectType
|
||||
{
|
||||
OT_Direct3DDevice = 0,
|
||||
OT_Direct3D8Device,
|
||||
OT_Direct3D9Device
|
||||
};
|
||||
|
||||
virtual ObjectType GetObjectType () const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // namespace dgVoodoo
|
||||
|
||||
#endif // !ID3DDEVICE_HPP
|
35
dgVoodooAPI/Inc/Addon/ID3DDeviceObserver.hpp
Normal file
35
dgVoodooAPI/Inc/Addon/ID3DDeviceObserver.hpp
Normal file
@ -0,0 +1,35 @@
|
||||
// *****************************************************************************
|
||||
// File: ID3DDeviceObserver.hpp
|
||||
//
|
||||
// Description: Callback interface for observing D3DDevice objects
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
#ifndef ID3DDEVICEOBSERVER_HPP
|
||||
#define ID3DDEVICEOBSERVER_HPP
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include "ID3DDevice.hpp"
|
||||
|
||||
namespace dgVoodoo {
|
||||
|
||||
// --- ID3DDeviceObserver ------------------------------------------------------
|
||||
|
||||
class ID3DDeviceObserver
|
||||
{
|
||||
public:
|
||||
|
||||
// --- Factoring
|
||||
|
||||
virtual bool D3DDeviceObjectCreated (ID3DDevice* pD3DDevice) = 0;
|
||||
virtual void D3DDeviceObjectReleased (const ID3DDevice* pD3DDevice) = 0;
|
||||
|
||||
};
|
||||
|
||||
|
||||
} // namespace dgVoodoo
|
||||
|
||||
#endif // !ID3DDEVICEOBSERVER_HPP
|
35
dgVoodooAPI/Inc/Addon/ID3DObserver.hpp
Normal file
35
dgVoodooAPI/Inc/Addon/ID3DObserver.hpp
Normal file
@ -0,0 +1,35 @@
|
||||
// *****************************************************************************
|
||||
// File: ID3DObserver.hpp
|
||||
//
|
||||
// Description: Callback interface for observing D3D objects
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
#ifndef ID3DOBSERVER_HPP
|
||||
#define ID3DOBSERVER_HPP
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include "ID3D.hpp"
|
||||
|
||||
namespace dgVoodoo {
|
||||
|
||||
// --- ID3DObserver ------------------------------------------------------------
|
||||
|
||||
class ID3DObserver
|
||||
{
|
||||
public:
|
||||
|
||||
// --- Factoring
|
||||
|
||||
virtual bool D3DObjectCreated (ID3D* pD3D) = 0;
|
||||
virtual void D3DObjectReleased (const ID3D* pD3D) = 0;
|
||||
|
||||
};
|
||||
|
||||
|
||||
} // namespace dgVoodoo
|
||||
|
||||
#endif // !ID3DOBSERVER_HPP
|
98
dgVoodooAPI/Inc/Addon/ID3DResource.hpp
Normal file
98
dgVoodooAPI/Inc/Addon/ID3DResource.hpp
Normal file
@ -0,0 +1,98 @@
|
||||
// *****************************************************************************
|
||||
// File: ID3DResource.hpp
|
||||
//
|
||||
// Description: Interface for D3DResource objects
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
#ifndef ID3DRESOURCE_HPP
|
||||
#define ID3DRESOURCE_HPP
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include "..\APITypes.h"
|
||||
|
||||
namespace dgVoodoo {
|
||||
|
||||
// --- ID3DResource ------------------------------------------------------------
|
||||
|
||||
class ID3DResource
|
||||
{
|
||||
public:
|
||||
enum Type
|
||||
{
|
||||
Texture = 0,
|
||||
CubeTexture,
|
||||
VolumeTexture
|
||||
};
|
||||
|
||||
enum Format
|
||||
{
|
||||
// Plain surface and texture formats
|
||||
P8 = 0,
|
||||
RGB565,
|
||||
XRGB555,
|
||||
ARGB1555,
|
||||
ARGB4444,
|
||||
XRGB8888,
|
||||
ARGB8888,
|
||||
L8,
|
||||
A8,
|
||||
A8L8,
|
||||
V8U8,
|
||||
L6V5U5,
|
||||
L8V8U8,
|
||||
Q8W8V8U8,
|
||||
|
||||
DXTC1,
|
||||
DXTC2,
|
||||
DXTC3,
|
||||
DXTC4,
|
||||
DXTC5,
|
||||
UYVY,
|
||||
YUY2,
|
||||
ARGB2101010,
|
||||
L16,
|
||||
R16G16,
|
||||
U16V16,
|
||||
R16G16B16A16,
|
||||
R16F,
|
||||
R16G16F,
|
||||
R16G16B16A16F,
|
||||
R32F,
|
||||
R32G32F,
|
||||
R32G32B32A32F,
|
||||
BC4,
|
||||
BC5,
|
||||
|
||||
// Z-buffer formats
|
||||
Z16,
|
||||
Z24,
|
||||
Z24S8,
|
||||
Z24X4S4,
|
||||
Z32,
|
||||
DFZ16,
|
||||
DFZ24S8,
|
||||
INTZ24S8
|
||||
};
|
||||
|
||||
|
||||
struct Desc
|
||||
{
|
||||
UInt32 width;
|
||||
UInt32 height;
|
||||
UInt32 depth;
|
||||
UInt32 mipMapNum;
|
||||
Format format;
|
||||
};
|
||||
|
||||
virtual Type ARGetType () const = 0;
|
||||
virtual Desc ARGetDesc () const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // namespace dgVoodoo
|
||||
|
||||
#endif // !ID3DRESOURCE_HPP
|
44
dgVoodooAPI/Inc/Addon/ID3DResourceObserver.hpp
Normal file
44
dgVoodooAPI/Inc/Addon/ID3DResourceObserver.hpp
Normal file
@ -0,0 +1,44 @@
|
||||
// *****************************************************************************
|
||||
// File: ID3DResourceObserver.hpp
|
||||
//
|
||||
// Description: Callback interface for observing D3D resource objects
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
#ifndef ID3DRESOURCEOBSERVER_HPP
|
||||
#define ID3DRESOURCEOBSERVER_HPP
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include "..\APITypes.h"
|
||||
#include "ID3D.hpp"
|
||||
#include "ID3DResource.hpp"
|
||||
|
||||
namespace dgVoodoo {
|
||||
|
||||
|
||||
// --- ID3DObserver ------------------------------------------------------------
|
||||
|
||||
class ID3DResourceObserver
|
||||
{
|
||||
public:
|
||||
|
||||
// --- Factoring
|
||||
|
||||
virtual bool TextureCreated (ID3D* pD3D, ID3DResource* pTexture) = 0;
|
||||
virtual bool CubeTextureCreated (ID3D* pD3D, ID3DResource* pTexture) = 0;
|
||||
virtual bool VolumeTextureCreated (ID3D* pD3D, ID3DResource* pTexture) = 0;
|
||||
|
||||
virtual void TextureReleased (ID3D* pD3D, const ID3DResource* pTexture) = 0;
|
||||
virtual void CubeTextureReleased (ID3D* pD3D, const ID3DResource* pTexture) = 0;
|
||||
virtual void VolumeTextureReleased (ID3D* pD3D, const ID3DResource* pTexture) = 0;
|
||||
|
||||
// --- Content manipulation
|
||||
};
|
||||
|
||||
|
||||
} // namespace dgVoodoo
|
||||
|
||||
#endif // !ID3DRESOURCEOBSERVER_HPP
|
@ -204,6 +204,16 @@ struct ConfigGeneralExt
|
||||
};
|
||||
|
||||
|
||||
enum SystemHookFlags
|
||||
{
|
||||
SHF_None = 0x0,
|
||||
SHF_GDI = 0x1,
|
||||
SHF_Cursor = 0x2,
|
||||
|
||||
SHF_All = 0x3
|
||||
};
|
||||
|
||||
|
||||
UInt32 desktopResWidth;
|
||||
UInt32 desktopResHeight;
|
||||
UInt32 desktopRefRateNumerator;
|
||||
@ -224,8 +234,8 @@ struct ConfigGeneralExt
|
||||
PresentationModel presentationModel;
|
||||
UInt32 fpsLimitNumerator;
|
||||
UInt32 fpsLimitDenominator;
|
||||
UInt32 systemHookFlags;
|
||||
bool freeMouse;
|
||||
bool enableGDIHooking;
|
||||
|
||||
ConfigGeneralExt ():
|
||||
desktopResWidth (0),
|
||||
@ -248,8 +258,8 @@ struct ConfigGeneralExt
|
||||
presentationModel (PM_Automatic),
|
||||
fpsLimitNumerator (0),
|
||||
fpsLimitDenominator (0),
|
||||
freeMouse (false),
|
||||
enableGDIHooking (false)
|
||||
systemHookFlags (SHF_None),
|
||||
freeMouse (false)
|
||||
{
|
||||
}
|
||||
};
|
||||
@ -411,7 +421,7 @@ struct ConfigDirectX
|
||||
bool appControlledScreenState;
|
||||
bool disableAltEnter;
|
||||
bool watermark;
|
||||
bool linearBltStretch;
|
||||
bool bilinear2DOperations;
|
||||
bool applyPhongShading;
|
||||
bool forceVSync;
|
||||
bool disableMipmapping;
|
||||
@ -431,7 +441,7 @@ struct ConfigDirectX
|
||||
appControlledScreenState (true),
|
||||
disableAltEnter (true),
|
||||
watermark (true),
|
||||
linearBltStretch (false),
|
||||
bilinear2DOperations (false),
|
||||
applyPhongShading (false),
|
||||
forceVSync (false),
|
||||
disableMipmapping (false),
|
||||
|
BIN
dgVoodooAPI/Lib/arm64/dgVoodooAPI.lib
Normal file
BIN
dgVoodooAPI/Lib/arm64/dgVoodooAPI.lib
Normal file
Binary file not shown.
BIN
dgVoodooAPI/Lib/arm64/dgVoodooAddon.lib
Normal file
BIN
dgVoodooAPI/Lib/arm64/dgVoodooAddon.lib
Normal file
Binary file not shown.
BIN
dgVoodooAPI/Lib/arm64ec/dgVoodooAddon.lib
Normal file
BIN
dgVoodooAPI/Lib/arm64ec/dgVoodooAddon.lib
Normal file
Binary file not shown.
BIN
dgVoodooAPI/Lib/x64/dgVoodooAPI.lib
Normal file
BIN
dgVoodooAPI/Lib/x64/dgVoodooAPI.lib
Normal file
Binary file not shown.
BIN
dgVoodooAPI/Lib/x64/dgVoodooAddon.lib
Normal file
BIN
dgVoodooAPI/Lib/x64/dgVoodooAddon.lib
Normal file
Binary file not shown.
Binary file not shown.
BIN
dgVoodooAPI/Lib/x86/dgVoodooAddon.lib
Normal file
BIN
dgVoodooAPI/Lib/x86/dgVoodooAddon.lib
Normal file
Binary file not shown.
@ -1,22 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25420.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SampleApp", "SampleApp.vcxproj", "{CD7EACA5-A639-4264-9F8D-5044F8489A15}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Debug|x86.Build.0 = Debug|Win32
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Release|x86.ActiveCfg = Release|Win32
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@ -1,7 +1,7 @@
|
||||
// SampleApp.cpp : Defines the entry point for the console application.
|
||||
// APILibrary.cpp : Defines the entry point for the console application.
|
||||
//
|
||||
|
||||
#include "IMainFactory.hpp"
|
||||
#include ".\APIDll\IMainFactory.hpp"
|
||||
#include "IIniParser.hpp"
|
||||
#include "IAPIDataStream.hpp"
|
||||
#include "APIDebugObj.hpp"
|
@ -1,171 +1,260 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{CD7EACA5-A639-4264-9F8D-5044F8489A15}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>SampleApp</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>dgVoodooAPI.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>dgVoodooAPI.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\Inc\APIDebugObj.hpp" />
|
||||
<ClInclude Include="..\Inc\APIObject.hpp" />
|
||||
<ClInclude Include="..\Inc\APITypes.h" />
|
||||
<ClInclude Include="..\Inc\dgVoodooConfig.hpp" />
|
||||
<ClInclude Include="..\Inc\IAPIDataStream.hpp" />
|
||||
<ClInclude Include="..\Inc\IConfig.hpp" />
|
||||
<ClInclude Include="..\Inc\ICPLDDI.hpp" />
|
||||
<ClInclude Include="..\Inc\IIniParser.hpp" />
|
||||
<ClInclude Include="..\Inc\IMainFactory.hpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="SampleApp.cpp" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{CD7EACA5-A639-4264-9F8D-5044F8489A15}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>SampleApp</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)\Bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\Bin\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)\Bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\Bin\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)\Bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\Bin\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)\Bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\Bin\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)\Bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\Bin\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)\Bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\Bin\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\x86\</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>dgVoodooAPI.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\x64\</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>dgVoodooAPI.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\arm64\</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>dgVoodooAPI.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\x86\</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>dgVoodooAPI.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\x64\</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>dgVoodooAPI.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\arm64\</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>dgVoodooAPI.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\Inc\APIDebugObj.hpp" />
|
||||
<ClInclude Include="..\Inc\APIObject.hpp" />
|
||||
<ClInclude Include="..\Inc\APITypes.h" />
|
||||
<ClInclude Include="..\Inc\dgVoodooConfig.hpp" />
|
||||
<ClInclude Include="..\Inc\IAPIDataStream.hpp" />
|
||||
<ClInclude Include="..\Inc\IConfig.hpp" />
|
||||
<ClInclude Include="..\Inc\ICPLDDI.hpp" />
|
||||
<ClInclude Include="..\Inc\IIniParser.hpp" />
|
||||
<ClInclude Include="..\Inc\IMainFactory.hpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="APILibrary.cpp" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
45
dgVoodooAPI/Samples/API Library/APILibrary.vcxproj.filters
Normal file
45
dgVoodooAPI/Samples/API Library/APILibrary.vcxproj.filters
Normal file
@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\Inc\APIDebugObj.hpp">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Inc\APIObject.hpp">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Inc\APITypes.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Inc\dgVoodooConfig.hpp">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Inc\IAPIDataStream.hpp">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Inc\IConfig.hpp">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Inc\ICPLDDI.hpp">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Inc\IIniParser.hpp">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Inc\IMainFactory.hpp">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{275425d7-3480-433c-b4e7-79331c6f595a}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4a85f66c-422e-48cf-9442-7f86f97911a1}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="APILibrary.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -1,10 +1,10 @@
|
||||
Color1 = BLUE
|
||||
|
||||
[Geometry]
|
||||
Shapes1 = rectangle, triangle
|
||||
Shapes2 = "rotated rectangle" circle
|
||||
Shapes3 =
|
||||
|
||||
[Topology] []
|
||||
|
||||
Color1 = BLUE
|
||||
|
||||
[Geometry]
|
||||
Shapes1 = rectangle, triangle
|
||||
Shapes2 = "rotated rectangle" circle
|
||||
Shapes3 =
|
||||
|
||||
[Topology] []
|
||||
|
||||
Color2 = red R:255 G:0 B:0
|
BIN
dgVoodooAPI/Samples/Bin/ARM64/Release/APILibrary.exe
Normal file
BIN
dgVoodooAPI/Samples/Bin/ARM64/Release/APILibrary.exe
Normal file
Binary file not shown.
BIN
dgVoodooAPI/Samples/Bin/ARM64/Release/SampleAddon.dll
Normal file
BIN
dgVoodooAPI/Samples/Bin/ARM64/Release/SampleAddon.dll
Normal file
Binary file not shown.
BIN
dgVoodooAPI/Samples/Bin/ARM64EC/Release/SampleAddon.dll
Normal file
BIN
dgVoodooAPI/Samples/Bin/ARM64EC/Release/SampleAddon.dll
Normal file
Binary file not shown.
BIN
dgVoodooAPI/Samples/Bin/Win32/Release/APILibrary.exe
Normal file
BIN
dgVoodooAPI/Samples/Bin/Win32/Release/APILibrary.exe
Normal file
Binary file not shown.
BIN
dgVoodooAPI/Samples/Bin/Win32/Release/SampleAddon.dll
Normal file
BIN
dgVoodooAPI/Samples/Bin/Win32/Release/SampleAddon.dll
Normal file
Binary file not shown.
BIN
dgVoodooAPI/Samples/Bin/x64/Release/APILibrary.exe
Normal file
BIN
dgVoodooAPI/Samples/Bin/x64/Release/APILibrary.exe
Normal file
Binary file not shown.
BIN
dgVoodooAPI/Samples/Bin/x64/Release/SampleAddon.dll
Normal file
BIN
dgVoodooAPI/Samples/Bin/x64/Release/SampleAddon.dll
Normal file
Binary file not shown.
131
dgVoodooAPI/Samples/D3D12 Addon/AddonMain.cpp
Normal file
131
dgVoodooAPI/Samples/D3D12 Addon/AddonMain.cpp
Normal file
@ -0,0 +1,131 @@
|
||||
// *****************************************************************************
|
||||
// File: AddonMain.cpp
|
||||
//
|
||||
// Description: Main host object for addon implementation of dgVoodoo Addon DLL
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include "AddonMain.hpp"
|
||||
|
||||
// --- Namespaces --------------------------------------------------------------
|
||||
|
||||
using namespace dgVoodoo;
|
||||
|
||||
// --- AddonMain ---------------------------------------------------------------
|
||||
|
||||
AddonMain::AddonMain (HINSTANCE hDll, IAddonMainCallback* pAddonMainCB):
|
||||
APIDebugObj (APIDebugObj::EnableInfo, APIDebugObj::EnableWarning, APIDebugObj::EnableError,
|
||||
"[dgVoodoo Sample Addon] ", 0, NULL),
|
||||
hDll (hDll),
|
||||
pAddonMainCB (pAddonMainCB),
|
||||
pINIParser (NULL),
|
||||
texturer (*this),
|
||||
presenter (*this)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
bool AddonMain::ILoadAndValidateINIFile ()
|
||||
{
|
||||
bool valid = true;
|
||||
|
||||
if (pINIParser->Parse ("SampleAddon.ini", dgVoodoo::IIniParser::LowerCase)) {
|
||||
|
||||
for (UInt32 i = 0; valid && i < pINIParser->GetNumberOfSections (); i++) {
|
||||
const char* pName = pINIParser->GetSectionName (i);
|
||||
|
||||
if (pName == NULL) {
|
||||
|
||||
if (pINIParser->GetNumberOfProperties (i) != 0) {
|
||||
valid = false;
|
||||
}
|
||||
|
||||
} else if (strcmp (pName, "presenter") == 0) {
|
||||
|
||||
presenter.SetINISectionIdx (i);
|
||||
|
||||
} else if (strcmp (pName, "texturer") == 0) {
|
||||
} else {
|
||||
valid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return valid;
|
||||
}
|
||||
|
||||
|
||||
AddonMain::~AddonMain ()
|
||||
{
|
||||
Exit ();
|
||||
}
|
||||
|
||||
|
||||
bool AddonMain::Init ()
|
||||
{
|
||||
pINIParser = pAddonMainCB->CreateIniParser ();
|
||||
|
||||
if (pINIParser != NULL) {
|
||||
|
||||
if (ILoadAndValidateINIFile ()) {
|
||||
|
||||
if (texturer.Init ()) {
|
||||
|
||||
if (presenter.Init ()) {
|
||||
|
||||
UInt32 version = pAddonMainCB->GetVersion ();
|
||||
|
||||
pAddonMainCB->IssueInfo (this, "Sample addon init succeeded for dgVoodoo version %d.%d%d\n",
|
||||
(version >> 8) & 0xF, (version >> 4) & 0xF, (version >> 0) & 0xF);
|
||||
|
||||
return true;
|
||||
}
|
||||
texturer.Exit ();
|
||||
}
|
||||
}
|
||||
pINIParser->Release ();
|
||||
pINIParser = NULL;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void AddonMain::Exit ()
|
||||
{
|
||||
if (pINIParser != NULL) {
|
||||
|
||||
presenter.Exit ();
|
||||
texturer.Exit ();
|
||||
pINIParser->Release ();
|
||||
}
|
||||
pAddonMainCB->IssueInfo (this, "Sample addon exited.\n");
|
||||
}
|
||||
|
||||
|
||||
// --- Functions ---------------------------------------------------------------
|
||||
|
||||
AddonMain* CreateAddonMain (HINSTANCE hDll, dgVoodoo::IAddonMainCallback* pAddonMainCB)
|
||||
{
|
||||
AddonMain* pAddonMain = new AddonMain (hDll, pAddonMainCB);
|
||||
if (pAddonMain != NULL) {
|
||||
|
||||
if (pAddonMain->Init ()) {
|
||||
return pAddonMain;
|
||||
}
|
||||
|
||||
delete pAddonMain;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
void DeleteAddonMain (AddonMain* pAddonMain)
|
||||
{
|
||||
delete pAddonMain;
|
||||
}
|
51
dgVoodooAPI/Samples/D3D12 Addon/AddonMain.hpp
Normal file
51
dgVoodooAPI/Samples/D3D12 Addon/AddonMain.hpp
Normal file
@ -0,0 +1,51 @@
|
||||
// *****************************************************************************
|
||||
// File: AddonMain.hpp
|
||||
//
|
||||
// Description: Main host object for addon implementation of dgVoodoo Addon DLL
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include "Public\IIniParser.hpp"
|
||||
#include "Public\APIDebugObj.hpp"
|
||||
|
||||
#include "Public\Addon\AddonDefs.hpp"
|
||||
#include "Public\Addon\IAddonMainCallback.hpp"
|
||||
|
||||
#include "Presenter.hpp"
|
||||
#include "Texturer.hpp"
|
||||
|
||||
// --- Namespaces --------------------------------------------------------------
|
||||
|
||||
using namespace dgVoodoo;
|
||||
|
||||
// --- Predeclarations ---------------------------------------------------------
|
||||
|
||||
// --- AddonMain ---------------------------------------------------------------
|
||||
|
||||
class AddonMain: public APIDebugObj
|
||||
{
|
||||
friend class Texturer;
|
||||
friend class Presenter;
|
||||
|
||||
protected:
|
||||
HINSTANCE hDll;
|
||||
IAddonMainCallback* pAddonMainCB;
|
||||
IIniParser* pINIParser;
|
||||
|
||||
Texturer texturer;
|
||||
Presenter presenter;
|
||||
|
||||
protected:
|
||||
bool ILoadAndValidateINIFile ();
|
||||
|
||||
public:
|
||||
AddonMain (HINSTANCE hDll, IAddonMainCallback* pAddonMainCB);
|
||||
~AddonMain ();
|
||||
|
||||
bool Init ();
|
||||
void Exit ();
|
||||
};
|
3
dgVoodooAPI/Samples/D3D12 Addon/Credits.txt
Normal file
3
dgVoodooAPI/Samples/D3D12 Addon/Credits.txt
Normal file
@ -0,0 +1,3 @@
|
||||
PNG file:
|
||||
|
||||
https://www.pngwing.com/en/free-png-bbull
|
BIN
dgVoodooAPI/Samples/D3D12 Addon/DirtyGlass.png
Normal file
BIN
dgVoodooAPI/Samples/D3D12 Addon/DirtyGlass.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 MiB |
86
dgVoodooAPI/Samples/D3D12 Addon/ImageLoader.cpp
Normal file
86
dgVoodooAPI/Samples/D3D12 Addon/ImageLoader.cpp
Normal file
@ -0,0 +1,86 @@
|
||||
// *****************************************************************************
|
||||
// File: ImageLoader.cpp
|
||||
//
|
||||
// Description: General image loader functionality for dgVoodooAddon
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include "Wincodec.h"
|
||||
#include "ImageLoader.hpp"
|
||||
|
||||
// --- Namespaces --------------------------------------------------------------
|
||||
|
||||
// --- Predeclarations ---------------------------------------------------------
|
||||
|
||||
class AddonMain;
|
||||
|
||||
// --- Presenter ---------------------------------------------------------------
|
||||
|
||||
bool ImageLoader::LoadImageA (LPCSTR pFileName, ImageData& outImageData)
|
||||
{
|
||||
WCHAR wFilename[MAX_PATH];
|
||||
|
||||
if (MultiByteToWideChar (CP_ACP, 0, pFileName, -1, wFilename, MAX_PATH) > 0) {
|
||||
|
||||
return LoadImageW (wFilename, outImageData);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool ImageLoader::LoadImageW (LPCWSTR pFileName, ImageData& outImageData)
|
||||
{
|
||||
memset (&outImageData, 0, sizeof (outImageData));
|
||||
|
||||
CoInitialize (NULL);
|
||||
|
||||
IWICImagingFactory* pFactory = NULL;
|
||||
HRESULT hr = CoCreateInstance (CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS (&pFactory));
|
||||
if (SUCCEEDED (hr)) {
|
||||
|
||||
IWICBitmapDecoder* pDecoder = NULL;
|
||||
hr = pFactory->CreateDecoderFromFilename (pFileName, NULL, GENERIC_READ, WICDecodeMetadataCacheOnDemand, &pDecoder);
|
||||
if (SUCCEEDED (hr)) {
|
||||
|
||||
IWICBitmapFrameDecode* pFrameDecode = NULL;
|
||||
hr = pDecoder->GetFrame (0, &pFrameDecode);
|
||||
if (SUCCEEDED (hr)) {
|
||||
|
||||
WICPixelFormatGUID pfGUID;
|
||||
hr = pFrameDecode->GetPixelFormat (&pfGUID);
|
||||
if (SUCCEEDED (hr) && pfGUID == GUID_WICPixelFormat32bppBGRA) {
|
||||
|
||||
UINT width = 0;
|
||||
UINT height = 0;
|
||||
hr = pFrameDecode->GetSize (&width, &height);
|
||||
if (SUCCEEDED (hr)) {
|
||||
|
||||
const UINT pixelBPP = 4;
|
||||
BYTE* pBitmap = new BYTE[width * height * pixelBPP];
|
||||
if (pBitmap != NULL) {
|
||||
hr = pFrameDecode->CopyPixels (NULL, width * pixelBPP, width * height * pixelBPP, pBitmap);
|
||||
if (SUCCEEDED (hr)) {
|
||||
outImageData.pBitmap = pBitmap;
|
||||
outImageData.width = width;
|
||||
outImageData.height = height;
|
||||
outImageData.stride = width * pixelBPP;
|
||||
outImageData.pixelBPP = pixelBPP;
|
||||
} else {
|
||||
delete[] pBitmap;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
pFrameDecode->Release ();
|
||||
}
|
||||
pDecoder->Release ();
|
||||
}
|
||||
pFactory->Release ();
|
||||
}
|
||||
|
||||
return outImageData.pBitmap != NULL;
|
||||
}
|
41
dgVoodooAPI/Samples/D3D12 Addon/ImageLoader.hpp
Normal file
41
dgVoodooAPI/Samples/D3D12 Addon/ImageLoader.hpp
Normal file
@ -0,0 +1,41 @@
|
||||
// *****************************************************************************
|
||||
// File: ImageLoader.hpp
|
||||
//
|
||||
// Description: General image loader functionality for dgVoodooAddon
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include "Wincodec.h"
|
||||
|
||||
// --- Namespaces --------------------------------------------------------------
|
||||
|
||||
//using namespace dgVoodoo;
|
||||
|
||||
// --- Predeclarations ---------------------------------------------------------
|
||||
|
||||
class AddonMain;
|
||||
|
||||
// --- ImageLoader -------------------------------------------------------------
|
||||
|
||||
class ImageLoader
|
||||
{
|
||||
public:
|
||||
struct ImageData
|
||||
{
|
||||
BYTE* pBitmap;
|
||||
UINT width;
|
||||
UINT height;
|
||||
UINT stride;
|
||||
UINT pixelBPP;
|
||||
};
|
||||
|
||||
public:
|
||||
|
||||
static bool LoadImageA (LPCSTR pFileName, ImageData& outImageData);
|
||||
static bool LoadImageW (LPCWSTR pFileName, ImageData& outImageData);
|
||||
|
||||
};
|
81
dgVoodooAPI/Samples/D3D12 Addon/Main.cpp
Normal file
81
dgVoodooAPI/Samples/D3D12 Addon/Main.cpp
Normal file
@ -0,0 +1,81 @@
|
||||
// *****************************************************************************
|
||||
// File: Main.cpp
|
||||
//
|
||||
// Description: Main file of dgVoodoo Addon DLL
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include <tchar.h>
|
||||
#include <Windows.h>
|
||||
|
||||
#include "Public\Addon\AddonDefs.hpp"
|
||||
#include "Public\Addon\IAddonMainCallback.hpp"
|
||||
|
||||
// --- Defines -----------------------------------------------------------------
|
||||
|
||||
// --- Namespaces --------------------------------------------------------------
|
||||
|
||||
using namespace dgVoodoo;
|
||||
|
||||
// --- Predeclarations ---------------------------------------------------------
|
||||
|
||||
class AddonMain;
|
||||
|
||||
// --- Externs -----------------------------------------------------------------
|
||||
|
||||
extern AddonMain* CreateAddonMain (HINSTANCE hDll, dgVoodoo::IAddonMainCallback* pAddonMainCB);
|
||||
extern void DeleteAddonMain (AddonMain* pAddonMain);
|
||||
|
||||
// --- Variables ---------------------------------------------------------------
|
||||
|
||||
HINSTANCE hDll = NULL;
|
||||
AddonMain* pAddonMain = NULL;
|
||||
|
||||
// --- Dll Main ----------------------------------------------------------------
|
||||
|
||||
BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
|
||||
{
|
||||
switch (fdwReason) {
|
||||
case DLL_PROCESS_ATTACH:
|
||||
|
||||
hDll = hinstDLL;
|
||||
break;
|
||||
|
||||
case DLL_PROCESS_DETACH:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
int APIENTRY _tWinMain (HINSTANCE hInstance,
|
||||
HINSTANCE hPrevInstance,
|
||||
LPTSTR lpCmdLine,
|
||||
int nCmdShow)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
// --- Addon functions ---------------------------------------------------------
|
||||
|
||||
extern "C" {
|
||||
|
||||
bool API_EXPORT AddOnInit (dgVoodoo::IAddonMainCallback* pAddonMainCB)
|
||||
{
|
||||
pAddonMain = CreateAddonMain (hDll, pAddonMainCB);
|
||||
|
||||
return pAddonMain != NULL;
|
||||
}
|
||||
|
||||
|
||||
void API_EXPORT AddOnExit ()
|
||||
{
|
||||
DeleteAddonMain (pAddonMain);
|
||||
pAddonMain = NULL;
|
||||
}
|
||||
|
||||
} // extern "C"
|
774
dgVoodooAPI/Samples/D3D12 Addon/Presenter.cpp
Normal file
774
dgVoodooAPI/Samples/D3D12 Addon/Presenter.cpp
Normal file
@ -0,0 +1,774 @@
|
||||
// *****************************************************************************
|
||||
// File: Presenter.cpp
|
||||
//
|
||||
// Description: D3D12 presentation hook implementation of dgVoodoo Addon DLL
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include "AddonMain.hpp"
|
||||
#include "Resource.h"
|
||||
|
||||
// --- Defines -----------------------------------------------------------------
|
||||
|
||||
#define DEFAULT_GLASSIMAGEPATH "GlassImage.png"
|
||||
#define DEFAULT_SEPIACOLOR 0x40F1AE72
|
||||
|
||||
#define VBUFFER_VERTEXCNT 256
|
||||
|
||||
// --- Presenter ---------------------------------------------------------------
|
||||
|
||||
const D3D12_BLEND_DESC Presenter::defaultBlendDesc =
|
||||
{
|
||||
FALSE, FALSE,
|
||||
// RT0
|
||||
{ FALSE, FALSE, D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD, D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD, D3D12_LOGIC_OP_CLEAR, 0xF }
|
||||
};
|
||||
|
||||
|
||||
const D3D12_RASTERIZER_DESC Presenter::defaultRasterizerDesc =
|
||||
{
|
||||
D3D12_FILL_MODE_SOLID, D3D12_CULL_MODE_NONE, FALSE, 0, 0.0f, 0.0f, TRUE, FALSE, FALSE, 0, D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF
|
||||
};
|
||||
|
||||
|
||||
const D3D12_DEPTH_STENCIL_DESC Presenter::defaultDepthStencilDesc =
|
||||
{
|
||||
FALSE, D3D12_DEPTH_WRITE_MASK_ALL, D3D12_COMPARISON_FUNC_ALWAYS, FALSE, 0xFF, 0xFF,
|
||||
{ D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP},
|
||||
{ D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP}
|
||||
};
|
||||
|
||||
|
||||
const D3D12_INPUT_ELEMENT_DESC Presenter::deaultInputLayout[] =
|
||||
{
|
||||
{"POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D12_APPEND_ALIGNED_ELEMENT, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0},
|
||||
{"TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D12_APPEND_ALIGNED_ELEMENT, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0}
|
||||
};
|
||||
|
||||
|
||||
Presenter::Presenter (AddonMain& main):
|
||||
main (main),
|
||||
pD3D12Root (NULL),
|
||||
pVSQuad (NULL),
|
||||
pPSGlass (NULL),
|
||||
sectionIdx (0),
|
||||
pGlassFilePath (NULL),
|
||||
sepiaColor (0x0)
|
||||
{
|
||||
memset (&glassImage, 0, sizeof (glassImage));
|
||||
memset (&rootPSConstBuffer, 0, sizeof (rootPSConstBuffer));
|
||||
}
|
||||
|
||||
|
||||
Presenter::~Presenter ()
|
||||
{
|
||||
Exit ();
|
||||
}
|
||||
|
||||
|
||||
Presenter::AdapterData::AdapterData ():
|
||||
pDevice (NULL),
|
||||
pRootSignature (NULL),
|
||||
pSRVDescAllocator (NULL),
|
||||
pGlassTexture (NULL),
|
||||
hGlassTexSRV (-1),
|
||||
glassTexState (D3D12_RESOURCE_STATE_COMMON),
|
||||
pPSO (NULL),
|
||||
pVertexBuffer (NULL),
|
||||
vbPos (0)
|
||||
{
|
||||
memset (&graphicsPipeline, 0, sizeof (graphicsPipeline));
|
||||
}
|
||||
|
||||
|
||||
void Presenter::ITakeLock ()
|
||||
{
|
||||
EnterCriticalSection (&lock);
|
||||
}
|
||||
|
||||
|
||||
void Presenter::IReleaseLock ()
|
||||
{
|
||||
LeaveCriticalSection (&lock);
|
||||
}
|
||||
|
||||
|
||||
// D3D12 observer functions can get called simultaneously with different adapterID's in extreme cases
|
||||
// We don't want to read/write the main 'adapters' container concurrently by any chance so guard it by a lock
|
||||
|
||||
Presenter::AdapterData& Presenter::GetAdapterRef (UInt32 adapterID)
|
||||
{
|
||||
ITakeLock ();
|
||||
|
||||
AdapterData& adapterData = adapters[adapterID];
|
||||
|
||||
IReleaseLock ();
|
||||
|
||||
return adapterData;
|
||||
}
|
||||
|
||||
|
||||
void Presenter::EraseAdapter (UInt32 adapterID)
|
||||
{
|
||||
ITakeLock ();
|
||||
|
||||
adapters.erase (adapterID);
|
||||
|
||||
IReleaseLock ();
|
||||
}
|
||||
|
||||
|
||||
bool Presenter::IParsePresenterINISection ()
|
||||
{
|
||||
pGlassFilePath = DEFAULT_GLASSIMAGEPATH;
|
||||
sepiaColor = DEFAULT_SEPIACOLOR;
|
||||
|
||||
bool succeeded = true;
|
||||
|
||||
for (UInt32 i = 0; succeeded && i < main.pINIParser->GetNumberOfProperties (sectionIdx); i++) {
|
||||
const char* pName = main.pINIParser->GetPropertyName (sectionIdx, i);
|
||||
|
||||
if (strcmp (pName, "glassimage") == 0) {
|
||||
if (main.pINIParser->GetNumberOfSubProperties (sectionIdx, i) == 0) {
|
||||
if (main.pINIParser->GetNumberOfPropertyValues (sectionIdx, i) == 1) {
|
||||
|
||||
pGlassFilePath = main.pINIParser->GetPropertyValueAsString (sectionIdx, i, 0);
|
||||
|
||||
} else {
|
||||
// empty value
|
||||
succeeded = (main.pINIParser->GetNumberOfPropertyValues (sectionIdx, i) == 0);
|
||||
}
|
||||
} else {
|
||||
succeeded = false;
|
||||
}
|
||||
|
||||
} else if (strcmp (pName, "sepiacolor") == 0) {
|
||||
|
||||
if (main.pINIParser->GetNumberOfSubProperties (sectionIdx, i) == 0) {
|
||||
if (main.pINIParser->GetNumberOfPropertyValues (sectionIdx, i) == 1) {
|
||||
|
||||
Int32 value = 0;
|
||||
succeeded = main.pINIParser->GetPropertyValueAsInt (sectionIdx, i, 0, value);
|
||||
sepiaColor = value;
|
||||
|
||||
} else {
|
||||
// empty value
|
||||
succeeded = (main.pINIParser->GetNumberOfPropertyValues (sectionIdx, i) == 0);
|
||||
}
|
||||
} else {
|
||||
succeeded = false;
|
||||
}
|
||||
|
||||
} else {
|
||||
succeeded = false;
|
||||
}
|
||||
}
|
||||
|
||||
return succeeded;
|
||||
}
|
||||
|
||||
|
||||
bool Presenter::ILoadShaders ()
|
||||
{
|
||||
UInt32 size = main.pAddonMainCB->RSSizeOfResource (main.hDll, MAKEINTRESOURCE (IDR_VSQUAD_5_1), L"RT_CUSTOM");
|
||||
const BYTE* pData = main.pAddonMainCB->RSLoadResource (main.hDll, MAKEINTRESOURCE (IDR_VSQUAD_5_1), L"RT_CUSTOM");
|
||||
if (pData != NULL) {
|
||||
|
||||
pVSQuad = pD3D12Root->CreateD3DBlob (size, pData);
|
||||
delete[] pData;
|
||||
if (pVSQuad != NULL) {
|
||||
|
||||
size = main.pAddonMainCB->RSSizeOfResource (main.hDll, MAKEINTRESOURCE (IDR_PSGLASS_5_1), L"RT_CUSTOM");
|
||||
pData = main.pAddonMainCB->RSLoadResource (main.hDll, MAKEINTRESOURCE (IDR_PSGLASS_5_1), L"RT_CUSTOM");
|
||||
|
||||
if (pData != NULL) {
|
||||
pPSGlass = pD3D12Root->CreateD3DBlob (size, pData);
|
||||
delete[] pData;
|
||||
|
||||
if (pPSGlass != NULL) {
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
pVSQuad->Release ();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool Presenter::ICreateRootSignature (AdapterData& adapter)
|
||||
{
|
||||
// SRV array descriptor - just for demonstration purposes: SRV range[3..4] in space 1
|
||||
const static D3D12_DESCRIPTOR_RANGE textureView =
|
||||
{
|
||||
D3D12_DESCRIPTOR_RANGE_TYPE_SRV,
|
||||
2, 3, 1, 0
|
||||
};
|
||||
|
||||
const static D3D12_ROOT_PARAMETER rootEntries[] =
|
||||
{
|
||||
// SRV table address for texture views
|
||||
D3D12RSPARAMETER (D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE, 1, &textureView, D3D12_SHADER_VISIBILITY_PIXEL),
|
||||
|
||||
// Inline constant buffer with 4 32bit entries (RootPSConstBuffer): CBV range[0..0], space 2
|
||||
D3D12RSPARAMETER (D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS, 0, 2, 4, D3D12_SHADER_VISIBILITY_PIXEL)
|
||||
|
||||
//D3D12RSPARAMETER (D3D12_ROOT_PARAMETER_TYPE_CBV, 2U, 0U, (D3D12_SHADER_VISIBILITY) (D3D12_SHADER_VISIBILITY_ALL)),
|
||||
};
|
||||
|
||||
// Static samplers
|
||||
const static D3D12_STATIC_SAMPLER_DESC staticSamplers[] =
|
||||
{
|
||||
// point sampler (s0)
|
||||
{
|
||||
D3D12_FILTER_MIN_MAG_MIP_POINT, D3D12_TEXTURE_ADDRESS_MODE_CLAMP, D3D12_TEXTURE_ADDRESS_MODE_CLAMP, D3D12_TEXTURE_ADDRESS_MODE_CLAMP,
|
||||
0.0f, 1, D3D12_COMPARISON_FUNC_ALWAYS, D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK, 0, D3D12_FLOAT32_MAX, 0, 0,
|
||||
D3D12_SHADER_VISIBILITY_PIXEL
|
||||
},
|
||||
|
||||
// bilinear sampler (s1)
|
||||
{
|
||||
D3D12_FILTER_MIN_MAG_MIP_LINEAR, D3D12_TEXTURE_ADDRESS_MODE_CLAMP, D3D12_TEXTURE_ADDRESS_MODE_CLAMP, D3D12_TEXTURE_ADDRESS_MODE_CLAMP,
|
||||
0.0f, 1, D3D12_COMPARISON_FUNC_ALWAYS, D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK, 0, D3D12_FLOAT32_MAX, 1, 0,
|
||||
D3D12_SHADER_VISIBILITY_PIXEL
|
||||
},
|
||||
};
|
||||
|
||||
const static D3D12_ROOT_SIGNATURE_DESC rootSignature =
|
||||
{
|
||||
2, rootEntries, 2, staticSamplers,
|
||||
D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |
|
||||
D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS |
|
||||
D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS |
|
||||
D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS
|
||||
};
|
||||
|
||||
adapter.pRootSignature = pD3D12Root->SerializeAndCreateRootSignature (adapter.adapterID, D3D_ROOT_SIGNATURE_VERSION_1, &rootSignature, NULL);
|
||||
|
||||
return adapter.pRootSignature != NULL;
|
||||
}
|
||||
|
||||
|
||||
void Presenter::IReleaseRootSignature (AdapterData& adapter)
|
||||
{
|
||||
// Let's tell dgVoodoo's caching infrastructure that we are about to release our
|
||||
// root signature object so remove all internal entries associated with it
|
||||
pD3D12Root->GPLRootSignatureReleased (adapter.adapterID, adapter.pRootSignature);
|
||||
|
||||
adapter.pRootSignature->Release();
|
||||
adapter.pRootSignature = NULL;
|
||||
}
|
||||
|
||||
|
||||
bool Presenter::ICreateGlassTexture (AdapterData& adapter)
|
||||
{
|
||||
// Create a very basic 2D texture resource (1 mipmap level, format BGRA8888) in the default type heap (video memory)
|
||||
// with allocated physical video memory pages (committed resource)
|
||||
D3D12_HEAP_PROPERTIES heapProp =
|
||||
{
|
||||
D3D12_HEAP_TYPE_DEFAULT, D3D12_CPU_PAGE_PROPERTY_UNKNOWN, D3D12_MEMORY_POOL_UNKNOWN, 0x0, 0x0
|
||||
};
|
||||
D3D12_RESOURCE_DESC desc =
|
||||
{
|
||||
D3D12_RESOURCE_DIMENSION_TEXTURE2D, D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT, glassImage.width, glassImage.height, 1, 1,
|
||||
DXGI_FORMAT_B8G8R8A8_TYPELESS, { 1, 0 }, D3D12_TEXTURE_LAYOUT_UNKNOWN, D3D12_RESOURCE_FLAG_NONE
|
||||
};
|
||||
|
||||
HRESULT hr = adapter.pDevice->CreateCommittedResource (&heapProp, D3D12_HEAP_FLAG_NONE, &desc, D3D12_RESOURCE_STATE_COMMON,
|
||||
NULL, __uuidof(ID3D12Resource), (void**) &adapter.pGlassTexture);
|
||||
if (SUCCEEDED (hr)) {
|
||||
|
||||
// Let's allocate a shader resource view (SRV) entry for it in a CPU-only visible descriptor array through an allocator
|
||||
adapter.hGlassTexSRV = adapter.pSRVDescAllocator->AllocDescriptorGroup (1);
|
||||
if (adapter.hGlassTexSRV != -1) {
|
||||
|
||||
ID3D12GraphicsCommandListAuto* pCmdListAuto = pD3D12Root->GetCopyCommandListAuto (adapter.adapterID);
|
||||
ID3D12GraphicsCommandList* pCmdList = pCmdListAuto->GetCommandListInterface ();
|
||||
|
||||
// Lock the command list for flush to make sure all the commands below will be written into it as a continuous block
|
||||
pCmdListAuto->AFlushLock ();
|
||||
|
||||
// A helper method to upload data into a texture subresource - this provides basically the same functionality as UpdateSubResource in D3D11
|
||||
// Give it the destination resource, the dst box, the source data user ptr, src memory layout and a memory page allocator and let it generate
|
||||
// the proper commands into the cmd list; this is an upload operation so use the "upload" page allocator
|
||||
D3D12_BOX dstBox = { 0, 0, 0, glassImage.width, glassImage.height, 1 };
|
||||
bool succeeded = pCmdListAuto->HIUpdateSubTexture (adapter.pGlassTexture, 0, pD3D12Root->GetHeapPageAllocator (adapter.adapterID, ID3D12Root::DA_UploadBufferPageHeapAllocator),
|
||||
dstBox, glassImage.pBitmap, glassImage.stride, glassImage.stride * glassImage.height);
|
||||
|
||||
if (succeeded) {
|
||||
// The upload method leaves our texture in copy-dest state so let's transition it back to common state for
|
||||
// later usage in the graphics pipeline
|
||||
adapter.glassTexState = D3D12_RESOURCE_STATE_COMMON;
|
||||
D3D12_RESOURCE_BARRIER barrier = { D3D12_RESOURCE_BARRIER_TYPE_TRANSITION, D3D12_RESOURCE_BARRIER_FLAG_NONE };
|
||||
barrier.Transition.pResource = adapter.pGlassTexture;
|
||||
barrier.Transition.Subresource = 0;
|
||||
barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_DEST;
|
||||
barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COMMON;
|
||||
pCmdList->ResourceBarrier (1, &barrier);
|
||||
}
|
||||
|
||||
// Unlock the command list for flush and force a flush operation if the uploader method was successful (the GPU begins to work here)
|
||||
pCmdListAuto->AFlushUnlock (succeeded);
|
||||
|
||||
if (succeeded) {
|
||||
|
||||
// Fill our SRV entry with a view describing a 2D texture with unorm BGRA8888 format, unswizzled components and all mipmap levels addressable
|
||||
// This entry will be copied into a GPU-visible descriptor entry during generating the actual rendering commands
|
||||
D3D12_SHADER_RESOURCE_VIEW_DESC srvDesc =
|
||||
{
|
||||
DXGI_FORMAT_B8G8R8A8_UNORM, D3D12_SRV_DIMENSION_TEXTURE2D, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING
|
||||
};
|
||||
srvDesc.Texture2D.MipLevels = -1;
|
||||
srvDesc.Texture2D.MostDetailedMip = 0;
|
||||
srvDesc.Texture2D.PlaneSlice = 0;
|
||||
srvDesc.Texture2D.ResourceMinLODClamp = 0.0f;
|
||||
adapter.pDevice->CreateShaderResourceView (adapter.pGlassTexture, &srvDesc, adapter.pSRVDescAllocator->GetCPUDescHandle (adapter.hGlassTexSRV));
|
||||
|
||||
return true;
|
||||
}
|
||||
// Release the SRV entry
|
||||
adapter.pSRVDescAllocator->DeallocDescriptorGroup (adapter.hGlassTexSRV, 1);
|
||||
adapter.hGlassTexSRV = 0;
|
||||
}
|
||||
|
||||
// Release the texture - no synchronization notifications are needed here because actually nothing happened with it
|
||||
adapter.pGlassTexture->Release ();
|
||||
adapter.pGlassTexture = NULL;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void Presenter::IReleaseGlassTexture (AdapterData& adapter)
|
||||
{
|
||||
// Let's tell dgVoodoo's object/resource tracking system that we are about to
|
||||
// release the glass texture so remove it from their entries and wait for GPU completion if needed
|
||||
pD3D12Root->RTResourceDestroyed (adapter.pGlassTexture, true);
|
||||
|
||||
adapter.pSRVDescAllocator->DeallocDescriptorGroup (adapter.hGlassTexSRV, 1);
|
||||
adapter.pGlassTexture->Release ();
|
||||
adapter.pGlassTexture = NULL;
|
||||
}
|
||||
|
||||
|
||||
void Presenter::ICleanUpAdapter (AdapterData& adapter)
|
||||
{
|
||||
// Make sure to clear our "ownership" of the auto command lists
|
||||
{
|
||||
ID3D12GraphicsCommandListAuto* pCmdListAuto = pD3D12Root->GetCopyCommandListAuto (adapter.adapterID);
|
||||
if (pCmdListAuto->IsCurrentId (this)) {
|
||||
pCmdListAuto->ChangeId (NULL);
|
||||
}
|
||||
}
|
||||
{
|
||||
ID3D12GraphicsCommandListAuto* pCmdListAuto = pD3D12Root->GetGraphicsCommandListAuto (adapter.adapterID);
|
||||
if (pCmdListAuto->IsCurrentId (this)) {
|
||||
pCmdListAuto->ChangeId (NULL);
|
||||
}
|
||||
}
|
||||
|
||||
IReleaseRootSignature (adapter);
|
||||
IReleaseGlassTexture (adapter);
|
||||
|
||||
adapter.pVertexBuffer->Release ();
|
||||
}
|
||||
|
||||
|
||||
void Presenter::IAddTransitionBarrier (ID3D12Resource* pResource, UINT stateBefore, UINT stateAfter, D3D12_RESOURCE_BARRIER* pBarriers, UInt32 numBarriers)
|
||||
{
|
||||
// Helper method to store a simple transition barrier for the 0th subresource of the incoming resource
|
||||
|
||||
pBarriers[numBarriers].Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
|
||||
pBarriers[numBarriers].Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
|
||||
|
||||
pBarriers[numBarriers].Transition.pResource = pResource;
|
||||
pBarriers[numBarriers].Transition.Subresource = 0;
|
||||
pBarriers[numBarriers].Transition.StateBefore = (D3D12_RESOURCE_STATES) stateBefore;
|
||||
pBarriers[numBarriers].Transition.StateAfter = (D3D12_RESOURCE_STATES) stateAfter;
|
||||
}
|
||||
|
||||
|
||||
// --- ID3D12RootObserver callbacks
|
||||
|
||||
bool Presenter::D3D12RootCreated (HMODULE /*hD3D12Dll*/, ID3D12Root* _pD3D12Root)
|
||||
{
|
||||
main.pAddonMainCB->IssueInfo (&main, "D3D12 root object (%p) is created.\n", _pD3D12Root);
|
||||
|
||||
if (ImageLoader::LoadImageA (pGlassFilePath, glassImage)) {
|
||||
|
||||
pD3D12Root = _pD3D12Root;
|
||||
|
||||
if (ILoadShaders ()) {
|
||||
|
||||
rootPSConstBuffer.sepiaColorR = ((sepiaColor >> 16) & 0xFF) / 255.0f;
|
||||
rootPSConstBuffer.sepiaColorG = ((sepiaColor >> 8) & 0xFF) / 255.0f;
|
||||
rootPSConstBuffer.sepiaColorB = ((sepiaColor >> 0) & 0xFF) / 255.0f;
|
||||
rootPSConstBuffer.colorIntensity = ((sepiaColor >> 24) & 0xFF) / 255.0f;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
delete[] glassImage.pBitmap;
|
||||
memset (&glassImage, 0, sizeof (glassImage));
|
||||
|
||||
pD3D12Root = NULL;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void Presenter::D3D12RootReleased (const ID3D12Root* _pD3D12Root)
|
||||
{
|
||||
main.pAddonMainCB->IssueInfo (&main, "D3D12 root object (%p) is released.\n", _pD3D12Root);
|
||||
|
||||
delete[] glassImage.pBitmap;
|
||||
memset (&glassImage, 0, sizeof (glassImage));
|
||||
|
||||
pD3D12Root = NULL;
|
||||
}
|
||||
|
||||
|
||||
bool Presenter::D3D12BeginUsingAdapter (UInt32 adapterID)
|
||||
{
|
||||
// In extreme cases D3D12 observer methods can get called concurrently with different adapter ID's
|
||||
// Make sure that we won't modify concurrently the main 'adapters' container by any chance
|
||||
ITakeLock ();
|
||||
|
||||
AdapterData data;
|
||||
adapters.insert (std::make_pair (adapterID, data));
|
||||
|
||||
IReleaseLock ();
|
||||
|
||||
main.pAddonMainCB->IssueInfo (&main, "A new D3D12 adapter (%d) and its objects are initialized on root object (%p). Using ID3D12Device (%p)\n", adapterID, pD3D12Root, data.pDevice);
|
||||
|
||||
AdapterData& adapter = adapters[adapterID];
|
||||
adapter.adapterID = adapterID;
|
||||
adapter.pDevice = pD3D12Root->GetDevice (adapterID);
|
||||
|
||||
if (ICreateRootSignature (adapter)) {
|
||||
|
||||
adapter.pSRVDescAllocator = pD3D12Root->GetCBV_SRV_UAV_DescAllocator (adapterID);
|
||||
|
||||
if (ICreateGlassTexture (adapter)) {
|
||||
|
||||
adapter.vbPos = 0;
|
||||
adapter.pVertexBuffer = pD3D12Root->CreateDynamicBuffer (adapterID, VBUFFER_VERTEXCNT * sizeof (Vertex), ID3D12Root::DA_VertexBufferPageHeapAllocator);
|
||||
if (adapter.pVertexBuffer != NULL) {
|
||||
|
||||
adapter.graphicsPipeline.pRootSignature = adapter.pRootSignature;
|
||||
adapter.graphicsPipeline.pVS = pVSQuad;
|
||||
adapter.graphicsPipeline.pPS = pPSGlass;
|
||||
adapter.graphicsPipeline.pBlendState = pD3D12Root->PLCacheGetBlend4Desc (adapterID, defaultBlendDesc);
|
||||
adapter.graphicsPipeline.SampleMask = 0xFFFFFFFF;
|
||||
adapter.graphicsPipeline.pRasterizerState = pD3D12Root->PLCacheGetRasterizerDesc (adapterID, defaultRasterizerDesc);
|
||||
adapter.graphicsPipeline.pDepthStencilState = pD3D12Root->PLCacheGetDepthStencilDesc (adapterID, defaultDepthStencilDesc);
|
||||
adapter.graphicsPipeline.pInputLayout = pD3D12Root->PLCacheGetInputLayoutDesc (adapterID, 2, deaultInputLayout);
|
||||
adapter.graphicsPipeline.IBStripCutValue = D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED;
|
||||
adapter.graphicsPipeline.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
|
||||
adapter.graphicsPipeline.NumRenderTargets = 1;
|
||||
adapter.graphicsPipeline.DSVFormat = DXGI_FORMAT_UNKNOWN;
|
||||
adapter.graphicsPipeline.RTVFormats[0] = DXGI_FORMAT_UNKNOWN;
|
||||
adapter.graphicsPipeline.SampleDesc = { 1, 0 };
|
||||
adapter.graphicsPipeline.NodeMask = 0;
|
||||
adapter.graphicsPipeline.Flags = D3D12_PIPELINE_STATE_FLAG_NONE;
|
||||
|
||||
return true;
|
||||
}
|
||||
IReleaseGlassTexture (adapter);
|
||||
}
|
||||
IReleaseRootSignature (adapter);
|
||||
}
|
||||
|
||||
EraseAdapter (adapterID);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void Presenter::D3D12EndUsingAdapter (UInt32 adapterID)
|
||||
{
|
||||
ICleanUpAdapter (GetAdapterRef (adapterID));
|
||||
|
||||
EraseAdapter (adapterID);
|
||||
|
||||
main.pAddonMainCB->IssueInfo (&main, "D3D12 adapter (%d) and its objects are released on root object (%p).\n", adapterID, pD3D12Root);
|
||||
}
|
||||
|
||||
|
||||
void Presenter::D3D12SwapchainCreated (UInt32 adapterID, ID3D12Swapchain* pSwapchain, const ID3D12Root::SwapchainData& swapchainData)
|
||||
{
|
||||
// Just put it into our entries and don't do anything else
|
||||
|
||||
AdapterData& adapter = GetAdapterRef (adapterID);
|
||||
|
||||
SwapchainEntry entry = { pSwapchain, swapchainData };
|
||||
adapter.swapchains.insert (std::make_pair (pSwapchain, entry));
|
||||
}
|
||||
|
||||
|
||||
void Presenter::D3D12SwapchainChanged (UInt32 adapterID, ID3D12Swapchain* pSwapchain, const ID3D12Root::SwapchainData& swapchainData)
|
||||
{
|
||||
// Just update the data in our entries and do nothing more
|
||||
|
||||
AdapterData& adapter = GetAdapterRef (adapterID);
|
||||
|
||||
SwapchainEntry entry = { pSwapchain, swapchainData };
|
||||
adapter.swapchains[pSwapchain] = entry;
|
||||
}
|
||||
|
||||
|
||||
void Presenter::D3D12SwapchainReleased (UInt32 adapterID, ID3D12Swapchain* pSwapchain)
|
||||
{
|
||||
// Just remove it from our entries
|
||||
|
||||
AdapterData& adapter = GetAdapterRef (adapterID);
|
||||
|
||||
adapter.swapchains.erase (pSwapchain);
|
||||
}
|
||||
|
||||
|
||||
bool Presenter::D3D12SwapchainPresentBegin (UInt32 adapterID, const PresentBeginContextInput& iCtx, PresentBeginContextOutput& oCtx)
|
||||
{
|
||||
bool succeeded = false;
|
||||
|
||||
AdapterData& adapter = GetAdapterRef (adapterID);
|
||||
|
||||
// Get a render target - we don't do up/downscaling in this hook so we won't give back a texture factored on our own, but instead always draw into
|
||||
// a proxy texure associated with the swapchain or into the swapchain directly. That's why we don't care about 'output texture expected state'
|
||||
// as well here and set it to invalid -1. Expected state is what dgVoodoo transitions it into after the presentation so we know what state
|
||||
// our texture is in when next time have to do sg with it.
|
||||
oCtx.pOutputTexture = NULL;
|
||||
oCtx.outputTexSRVCPUHandle = { NULL };
|
||||
oCtx.outputTextureExpectedState = -1;
|
||||
|
||||
D3D12_CPU_DESCRIPTOR_HANDLE rtvCPUHandle = { 0 };
|
||||
UINT renderTargetState = 0;
|
||||
DXGI_FORMAT rtvFormat = adapter.swapchains[iCtx.pSwapchain].properties.format;
|
||||
RECT dstRect = { 0, 0, 0, 0 };
|
||||
{
|
||||
// If dgVoodoo
|
||||
// - gives us a possible direct destination texture to draw into
|
||||
// - and the dimensions of the source texture rect matches the dimensions of the destination texture rect (the presentation size)
|
||||
// then use that destination texture as the render target. It's a performance optimization.
|
||||
|
||||
// If the dimensions of the src/dst rects mismatch then it means an image scaling which we hand off to dgVoodoo by drawing into a matching size
|
||||
// proxy texture instead.
|
||||
|
||||
if (iCtx.drawingTarget.pDstTexture != NULL &&
|
||||
(iCtx.srcRect.right - iCtx.srcRect.left) == (iCtx.drawingTarget.dstRect.right - iCtx.drawingTarget.dstRect.left) &&
|
||||
(iCtx.srcRect.bottom - iCtx.srcRect.top) == (iCtx.drawingTarget.dstRect.bottom - iCtx.drawingTarget.dstRect.top) ) {
|
||||
|
||||
oCtx.pOutputTexture = iCtx.drawingTarget.pDstTexture;
|
||||
rtvCPUHandle = iCtx.drawingTarget.rtvCPUHandle;
|
||||
renderTargetState = iCtx.drawingTarget.dstTextureState;
|
||||
dstRect = iCtx.drawingTarget.dstRect;
|
||||
|
||||
} else {
|
||||
|
||||
// A swapchain can always have at least 2 proxy textures. We have to check out if the incoming source texture is not a proxy texture already,
|
||||
// so we pick up either the 0th or the 1st of the proxy textures.
|
||||
ID3D12Root::SwapchainProxyTextureData ptData;
|
||||
for (UInt32 i = 0; i < 2; i++) {
|
||||
pD3D12Root->GetProxyTexture (iCtx.pSwapchain, i, &ptData);
|
||||
oCtx.pOutputTexture = ptData.pTexture;
|
||||
oCtx.outputTexSRVCPUHandle = ptData.srvHandle;
|
||||
|
||||
if (ptData.pTexture != iCtx.pSrcTexture) {
|
||||
// When we draw into a proxy texture then we could simply negligate the source and destination rects
|
||||
// and update the full texture instead because dgVoodoo will only present the source rect anyway,
|
||||
// but we can save some GPU resources this way, so this is a performance optimization
|
||||
rtvCPUHandle = ptData.rtvHandle;
|
||||
dstRect = iCtx.srcRect;
|
||||
renderTargetState = ptData.texState;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If we couldn't pick up a render target for any reason (demonstration purpose)
|
||||
// then it's an error case so return with NULL output texture and let dgVoodoo ignore our hook
|
||||
if (oCtx.pOutputTexture != NULL) {
|
||||
|
||||
|
||||
ID3D12GraphicsCommandListAuto* pCmdListAuto = pD3D12Root->GetGraphicsCommandListAuto (adapterID);
|
||||
|
||||
// This (vertex) buffer access pattern must be familiar: if 4 new vertices still fit into it then just append them to the end of the stream or allocate a new
|
||||
// physical buffer instead and zero the stream position
|
||||
ID3D12Buffer::LockData lData = adapter.pVertexBuffer->Lock ((adapter.vbPos + 4) <= VBUFFER_VERTEXCNT ? ID3D12Buffer::LT_NoOverwrite : ID3D12Buffer::LT_Discard,
|
||||
pCmdListAuto->AGetFence (), pCmdListAuto->GetFenceValue ());
|
||||
|
||||
if (lData.ptr != NULL) {
|
||||
|
||||
// Alloc room for 2 entries in the GPU-visible SRV descriptor ring buffer
|
||||
ID3D12ResourceDescRingBuffer* pSRVRingBuffer = pD3D12Root->GetCBV_SRV_UAV_RingBuffer (adapterID);
|
||||
ID3D12ResourceDescRingBuffer::AllocData rdData;
|
||||
if (pSRVRingBuffer->Alloc (2, pCmdListAuto->AGetFence (), pCmdListAuto->GetFenceValue (), rdData)) {
|
||||
|
||||
if ((adapter.vbPos + 4) > VBUFFER_VERTEXCNT) {
|
||||
adapter.vbPos = 0;
|
||||
}
|
||||
|
||||
D3D12_RESOURCE_DESC srcDesc = iCtx.pSrcTexture->GetDesc ();
|
||||
float srcWidth = (float) srcDesc.Width;
|
||||
float srcHeight = (float) srcDesc.Height;
|
||||
|
||||
// Texture coordinates for the incoming src rect
|
||||
float tuLeft = (iCtx.srcRect.left / srcWidth);
|
||||
float tvTop = (iCtx.srcRect.top / srcHeight);
|
||||
float tuRight = (iCtx.srcRect.right / srcWidth);
|
||||
float tvBottom = (iCtx.srcRect.bottom / srcHeight);
|
||||
|
||||
// Make ptr volatile to avoid compiling optimizations resulting in reading video memory
|
||||
// ("and dword ptr [eax], 0" and the likes)
|
||||
volatile Vertex* pVertex = ((Vertex*) lData.ptr) + adapter.vbPos;
|
||||
pVertex[0].pX = -1.0f; pVertex[0].pY = 1.0f; pVertex[0].tU = tuLeft; pVertex[0].tV = tvTop;
|
||||
pVertex[1].pX = -1.0f; pVertex[1].pY = -1.0f; pVertex[1].tU = tuLeft; pVertex[1].tV = tvBottom;
|
||||
pVertex[2].pX = 1.0f; pVertex[2].pY = 1.0f; pVertex[2].tU = tuRight; pVertex[2].tV = tvTop;
|
||||
pVertex[3].pX = 1.0f; pVertex[3].pY = -1.0f; pVertex[3].tU = tuRight; pVertex[3].tV = tvBottom;
|
||||
|
||||
// A 2 element array containing 2 separate one-length SRV descriptor ranges; the incoming texture and our glass texture
|
||||
// The SRV range allocated by the ring buffer allocator is one range with 2 elements where our 2 source descriptors will be copied to
|
||||
D3D12_CPU_DESCRIPTOR_HANDLE textureSRVs[] =
|
||||
{
|
||||
iCtx.srvCPUHandle, adapter.pSRVDescAllocator->GetCPUDescHandle (adapter.hGlassTexSRV)
|
||||
};
|
||||
const static UINT textureSRVrangeSizes[] = { 1, 1 };
|
||||
const static UINT srvRingBufferRangeSize = 2;
|
||||
adapter.pDevice->CopyDescriptors (1, &rdData.cpuDescHandle, &srvRingBufferRangeSize, 2, textureSRVs, textureSRVrangeSizes, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
|
||||
|
||||
// The "current state" of the command list must potentially be completely updated because either somebody else has written into it or it
|
||||
// got flushed since the last time we wrote into it
|
||||
// (Actually, this will always be the case in this hook method; it is just a demonstration how to decide between a full/partial state update)
|
||||
bool forceUpdate = pCmdListAuto->ChangeId (this);
|
||||
|
||||
pCmdListAuto->AFlushLock ();
|
||||
ID3D12GraphicsCommandList* pCmdList = pCmdListAuto->GetCommandListInterface ();
|
||||
|
||||
if (forceUpdate) {
|
||||
pCmdList->SetGraphicsRootSignature (adapter.pRootSignature);
|
||||
}
|
||||
|
||||
bool updatePSO = forceUpdate;
|
||||
// Get a pipeline object from the cache with the new render target format if needed
|
||||
// (it's set to DXGI_FORMAT_UNKNOWN by default so it will always happen for the first time)
|
||||
if (adapter.graphicsPipeline.RTVFormats[0] != rtvFormat) {
|
||||
adapter.graphicsPipeline.RTVFormats[0] = rtvFormat;
|
||||
|
||||
adapter.pPSO = pD3D12Root->PLCacheGetGraphicsPipeline (adapterID, adapter.graphicsPipeline);
|
||||
updatePSO = true;
|
||||
}
|
||||
|
||||
if (updatePSO) {
|
||||
pCmdList->SetPipelineState (adapter.pPSO);
|
||||
}
|
||||
|
||||
// Handle resource transition barriers
|
||||
{
|
||||
D3D12_RESOURCE_BARRIER barriers[4];
|
||||
UInt32 numBarriers = 0;
|
||||
|
||||
// If the glass texture is not in a pixel shader source state then let's transition it into that
|
||||
if ((adapter.glassTexState & D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE) == 0) {
|
||||
IAddTransitionBarrier (adapter.pGlassTexture, adapter.glassTexState, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE, barriers, numBarriers++);
|
||||
adapter.glassTexState = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE;
|
||||
}
|
||||
// If the incoming texture is not in a pixel shader source state
|
||||
if ((iCtx.srcTextureState & D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE) == 0) {
|
||||
IAddTransitionBarrier (iCtx.pSrcTexture, iCtx.srcTextureState, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE, barriers, numBarriers++);
|
||||
}
|
||||
// If the dst texture is not in rendertarget state
|
||||
if ((renderTargetState & D3D12_RESOURCE_STATE_RENDER_TARGET) == 0) {
|
||||
IAddTransitionBarrier (oCtx.pOutputTexture, renderTargetState, D3D12_RESOURCE_STATE_RENDER_TARGET, barriers, numBarriers++);
|
||||
}
|
||||
if (numBarriers != 0) {
|
||||
pCmdList->ResourceBarrier (numBarriers, barriers);
|
||||
}
|
||||
}
|
||||
|
||||
if (forceUpdate) {
|
||||
pCmdList->IASetPrimitiveTopology (D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
|
||||
// Update our tiny root-inline constant buffer
|
||||
pCmdList->SetGraphicsRoot32BitConstants (1, 4, &rootPSConstBuffer, 0);
|
||||
}
|
||||
|
||||
// The things below can change independently on the cmd list state so we must always have to update them unconditionally
|
||||
// The auto cmd list itself filters out a lot of redundant calls so it's not a big problem anyway
|
||||
|
||||
// The allocator of the vertex buffer can return a new video memory location when locking with discarding
|
||||
D3D12_VERTEX_BUFFER_VIEW vbView[] =
|
||||
{
|
||||
lData.gpuAddress, VBUFFER_VERTEXCNT * sizeof (Vertex), sizeof (Vertex)
|
||||
};
|
||||
pCmdList->IASetVertexBuffers (0, 1, vbView);
|
||||
|
||||
// The descriptor ring buffer allocator can return an address in a physical heap other than the latest one
|
||||
pCmdList->SetDescriptorHeaps (1, &rdData.pHeap);
|
||||
pCmdList->SetGraphicsRootDescriptorTable (0, rdData.gpuDescHandle);
|
||||
|
||||
// Even the render target and the destination rects can change depending on the current state of dgVoodoo swapchain
|
||||
pCmdList->OMSetRenderTargets (1, &rtvCPUHandle, TRUE, NULL);
|
||||
pCmdList->RSSetScissorRects (1, &dstRect);
|
||||
D3D12_VIEWPORT vp = { (FLOAT) dstRect.left, (FLOAT) dstRect.top,
|
||||
(FLOAT) (dstRect.right - dstRect.left),
|
||||
(FLOAT) (dstRect.bottom - dstRect.top),
|
||||
0.0f, 1.0f };
|
||||
pCmdList->RSSetViewports (1, &vp);
|
||||
pCmdList->DrawInstanced (4, 1, adapter.vbPos, 0);
|
||||
adapter.vbPos += 4;
|
||||
|
||||
// We do not force a flush here because it's unneeded. Commiting short command lists to execution degrades performance anyway.
|
||||
// Let dgVoodoo continue writing into the command list and handle the flush scenario.
|
||||
pCmdListAuto->AFlushUnlock ();
|
||||
|
||||
// If everything happened as expected then we can tell dgVoodoo to take the result of this hook method into account
|
||||
// Otherwise, if we don't reach this point then just return false to tell the opposite
|
||||
succeeded = true;
|
||||
}
|
||||
|
||||
// Make sure to 'unlock' the vertex buffer because subsequent Lock calls in a locked state will return with unsuccesful allocation
|
||||
adapter.pVertexBuffer->Unlock ();
|
||||
}
|
||||
}
|
||||
return succeeded;
|
||||
}
|
||||
|
||||
|
||||
void Presenter::D3D12SwapchainPresentEnd (UInt32 /*adapterID*/, const PresentEndContextInput& iCtx)
|
||||
{
|
||||
// The source image has been drawn into the swapchain and set to the expected resource state (if it was required) and that's the point
|
||||
// where this callback gets called
|
||||
// We get a valid non-NULL destination texture in iCtx.drawingTarget and could draw something extra into the swapchain (like some overlay data) here
|
||||
// but we do not draw anything in this sample
|
||||
}
|
||||
|
||||
|
||||
bool Presenter::Init ()
|
||||
{
|
||||
if (IParsePresenterINISection ()) {
|
||||
if (main.pAddonMainCB->RegisterForCallback (IID_D3D12RootObserver, static_cast<ID3D12RootObserver*> (this))) {
|
||||
|
||||
InitializeCriticalSection (&lock);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void Presenter::Exit ()
|
||||
{
|
||||
DeleteCriticalSection (&lock);
|
||||
main.pAddonMainCB->UnregisterForCallback (IID_D3D12RootObserver, static_cast<ID3D12RootObserver*> (this));
|
||||
}
|
||||
|
||||
|
138
dgVoodooAPI/Samples/D3D12 Addon/Presenter.hpp
Normal file
138
dgVoodooAPI/Samples/D3D12 Addon/Presenter.hpp
Normal file
@ -0,0 +1,138 @@
|
||||
// *****************************************************************************
|
||||
// File: Presenter.hpp
|
||||
//
|
||||
// Description: D3D12 presentation hook implementation of dgVoodoo Addon DLL
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include "Public\Addon\ID3D12RootObserver.hpp"
|
||||
#include "ImageLoader.hpp"
|
||||
#include <unordered_map>
|
||||
|
||||
// --- Namespaces --------------------------------------------------------------
|
||||
|
||||
using namespace dgVoodoo;
|
||||
|
||||
// --- Predeclarations ---------------------------------------------------------
|
||||
|
||||
class AddonMain;
|
||||
|
||||
// --- Presenter ---------------------------------------------------------------
|
||||
|
||||
class Presenter: public ID3D12RootObserver
|
||||
{
|
||||
protected:
|
||||
struct SwapchainEntry
|
||||
{
|
||||
// Here we could cache our resources associated with particular swapchains
|
||||
// But there are no own-factored resources in this sample addon so this structure is empty
|
||||
// and serves only demonstration purposes
|
||||
ID3D12Swapchain* pSwapchain;
|
||||
ID3D12Root::SwapchainData properties;
|
||||
};
|
||||
|
||||
struct AdapterData
|
||||
{
|
||||
UInt32 adapterID;
|
||||
|
||||
ID3D12Device* pDevice;
|
||||
ID3D12RootSignature* pRootSignature;
|
||||
ID3D12ResourceDescAllocator* pSRVDescAllocator;
|
||||
|
||||
ID3D12Resource* pGlassTexture;
|
||||
UInt32 hGlassTexSRV;
|
||||
D3D12_RESOURCE_STATES glassTexState;
|
||||
|
||||
ID3D12Root::GraphicsPLDesc graphicsPipeline;
|
||||
ID3D12PipelineState* pPSO;
|
||||
ID3D12Buffer* pVertexBuffer;
|
||||
UInt32 vbPos;
|
||||
|
||||
std::unordered_map<ID3D12Swapchain*, SwapchainEntry> swapchains;
|
||||
|
||||
AdapterData ();
|
||||
};
|
||||
|
||||
struct Vertex
|
||||
{
|
||||
float pX, pY;
|
||||
float tU, tV;
|
||||
};
|
||||
|
||||
struct RootPSConstBuffer
|
||||
{
|
||||
float sepiaColorR;
|
||||
float sepiaColorG;
|
||||
float sepiaColorB;
|
||||
float colorIntensity;
|
||||
};
|
||||
|
||||
protected:
|
||||
AddonMain& main;
|
||||
ID3D12Root* pD3D12Root;
|
||||
CRITICAL_SECTION lock;
|
||||
std::unordered_map<UInt32, AdapterData> adapters;
|
||||
|
||||
ImageLoader::ImageData glassImage;
|
||||
ID3DBlob* pVSQuad;
|
||||
ID3DBlob* pPSGlass;
|
||||
RootPSConstBuffer rootPSConstBuffer;
|
||||
|
||||
UInt32 sectionIdx;
|
||||
const char* pGlassFilePath;
|
||||
UInt32 sepiaColor;
|
||||
|
||||
const static D3D12_BLEND_DESC defaultBlendDesc;
|
||||
const static D3D12_RASTERIZER_DESC defaultRasterizerDesc;
|
||||
const static D3D12_DEPTH_STENCIL_DESC defaultDepthStencilDesc;
|
||||
const static D3D12_INPUT_ELEMENT_DESC deaultInputLayout[];
|
||||
|
||||
protected:
|
||||
void ITakeLock ();
|
||||
void IReleaseLock ();
|
||||
|
||||
AdapterData& GetAdapterRef (UInt32 adapterID);
|
||||
void EraseAdapter (UInt32 adapterID);
|
||||
|
||||
bool IParsePresenterINISection ();
|
||||
|
||||
bool ILoadShaders ();
|
||||
bool ICreateRootSignature (AdapterData& adapter);
|
||||
void IReleaseRootSignature (AdapterData& adapter);
|
||||
bool ICreateGlassTexture (AdapterData& adapter);
|
||||
void IReleaseGlassTexture (AdapterData& adapter);
|
||||
|
||||
void ICleanUpAdapter (AdapterData& adapter);
|
||||
|
||||
void IAddTransitionBarrier (ID3D12Resource* pResource, UINT stateBefore, UINT stateAfter, D3D12_RESOURCE_BARRIER* pBarriers, UInt32 numBarriers);
|
||||
|
||||
protected:
|
||||
|
||||
// --- ID3D12RootObserver callbacks
|
||||
|
||||
virtual bool D3D12RootCreated (HMODULE hD3D12Dll, ID3D12Root* pD3D12Root) override;
|
||||
virtual void D3D12RootReleased (const ID3D12Root* pD3D12Root) override;
|
||||
|
||||
virtual bool D3D12BeginUsingAdapter (UInt32 adapterID) override;
|
||||
virtual void D3D12EndUsingAdapter (UInt32 adapterID) override;
|
||||
|
||||
virtual void D3D12SwapchainCreated (UInt32 adapterID, ID3D12Swapchain* pSwapchain, const ID3D12Root::SwapchainData& swapchainData) override;
|
||||
virtual void D3D12SwapchainChanged (UInt32 adapterID, ID3D12Swapchain* pSwapchain, const ID3D12Root::SwapchainData& swapchainData) override;
|
||||
virtual void D3D12SwapchainReleased (UInt32 adapterID, ID3D12Swapchain* pSwapchain) override;
|
||||
|
||||
virtual bool D3D12SwapchainPresentBegin (UInt32 adapterID, const PresentBeginContextInput& iCtx, PresentBeginContextOutput& oCtx) override;
|
||||
virtual void D3D12SwapchainPresentEnd (UInt32 adapterID, const PresentEndContextInput& iCtx) override;
|
||||
|
||||
public:
|
||||
Presenter (AddonMain& main);
|
||||
~Presenter ();
|
||||
|
||||
bool Init ();
|
||||
void Exit ();
|
||||
|
||||
void SetINISectionIdx (UInt32 idx) { sectionIdx = idx; }
|
||||
};
|
BIN
dgVoodooAPI/Samples/D3D12 Addon/Resource.h
Normal file
BIN
dgVoodooAPI/Samples/D3D12 Addon/Resource.h
Normal file
Binary file not shown.
BIN
dgVoodooAPI/Samples/D3D12 Addon/Resource.rc
Normal file
BIN
dgVoodooAPI/Samples/D3D12 Addon/Resource.rc
Normal file
Binary file not shown.
16
dgVoodooAPI/Samples/D3D12 Addon/SampleAddon.ini
Normal file
16
dgVoodooAPI/Samples/D3D12 Addon/SampleAddon.ini
Normal file
@ -0,0 +1,16 @@
|
||||
;
|
||||
; INI file for Sample addon
|
||||
;
|
||||
|
||||
[Presenter]
|
||||
|
||||
; GlassImage: The path of the glass image texture - if no value is specified then the default 'DirtyGlass.png' will be used
|
||||
; SepiaColor: A 32 bit ARGB value, "A" specifies the intensity of the original image color, "RGB" specifies the sepia color
|
||||
; If no value is specified then the default will be used
|
||||
|
||||
GlassImage = DirtyGlass.png
|
||||
SepiaColor = 0x40F1AE72
|
||||
|
||||
[Texturer]
|
||||
|
||||
; nothing here
|
616
dgVoodooAPI/Samples/D3D12 Addon/SampleAddon.vcxproj
Normal file
616
dgVoodooAPI/Samples/D3D12 Addon/SampleAddon.vcxproj
Normal file
@ -0,0 +1,616 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|ARM64EC">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64EC</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64EC">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64EC</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Spec Release|ARM64">
|
||||
<Configuration>Spec Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Spec Release|ARM64EC">
|
||||
<Configuration>Spec Release</Configuration>
|
||||
<Platform>ARM64EC</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Spec Release|Win32">
|
||||
<Configuration>Spec Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Spec Release|x64">
|
||||
<Configuration>Spec Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="AddonMain.hpp" />
|
||||
<ClInclude Include="ImageLoader.hpp" />
|
||||
<ClInclude Include="Presenter.hpp" />
|
||||
<ClInclude Include="Resource.h" />
|
||||
<ClInclude Include="Texturer.hpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="AddonMain.cpp" />
|
||||
<ClCompile Include="ImageLoader.cpp" />
|
||||
<ClCompile Include="Main.cpp" />
|
||||
<ClCompile Include="Presenter.cpp" />
|
||||
<ClCompile Include="Texturer.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="Resource.rc" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}</ProjectGuid>
|
||||
<RootNamespace>Direct3D</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>SampleAddon</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64EC'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64EC'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Spec Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Spec Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Spec Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Spec Release|ARM64EC'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64EC'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64EC'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Spec Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Spec Release|ARM64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Spec Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Spec Release|ARM64EC'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>$(SolutionDir)\Bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\Bin\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<OutDir>$(SolutionDir)\Bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\Bin\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<OutDir>$(SolutionDir)\Bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\Bin\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64EC'">
|
||||
<OutDir>$(SolutionDir)\Bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\Bin\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>$(SolutionDir)\Bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\Bin\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<OutDir>$(SolutionDir)\Bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\Bin\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<OutDir>$(SolutionDir)\Bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\Bin\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64EC'">
|
||||
<OutDir>$(SolutionDir)\Bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\Bin\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Spec Release|Win32'">
|
||||
<OutDir>$(SolutionDir)\Bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\Bin\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Spec Release|ARM64'">
|
||||
<OutDir>$(SolutionDir)\Bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\Bin\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Spec Release|x64'">
|
||||
<OutDir>$(SolutionDir)\Bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\Bin\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Spec Release|ARM64EC'">
|
||||
<OutDir>$(SolutionDir)\Bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\Bin\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<AdditionalOptions>/Zc:threadSafeInit- /D_APIDLL %(AdditionalOptions)</AdditionalOptions>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_WINDLL;BUILD_AS_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\x86\</AdditionalLibraryDirectories>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>dgVoodooAddon.lib;dxguid.lib;kernel32.lib;user32.lib;gdi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories></AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<AdditionalOptions>/Zc:threadSafeInit- /D_APIDLL %(AdditionalOptions)</AdditionalOptions>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_WINDLL;BUILD_AS_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\arm64\</AdditionalLibraryDirectories>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>dgVoodooAddon.lib;dxguid.lib;kernel32.lib;user32.lib;gdi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories></AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<AdditionalOptions>/Zc:threadSafeInit- /D_APIDLL %(AdditionalOptions)</AdditionalOptions>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_WINDLL;BUILD_AS_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\x64\</AdditionalLibraryDirectories>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>dgVoodooAddon.lib;dxguid.lib;kernel32.lib;user32.lib;gdi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories></AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64EC'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<AdditionalOptions>/Zc:threadSafeInit- /D_APIDLL %(AdditionalOptions)</AdditionalOptions>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_WINDLL;BUILD_AS_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\arm64ec\</AdditionalLibraryDirectories>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>dgVoodooAddon.lib;dxguid.lib;kernel32.lib;user32.lib;gdi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories></AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
<AdditionalOptions>/Zc:threadSafeInit- /D_APIDLL /D_NO_CRT_STDIO_INLINE /D _CRT_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>_WINDLL;BUILD_AS_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\x86\</AdditionalLibraryDirectories>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>dgVoodooAddon.lib;dxguid.lib;kernel32.lib;user32.lib;gdi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories></AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
<AdditionalOptions>/Zc:threadSafeInit- /D_APIDLL /D_NO_CRT_STDIO_INLINE /D _CRT_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>_WINDLL;BUILD_AS_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\arm64\</AdditionalLibraryDirectories>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>dgVoodooAddon.lib;dxguid.lib;kernel32.lib;user32.lib;gdi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories></AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
<AdditionalOptions>/Zc:threadSafeInit- /D_APIDLL /D_NO_CRT_STDIO_INLINE /D _CRT_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>_WINDLL;BUILD_AS_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\x64\</AdditionalLibraryDirectories>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>dgVoodooAddon.lib;dxguid.lib;kernel32.lib;user32.lib;gdi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories></AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64EC'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
<AdditionalOptions>/Zc:threadSafeInit- /D_APIDLL /D_NO_CRT_STDIO_INLINE /D _CRT_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>_WINDLL;BUILD_AS_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\arm64ec\</AdditionalLibraryDirectories>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>dgVoodooAddon.lib;dxguid.lib;kernel32.lib;user32.lib;gdi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories></AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Spec Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
<AdditionalOptions>/Zc:threadSafeInit- /D_APIDLL /D_SPEC /D_NO_CRT_STDIO_INLINE /D _CRT_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>_WINDLL;BUILD_AS_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\x86\</AdditionalLibraryDirectories>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>dgVoodooAddon.lib;dxguid.lib;kernel32.lib;user32.lib;gdi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories></AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Spec Release|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
<AdditionalOptions>/Zc:threadSafeInit- /D_APIDLL /D_SPEC /D_NO_CRT_STDIO_INLINE /D _CRT_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>_WINDLL;BUILD_AS_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\arm64\</AdditionalLibraryDirectories>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>dgVoodooAddon.lib;dxguid.lib;kernel32.lib;user32.lib;gdi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories></AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Spec Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
<AdditionalOptions>/Zc:threadSafeInit- /D_APIDLL /D_SPEC /D_NO_CRT_STDIO_INLINE /D _CRT_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>_WINDLL;BUILD_AS_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\x64\</AdditionalLibraryDirectories>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>dgVoodooAddon.lib;dxguid.lib;kernel32.lib;user32.lib;gdi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories></AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Spec Release|ARM64EC'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\Inc\</AdditionalIncludeDirectories>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
<AdditionalOptions>/Zc:threadSafeInit- /D_APIDLL /D_SPEC /D_NO_CRT_STDIO_INLINE /D _CRT_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>_WINDLL;BUILD_AS_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\Lib\arm64ec\</AdditionalLibraryDirectories>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>dgVoodooAddon.lib;dxguid.lib;kernel32.lib;user32.lib;gdi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>1</AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
53
dgVoodooAPI/Samples/D3D12 Addon/SampleAddon.vcxproj.filters
Normal file
53
dgVoodooAPI/Samples/D3D12 Addon/SampleAddon.vcxproj.filters
Normal file
@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{83ab2fbb-6f6a-43cc-8a01-251d7ac36e42}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{fd3639d3-d580-463c-87e1-0d9f83ead4e1}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{a0fab181-8327-4625-8501-52c15fa03b61}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="AddonMain.hpp">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ImageLoader.hpp">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Presenter.hpp">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Resource.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Texturer.hpp">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="AddonMain.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ImageLoader.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Main.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Presenter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Texturer.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="Resource.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
2
dgVoodooAPI/Samples/D3D12 Addon/Shaders/Make.bat
Normal file
2
dgVoodooAPI/Samples/D3D12 Addon/Shaders/Make.bat
Normal file
@ -0,0 +1,2 @@
|
||||
fxc /Tvs_5_1 /Qstrip_reflect /Qstrip_debug /FoVSQuad.vso VSQuad.hlsl
|
||||
fxc /Tps_5_1 /Qstrip_reflect /Qstrip_debug /FoPSGlass.pso PSGlass.hlsl
|
52
dgVoodooAPI/Samples/D3D12 Addon/Shaders/PSGlass.hlsl
Normal file
52
dgVoodooAPI/Samples/D3D12 Addon/Shaders/PSGlass.hlsl
Normal file
@ -0,0 +1,52 @@
|
||||
// *****************************************************************************
|
||||
// File: PSGlass.hlsl
|
||||
//
|
||||
// Description: Pixel shader used for drawing the glassified quad
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
// --- Input signature ---------------------------------------------------------
|
||||
|
||||
struct INPUT
|
||||
{
|
||||
float4 pos : SV_POSITION;
|
||||
float2 srcTexUV : TEXCOORD0;
|
||||
};
|
||||
|
||||
// --- Output signature --------------------------------------------------------
|
||||
|
||||
struct OUTPUT
|
||||
{
|
||||
float4 color0 : SV_TARGET0;
|
||||
};
|
||||
|
||||
// --- Resources ---------------------------------------------------------------
|
||||
|
||||
SamplerState samplerPt : register (s0);
|
||||
SamplerState samplerBi : register (s1);
|
||||
Texture2D<float4> textures[2] : register (t3, space1);
|
||||
|
||||
cbuffer RootPSConstBuffer : register (b0, space2)
|
||||
{
|
||||
float3 sepiaColor;
|
||||
float colorIntensity;
|
||||
}
|
||||
|
||||
// --- Shader code -------------------------------------------------------------
|
||||
|
||||
OUTPUT main (INPUT i)
|
||||
{
|
||||
const float3 bwFactors = float3 (0.3125f, 0.5f, 0.1875f);
|
||||
OUTPUT o;
|
||||
|
||||
float4 t1 = textures[1].Sample (samplerBi, i.srcTexUV);
|
||||
float4 t0 = textures[0].Sample (samplerPt, i.srcTexUV);
|
||||
|
||||
t0.rgb = lerp (dot (t0.rgb, bwFactors), t0.rgb, colorIntensity) * sepiaColor;
|
||||
|
||||
o.color0 = lerp (t0, t1, t1.a);
|
||||
|
||||
return o;
|
||||
}
|
BIN
dgVoodooAPI/Samples/D3D12 Addon/Shaders/PSGlass.pso
Normal file
BIN
dgVoodooAPI/Samples/D3D12 Addon/Shaders/PSGlass.pso
Normal file
Binary file not shown.
37
dgVoodooAPI/Samples/D3D12 Addon/Shaders/VSQuad.hlsl
Normal file
37
dgVoodooAPI/Samples/D3D12 Addon/Shaders/VSQuad.hlsl
Normal file
@ -0,0 +1,37 @@
|
||||
// *****************************************************************************
|
||||
// File: VSQuad.hlsl
|
||||
//
|
||||
// Description: Vertex shader used for drawing the textured quad
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
// --- Input signature ---------------------------------------------------------
|
||||
|
||||
struct INPUT
|
||||
{
|
||||
float2 pos : POSITION0;
|
||||
float2 srcTexUV : TEXCOORD0;
|
||||
};
|
||||
|
||||
// --- Output signature --------------------------------------------------------
|
||||
|
||||
struct OUTPUT
|
||||
{
|
||||
float4 pos : SV_POSITION;
|
||||
float2 srcTexUV : TEXCOORD0;
|
||||
};
|
||||
|
||||
// --- Resources ---------------------------------------------------------------
|
||||
|
||||
// --- Shader code -------------------------------------------------------------
|
||||
|
||||
OUTPUT main (INPUT i)
|
||||
{
|
||||
OUTPUT o;
|
||||
o.pos = float4 (i.pos, 0.0f, 1.0f);
|
||||
o.srcTexUV = i.srcTexUV;
|
||||
|
||||
return o;
|
||||
}
|
BIN
dgVoodooAPI/Samples/D3D12 Addon/Shaders/VSQuad.vso
Normal file
BIN
dgVoodooAPI/Samples/D3D12 Addon/Shaders/VSQuad.vso
Normal file
Binary file not shown.
155
dgVoodooAPI/Samples/D3D12 Addon/Texturer.cpp
Normal file
155
dgVoodooAPI/Samples/D3D12 Addon/Texturer.cpp
Normal file
@ -0,0 +1,155 @@
|
||||
// *****************************************************************************
|
||||
// File: Texturer.cpp
|
||||
//
|
||||
// Description: Texturer implementation of dgVoodoo Addon DLL
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include "AddonMain.hpp"
|
||||
|
||||
// --- Texturer ----------------------------------------------------------------
|
||||
|
||||
Texturer::Texturer (AddonMain& main):
|
||||
main (main)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
Texturer::~Texturer ()
|
||||
{
|
||||
Exit ();
|
||||
}
|
||||
|
||||
// --- Statics
|
||||
|
||||
const char* Texturer::formatIdxToStr[] = {
|
||||
|
||||
"P8", "RGB565", "XRGB555", "ARGB1555", "ARGB4444", "XRGB8888", "ARGB8888", "L8", "A8", "A8L8", "V8U8", "L6V5U5", "L8V8U8",
|
||||
"Q8W8V8U8", "DXTC1", "DXTC2", "DXTC3", "DXTC4", "DXTC5", "UYVY", "YUY2", "ARGB2101010", "L16", "R16G16", "U16V16", "R16G16B16A16",
|
||||
"R16F", "R16G16F", "R16G16B16A16F", "R32F", "R32G32F", "R32G32B32A32F", "BC4", "BC5",
|
||||
"Z16", "Z24", "Z24S8", "Z24X4S4", "Z32"
|
||||
};
|
||||
|
||||
|
||||
// --- ID3DObserver callbacks
|
||||
|
||||
bool Texturer::D3DObjectCreated (ID3D* pD3D)
|
||||
{
|
||||
ID3D::ObjectType type = pD3D->GetObjectType ();
|
||||
|
||||
const static char* pObjectTypeStrs[] = { "Direct3D (DirectDraw)", "Direct3D8", "Direct3D9" };
|
||||
|
||||
main.pAddonMainCB->IssueInfo (&main, "D3D object (%p) is created. Object type is %s.\n", pD3D, pObjectTypeStrs[type]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void Texturer::D3DObjectReleased (const ID3D* pD3D)
|
||||
{
|
||||
main.pAddonMainCB->IssueInfo (&main, "D3D object (%p) is released.\n", pD3D);
|
||||
}
|
||||
|
||||
|
||||
// --- ID3DDeviceObserver callbacks
|
||||
|
||||
bool Texturer::D3DDeviceObjectCreated (ID3DDevice* pD3DDevice)
|
||||
{
|
||||
ID3DDevice::ObjectType type = pD3DDevice->GetObjectType ();
|
||||
|
||||
const static char* pObjectTypeStrs[] = { "Direct3DDevice", "Direct3D8Device", "Direct3D9Device" };
|
||||
|
||||
main.pAddonMainCB->IssueInfo (&main, "D3DDevice object (%p) is created. Object type is %s.\n", pD3DDevice, pObjectTypeStrs[type]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void Texturer::D3DDeviceObjectReleased (const ID3DDevice* pD3DDevice)
|
||||
{
|
||||
main.pAddonMainCB->IssueInfo (&main, "D3DDevice object (%p) is released.\n", pD3DDevice);
|
||||
}
|
||||
|
||||
// --- ID3DResourceObserver callbacks
|
||||
|
||||
bool Texturer::TextureCreated (ID3D* pD3D, ID3DResource* pTexture)
|
||||
{
|
||||
{
|
||||
ID3DResource::Desc desc = pTexture->ARGetDesc ();
|
||||
main.pAddonMainCB->IssueInfo (&main, "D3D Texture (%p) is created. D3D = %p, width = %d, height = %d, mipmaplevels = %d, format = %s\n",
|
||||
pTexture, pD3D, desc.width, desc.height, desc.mipMapNum, formatIdxToStr[desc.format]);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Texturer::CubeTextureCreated (ID3D* pD3D, ID3DResource* pTexture)
|
||||
{
|
||||
{
|
||||
ID3DResource::Desc desc = pTexture->ARGetDesc ();
|
||||
main.pAddonMainCB->IssueInfo (&main, "D3D Cube Texture (%p) is created. D3D = %p, width = %d, height = %d, mipmaplevels = %d, format = %s\n",
|
||||
pTexture, pD3D, desc.width, desc.height, desc.mipMapNum, formatIdxToStr[desc.format]);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool Texturer::VolumeTextureCreated (ID3D* pD3D, ID3DResource* pTexture)
|
||||
{
|
||||
{
|
||||
ID3DResource::Desc desc = pTexture->ARGetDesc ();
|
||||
main.pAddonMainCB->IssueInfo (&main, "D3D Volume Texture (%p) is created. D3D = %p, width = %d, height = %d, depth = %d, mipmaplevels = %d, format = %s (unhooked resource)\n",
|
||||
pTexture, pD3D, desc.width, desc.height, desc.depth, desc.mipMapNum, formatIdxToStr[desc.format]);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void Texturer::TextureReleased (ID3D* pD3D, const ID3DResource* pTexture)
|
||||
{
|
||||
main.pAddonMainCB->IssueInfo (&main, "D3D Texture (%p) is released. D3D = %p\n", pTexture, pD3D);
|
||||
}
|
||||
|
||||
|
||||
void Texturer::CubeTextureReleased (ID3D* pD3D, const ID3DResource* pTexture)
|
||||
{
|
||||
main.pAddonMainCB->IssueInfo (&main, "D3D Cube Texture (%p) is released. D3D = %p\n", pTexture, pD3D);
|
||||
}
|
||||
|
||||
|
||||
void Texturer::VolumeTextureReleased (ID3D* pD3D, const ID3DResource* pTexture)
|
||||
{
|
||||
main.pAddonMainCB->IssueInfo (&main, "D3D Volume Texture (%p) is released. D3D = %p\n", pTexture, pD3D);
|
||||
}
|
||||
|
||||
// ---
|
||||
|
||||
bool Texturer::Init ()
|
||||
{
|
||||
if (main.pAddonMainCB->RegisterForCallback (IID_D3DObserver, static_cast<ID3DObserver*> (this))) {
|
||||
if (main.pAddonMainCB->RegisterForCallback (IID_D3DDeviceObserver, static_cast<ID3DDeviceObserver*> (this))) {
|
||||
if (main.pAddonMainCB->RegisterForCallback(IID_D3DResourceObserver, static_cast<ID3DResourceObserver*> (this))) {
|
||||
|
||||
return true;
|
||||
}
|
||||
main.pAddonMainCB->UnregisterForCallback (IID_D3DDeviceObserver, static_cast<ID3DDeviceObserver*> (this));
|
||||
}
|
||||
main.pAddonMainCB->UnregisterForCallback (IID_D3DObserver, static_cast<ID3DObserver*> (this));
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void Texturer::Exit ()
|
||||
{
|
||||
main.pAddonMainCB->UnregisterForCallback (IID_D3DResourceObserver, static_cast<ID3DResourceObserver*> (this));
|
||||
main.pAddonMainCB->UnregisterForCallback (IID_D3DDeviceObserver, static_cast<ID3DDeviceObserver*> (this));
|
||||
main.pAddonMainCB->UnregisterForCallback (IID_D3DObserver, static_cast<ID3DObserver*> (this));
|
||||
}
|
65
dgVoodooAPI/Samples/D3D12 Addon/Texturer.hpp
Normal file
65
dgVoodooAPI/Samples/D3D12 Addon/Texturer.hpp
Normal file
@ -0,0 +1,65 @@
|
||||
// *****************************************************************************
|
||||
// File: Texturer.hpp
|
||||
//
|
||||
// Description: Texturer implementation of dgVoodoo Addon DLL
|
||||
//
|
||||
// Contact person: DG
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
// --- Includes ----------------------------------------------------------------
|
||||
|
||||
#include "Public\Addon\ID3DObserver.hpp"
|
||||
#include "Public\Addon\ID3DDeviceObserver.hpp"
|
||||
#include "Public\Addon\ID3DResourceObserver.hpp"
|
||||
|
||||
// --- Namespaces --------------------------------------------------------------
|
||||
|
||||
using namespace dgVoodoo;
|
||||
|
||||
// --- Predeclarations ---------------------------------------------------------
|
||||
|
||||
class AddonMain;
|
||||
|
||||
// --- Texturer ----------------------------------------------------------------
|
||||
|
||||
class Texturer: public ID3DObserver,
|
||||
public ID3DDeviceObserver,
|
||||
public ID3DResourceObserver
|
||||
{
|
||||
protected:
|
||||
|
||||
static const char* formatIdxToStr[];
|
||||
|
||||
protected:
|
||||
AddonMain& main;
|
||||
|
||||
protected:
|
||||
|
||||
// --- ID3DObserver callbacks
|
||||
|
||||
virtual bool D3DObjectCreated (ID3D* pD3D) override;
|
||||
virtual void D3DObjectReleased (const ID3D* pD3D) override;
|
||||
|
||||
// --- ID3DDeviceObserver callbacks
|
||||
|
||||
virtual bool D3DDeviceObjectCreated (ID3DDevice* pD3DDevice);
|
||||
virtual void D3DDeviceObjectReleased (const ID3DDevice* pD3DDevice);
|
||||
|
||||
// --- ID3DResourceObserver callbacks
|
||||
|
||||
virtual bool TextureCreated (ID3D* pD3D, ID3DResource* pTexture);
|
||||
virtual bool CubeTextureCreated (ID3D* pD3D, ID3DResource* pTexture);
|
||||
virtual bool VolumeTextureCreated (ID3D* pD3D, ID3DResource* pTexture);
|
||||
|
||||
virtual void TextureReleased (ID3D* pD3D, const ID3DResource* pTexture);
|
||||
virtual void CubeTextureReleased (ID3D* pD3D, const ID3DResource* pTexture);
|
||||
virtual void VolumeTextureReleased (ID3D* pD3D, const ID3DResource* pTexture);
|
||||
|
||||
public:
|
||||
Texturer (AddonMain& main);
|
||||
~Texturer ();
|
||||
|
||||
bool Init ();
|
||||
void Exit ();
|
||||
};
|
81
dgVoodooAPI/Samples/Samples.sln
Normal file
81
dgVoodooAPI/Samples/Samples.sln
Normal file
@ -0,0 +1,81 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.4.33122.133
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SampleAddon", "D3D12 Addon\SampleAddon.vcxproj", "{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "APILibrary", "API Library\APILibrary.vcxproj", "{CD7EACA5-A639-4264-9F8D-5044F8489A15}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|ARM64 = Debug|ARM64
|
||||
Debug|ARM64EC = Debug|ARM64EC
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|ARM64 = Release|ARM64
|
||||
Release|ARM64EC = Release|ARM64EC
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
Spec Release|ARM64 = Spec Release|ARM64
|
||||
Spec Release|ARM64EC = Spec Release|ARM64EC
|
||||
Spec Release|x64 = Spec Release|x64
|
||||
Spec Release|x86 = Spec Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Debug|ARM64EC.Build.0 = Debug|ARM64EC
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Debug|x64.Build.0 = Debug|x64
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Debug|x86.Build.0 = Debug|Win32
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Release|ARM64EC.ActiveCfg = Release|ARM64EC
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Release|ARM64EC.Build.0 = Release|ARM64EC
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Release|x64.ActiveCfg = Release|x64
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Release|x64.Build.0 = Release|x64
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Release|x86.ActiveCfg = Release|Win32
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Release|x86.Build.0 = Release|Win32
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Spec Release|ARM64.ActiveCfg = Spec Release|ARM64
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Spec Release|ARM64.Build.0 = Spec Release|ARM64
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Spec Release|ARM64EC.ActiveCfg = Spec Release|ARM64EC
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Spec Release|ARM64EC.Build.0 = Spec Release|ARM64EC
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Spec Release|x64.ActiveCfg = Spec Release|x64
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Spec Release|x64.Build.0 = Spec Release|x64
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Spec Release|x86.ActiveCfg = Spec Release|Win32
|
||||
{9B08A494-4E40-4A58-BE34-A2ECC47AB22B}.Spec Release|x86.Build.0 = Spec Release|Win32
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Debug|ARM64.ActiveCfg = Debug|x64
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Debug|ARM64.Build.0 = Debug|x64
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Debug|ARM64EC.ActiveCfg = Debug|x64
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Debug|ARM64EC.Build.0 = Debug|x64
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Debug|x64.Build.0 = Debug|x64
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Debug|x86.Build.0 = Debug|Win32
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Release|ARM64EC.ActiveCfg = Release|x64
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Release|ARM64EC.Build.0 = Release|x64
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Release|x64.ActiveCfg = Release|x64
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Release|x64.Build.0 = Release|x64
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Release|x86.ActiveCfg = Release|Win32
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Release|x86.Build.0 = Release|Win32
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Spec Release|ARM64.ActiveCfg = Release|x64
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Spec Release|ARM64.Build.0 = Release|x64
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Spec Release|ARM64EC.ActiveCfg = Release|x64
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Spec Release|ARM64EC.Build.0 = Release|x64
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Spec Release|x64.ActiveCfg = Release|x64
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Spec Release|x64.Build.0 = Release|x64
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Spec Release|x86.ActiveCfg = Release|Win32
|
||||
{CD7EACA5-A639-4264-9F8D-5044F8489A15}.Spec Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {40C569D8-BEAA-4C3F-A60F-A6E51F90B653}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
Loading…
x
Reference in New Issue
Block a user