diff options
Diffstat (limited to 'video/IndirectDisplay/IddSampleDriver/Driver.h')
| -rw-r--r-- | video/IndirectDisplay/IddSampleDriver/Driver.h | 43 |
1 files changed, 31 insertions, 12 deletions
diff --git a/video/IndirectDisplay/IddSampleDriver/Driver.h b/video/IndirectDisplay/IddSampleDriver/Driver.h index df69b0e4..373b5a25 100644 --- a/video/IndirectDisplay/IddSampleDriver/Driver.h +++ b/video/IndirectDisplay/IddSampleDriver/Driver.h @@ -36,6 +36,23 @@ namespace Microsoft /// <summary> /// Manages the creation and lifetime of a Direct3D render device. /// </summary> + struct IndirectSampleMonitor + { + static constexpr size_t szEdidBlock = 128; + static constexpr size_t szModeList = 3; + + const BYTE pEdidBlock[szEdidBlock]; + const struct SampleMonitorMode { + DWORD Width; + DWORD Height; + DWORD VSync; + } pModeList[szModeList]; + const DWORD ulPreferredModeIdx; + }; + + /// <summary> + /// Manages the creation and lifetime of a Direct3D render device. + /// </summary> struct Direct3DDevice { Direct3DDevice(LUID AdapterLuid); @@ -64,7 +81,6 @@ namespace Microsoft void Run(); void RunCore(); - public: IDDCX_SWAPCHAIN m_hSwapChain; std::shared_ptr<Direct3DDevice> m_Device; HANDLE m_hAvailableBufferEvent; @@ -82,22 +98,25 @@ namespace Microsoft virtual ~IndirectDeviceContext(); void InitAdapter(); - void FinishInit(); - - void AssignSwapChain(IDDCX_SWAPCHAIN SwapChain, LUID RenderAdapter, HANDLE NewFrameEvent); - void UnassignSwapChain(); + void FinishInit(UINT ConnectorIndex); protected: - WDFDEVICE m_WdfDevice; IDDCX_ADAPTER m_Adapter; - IDDCX_MONITOR m_Monitor; - - std::unique_ptr<SwapChainProcessor> m_ProcessingThread; + }; + class IndirectMonitorContext + { public: - static const DISPLAYCONFIG_VIDEO_SIGNAL_INFO s_KnownMonitorModes[]; - static const BYTE s_KnownMonitorEdid[]; - }; + IndirectMonitorContext(_In_ IDDCX_MONITOR Monitor); + virtual ~IndirectMonitorContext(); + + void AssignSwapChain(IDDCX_SWAPCHAIN SwapChain, LUID RenderAdapter, HANDLE NewFrameEvent); + void UnassignSwapChain(); + + private: + IDDCX_MONITOR m_Monitor; + std::unique_ptr<SwapChainProcessor> m_ProcessingThread; + } ; } } |
