@@ -241,7 +241,7 @@ void SwapChainProcessor::Run()
241
241
// For improved performance, make use of the Multimedia Class Scheduler Service, which will intelligently
242
242
// prioritize this thread for improved throughput in high CPU-load scenarios.
243
243
DWORD AvTask = 0 ;
244
- HANDLE AvTaskHandle = AvSetMmThreadCharacteristics (L" Distribution" , &AvTask);
244
+ HANDLE AvTaskHandle = AvSetMmThreadCharacteristicsW (L" Distribution" , &AvTask);
245
245
246
246
RunCore ();
247
247
@@ -385,6 +385,24 @@ const DISPLAYCONFIG_VIDEO_SIGNAL_INFO IndirectDeviceContext::s_KnownMonitorModes
385
385
{ { 255 , 0 }}, // video standard and vsync divider
386
386
DISPLAYCONFIG_SCANLINE_ORDERING_PROGRESSIVE
387
387
},
388
+ {
389
+ 229009 * KHZ, // pixel clock rate [Hz]
390
+ { 229009 * KHZ, 2560 + 40 }, // fractional horizontal refresh rate [Hz]
391
+ { 229009 * KHZ, (2560 + 40 ) * (1440 + 28 ) }, // fractional vertical refresh rate [Hz]
392
+ { 2560 , 1440 }, // (horizontal, vertical) active pixel resolution
393
+ { 2560 + 40 , 1440 + 28 }, // (horizontal, vertical) total pixel resolution
394
+ { { 255 , 0 }}, // video standard and vsync divider
395
+ DISPLAYCONFIG_SCANLINE_ORDERING_PROGRESSIVE
396
+ },
397
+ {
398
+ 509367 * KHZ, // pixel clock rate [Hz]
399
+ { 509367 * KHZ, 3840 + 40 }, // fractional horizontal refresh rate [Hz]
400
+ { 509367 * KHZ, (3840 + 40 ) * (2160 + 28 ) }, // fractional vertical refresh rate [Hz]
401
+ { 3840 , 2160 }, // (horizontal, vertical) active pixel resolution
402
+ { 3840 + 40 , 2160 + 28 }, // (horizontal, vertical) total pixel resolution
403
+ { { 255 , 0 }}, // video standard and vsync divider
404
+ DISPLAYCONFIG_SCANLINE_ORDERING_PROGRESSIVE
405
+ },
388
406
};
389
407
390
408
// This is a sample monitor EDID - FOR SAMPLE PURPOSES ONLY
@@ -418,7 +436,7 @@ IndirectDeviceContext::~IndirectDeviceContext()
418
436
m_ProcessingThread.reset ();
419
437
}
420
438
421
- #define NUM_VIRTUAL_DISPLAYS 5
439
+ #define NUM_VIRTUAL_DISPLAYS 1
422
440
423
441
void IndirectDeviceContext::InitAdapter ()
424
442
{
@@ -672,16 +690,18 @@ NTSTATUS IddSampleMonitorQueryModes(IDDCX_MONITOR MonitorObject, const IDARG_IN_
672
690
{
673
691
UNREFERENCED_PARAMETER (MonitorObject);
674
692
675
- vector<IDDCX_TARGET_MODE> TargetModes (4 );
693
+ vector<IDDCX_TARGET_MODE> TargetModes (6 );
676
694
677
695
// Create a set of modes supported for frame processing and scan-out. These are typically not based on the
678
696
// monitor's descriptor and instead are based on the static processing capability of the device. The OS will
679
697
// report the available set of modes for a given output as the intersection of monitor modes with target modes.
680
698
681
- CreateTargetMode (TargetModes[0 ], 1920 , 1080 , 60 );
682
- CreateTargetMode (TargetModes[1 ], 1024 , 768 , 60 );
683
- CreateTargetMode (TargetModes[2 ], 800 , 600 , 60 );
684
- CreateTargetMode (TargetModes[3 ], 640 , 480 , 60 );
699
+ CreateTargetMode (TargetModes[0 ], 3840 , 2160 , 60 );
700
+ CreateTargetMode (TargetModes[1 ], 2560 , 1440 , 60 );
701
+ CreateTargetMode (TargetModes[2 ], 1920 , 1080 , 60 );
702
+ CreateTargetMode (TargetModes[3 ], 1024 , 768 , 60 );
703
+ CreateTargetMode (TargetModes[4 ], 800 , 600 , 60 );
704
+ CreateTargetMode (TargetModes[5 ], 640 , 480 , 60 );
685
705
686
706
pOutArgs->TargetModeBufferOutputCount = (UINT)TargetModes.size ();
687
707
@@ -709,4 +729,4 @@ NTSTATUS IddSampleMonitorUnassignSwapChain(IDDCX_MONITOR MonitorObject)
709
729
return STATUS_SUCCESS;
710
730
}
711
731
712
- #pragma endregion
732
+ #pragma endregion
0 commit comments