summaryrefslogtreecommitdiff
path: root/video/IndirectDisplay/IddSampleDriver/Driver.h
diff options
context:
space:
mode:
Diffstat (limited to 'video/IndirectDisplay/IddSampleDriver/Driver.h')
-rw-r--r--video/IndirectDisplay/IddSampleDriver/Driver.h43
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;
+ } ;
}
}