@@ -469,8 +469,20 @@ namespace bgfx
469469 {
470470 HRESULT hr = S_OK;
471471
472- uint32_t scdFlags = _scd.flags ;
473-
472+ DXGI_SWAP_CHAIN_DESC1 scd;
473+ scd.Width = _scd.width ;
474+ scd.Height = _scd.height ;
475+ scd.Format = _scd.format ;
476+ scd.Stereo = _scd.stereo ;
477+ scd.SampleDesc .Count = 1 ;
478+ scd.SampleDesc .Quality = 0 ;
479+ scd.BufferUsage = _scd.bufferUsage ;
480+ scd.BufferCount = _scd.bufferCount ;
481+ scd.Scaling = _scd.scaling ;
482+ scd.SwapEffect = _scd.swapEffect ;
483+ scd.AlphaMode = _scd.alphaMode ;
484+ scd.Flags = _scd.flags ;
485+
474486#if BX_PLATFORM_LINUX || BX_PLATFORM_WINDOWS
475487 IDXGIFactory5* factory5;
476488 hr = m_factory->QueryInterface (IID_IDXGIFactory5, (void **)&factory5);
@@ -483,8 +495,8 @@ namespace bgfx
483495 hr = factory5->CheckFeatureSupport (DXGI_FEATURE_PRESENT_ALLOW_TEARING, &allowTearing, sizeof (allowTearing) );
484496 BX_TRACE (" Allow tearing is %ssupported." , allowTearing ? " " : " not " );
485497
486- scdFlags |= allowTearing ? DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING : 0 ;
487- scdFlags |= false
498+ scd. Flags |= allowTearing ? DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING : 0 ;
499+ scd. Flags |= false
488500 || _scd.swapEffect == DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL
489501 || _scd.swapEffect == DXGI_SWAP_EFFECT_FLIP_DISCARD
490502 ? 0 // DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT
@@ -496,43 +508,22 @@ namespace bgfx
496508 DX_RELEASE_I (factory5);
497509 }
498510
499- DXGI_SWAP_CHAIN_DESC scd;
500- scd.BufferDesc .Width = _scd.width ;
501- scd.BufferDesc .Height = _scd.height ;
502- scd.BufferDesc .RefreshRate .Numerator = 1 ;
503- scd.BufferDesc .RefreshRate .Denominator = 60 ;
504- scd.BufferDesc .Format = _scd.format ;
505- scd.BufferDesc .ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
506- scd.BufferDesc .Scaling = DXGI_MODE_SCALING_UNSPECIFIED;
507- scd.SampleDesc .Count = 1 ;
508- scd.SampleDesc .Quality = 0 ;
509- scd.BufferUsage = _scd.bufferUsage ;
510- scd.BufferCount = _scd.bufferCount ;
511- scd.OutputWindow = (HWND)_scd.nwh ;
512- scd.Windowed = _scd.windowed ;
513- scd.SwapEffect = _scd.swapEffect ;
514- scd.Flags = scdFlags;
515-
516- hr = m_factory->CreateSwapChain (
511+ DXGI_SWAP_CHAIN_FULLSCREEN_DESC scfd;
512+ scfd.RefreshRate .Numerator = 1 ;
513+ scfd.RefreshRate .Denominator = 60 ;
514+ scfd.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
515+ scfd.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;
516+ scfd.Windowed = _scd.windowed ;
517+
518+ hr = m_factory->CreateSwapChainForHwnd (
517519 _device
520+ , (HWND)_scd.nwh
518521 , &scd
519- , reinterpret_cast <IDXGISwapChain**>(_swapChain)
520- );
522+ , &scfd
523+ , NULL
524+ , reinterpret_cast <IDXGISwapChain1**>(_swapChain)
525+ );
521526#else
522- DXGI_SWAP_CHAIN_DESC1 scd;
523- scd.Width = _scd.width ;
524- scd.Height = _scd.height ;
525- scd.Format = _scd.format ;
526- scd.Stereo = _scd.stereo ;
527- scd.SampleDesc .Count = 1 ;
528- scd.SampleDesc .Quality = 0 ;
529- scd.BufferUsage = _scd.bufferUsage ;
530- scd.BufferCount = _scd.bufferCount ;
531- scd.Scaling = _scd.scaling ;
532- scd.SwapEffect = _scd.swapEffect ;
533- scd.AlphaMode = _scd.alphaMode ;
534- scd.Flags = scdFlags;
535-
536527 if (NULL == _scd.ndt )
537528 {
538529 hr = m_factory->CreateSwapChainForCoreWindow (
0 commit comments