aboutsummaryrefslogtreecommitdiff
path: root/src/dx/context/Device.h
diff options
context:
space:
mode:
authorMiles Macklin <[email protected]>2017-03-10 14:51:31 +1300
committerMiles Macklin <[email protected]>2017-03-10 14:51:31 +1300
commitad3d90fafe5ee79964bdfe1f1e0704c3ffcdfd5f (patch)
tree4cc6f3288363889d7342f7f8407c0251e6904819 /src/dx/context/Device.h
downloadflex-ad3d90fafe5ee79964bdfe1f1e0704c3ffcdfd5f.tar.xz
flex-ad3d90fafe5ee79964bdfe1f1e0704c3ffcdfd5f.zip
Initial 1.1.0 binary release
Diffstat (limited to 'src/dx/context/Device.h')
-rw-r--r--src/dx/context/Device.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/dx/context/Device.h b/src/dx/context/Device.h
new file mode 100644
index 0000000..c3685a9
--- /dev/null
+++ b/src/dx/context/Device.h
@@ -0,0 +1,75 @@
+#pragma once
+
+#include "Context.h"
+
+#include <d3d11.h>
+#include <d3d11_1.h>
+
+#if ENABLE_D3D12
+#include <d3d12.h>
+#endif
+
+#include <external/nvapi/include/nvapi.h>
+
+#include <dxgi.h>
+#include <string>
+#include <vector>
+
+#define ENABLE_LIVE_DEVICE_OBJECTS_REPORTING 0 // Provides detailed report of D3D object reference counts
+#define USE_NVAPI_DEVICE 0 // Enable this for D3D11 SCG
+
+struct FlexDeviceDesc
+{
+ FlexDeviceDesc() : mDeviceNumber(-1), mDevice(nullptr), mCommandQueue(nullptr), useComputeQueue(false), enablePresent(false) {}
+ virtual ~FlexDeviceDesc() {}
+ unsigned int mDeviceNumber; //!< Compute device number
+ void * mDevice; //!< pointer to existing device
+ void * mCommandQueue; //!< pointer to existing command queue for DX12
+ bool useComputeQueue; //!< Use the compute queue instead of the graphics queue for DX12
+ bool enablePresent; //!< Present after each frame to that APIC and PB dump work
+};
+
+namespace NvFlex
+{
+
+ struct Device : public NvFlexObject
+ {
+ Device();
+ virtual ~Device();
+
+ virtual Context* createContext() = 0;
+
+ virtual NvAPI_Status NvAPI_IsNvShaderExtnOpCodeSupported(NvU32 opCode, bool * pSupported) = 0;
+
+#if ENABLE_AMD_AGS
+ virtual AGSReturnCode AGS_DriverExtensions_Init(AGSContext* agsContext, unsigned int agsApiSlot, unsigned int *extensionsSupported) = 0;
+ virtual void AGS_DeInit(AGSContext* agsContext) = 0;
+#endif
+
+ virtual DXGI_ADAPTER_DESC1 getDXGIAdapter(void* d3ddevice, int & deviceNumber) = 0;
+ virtual DXGI_ADAPTER_DESC1 getDeviceNumber(const LUID adapterID, int & deviceNumber);
+ virtual std::vector<IDXGIAdapter1 *> enumerateDXGIAdapters();
+ virtual void queryDeviceCapabilities(void* d3ddevice);
+
+ virtual void reportLiveDeviceObjects() {}
+
+//#if APIC_CAPTURE
+ virtual void createWindow();
+ virtual void present() = 0;
+
+ WNDCLASSEX mWindowDesc;
+ RECT mWinRect;
+ HWND m_hWnd;
+ IDXGISwapChain* m_swapChain;
+//#endif
+
+ IDXGIFactory1* m_pFactory;
+
+ NvFlexUint mSMCount;
+ std::string mDeviceName;
+ // Gpu Vendor Id
+ GpuVendorId mGpuVendorId;
+ bool mD3D12Device;
+ Context* m_context;
+ };
+}