Skip to content

Commit 06debb3

Browse files
authored
Merge pull request #676 from sherief/master
Fixed the DXR samples so they can run on (I'm wheezing) Surface Book 3.
2 parents 76146b8 + 287324f commit 06debb3

File tree

4 files changed

+32
-8
lines changed

4 files changed

+32
-8
lines changed

Samples/Desktop/D3D12Raytracing/src/D3D12RaytracingHelloWorld/DeviceResources.cpp

+8-2
Original file line numberDiff line numberDiff line change
@@ -597,14 +597,20 @@ void DeviceResources::MoveToNextFrame()
597597
m_fenceValues[m_backBufferIndex] = currentFenceValue + 1;
598598
}
599599

600-
// This method acquires the first available hardware adapter that supports Direct3D 12.
600+
// This method acquires the first high-performance hardware adapter that supports Direct3D 12.
601601
// If no such adapter can be found, try WARP. Otherwise throw an exception.
602602
void DeviceResources::InitializeAdapter(IDXGIAdapter1** ppAdapter)
603603
{
604604
*ppAdapter = nullptr;
605605

606606
ComPtr<IDXGIAdapter1> adapter;
607-
for (UINT adapterID = 0; DXGI_ERROR_NOT_FOUND != m_dxgiFactory->EnumAdapters1(adapterID, &adapter); ++adapterID)
607+
ComPtr<IDXGIFactory6> factory6;
608+
HRESULT hr = m_dxgiFactory.As(&factory6);
609+
if (FAILED(hr))
610+
{
611+
throw exception("DXGI 1.6 not supported");
612+
}
613+
for (UINT adapterID = 0; DXGI_ERROR_NOT_FOUND != factory6->EnumAdapterByGpuPreference(adapterID, DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE, IID_PPV_ARGS(&adapter)); ++adapterID)
608614
{
609615
if (m_adapterIDoverride != UINT_MAX && adapterID != m_adapterIDoverride)
610616
{

Samples/Desktop/D3D12Raytracing/src/D3D12RaytracingLibrarySubobjects/DeviceResources.cpp

+8-2
Original file line numberDiff line numberDiff line change
@@ -597,14 +597,20 @@ void DeviceResources::MoveToNextFrame()
597597
m_fenceValues[m_backBufferIndex] = currentFenceValue + 1;
598598
}
599599

600-
// This method acquires the first available hardware adapter that supports Direct3D 12.
600+
// This method acquires the first high-performance hardware adapter that supports Direct3D 12.
601601
// If no such adapter can be found, try WARP. Otherwise throw an exception.
602602
void DeviceResources::InitializeAdapter(IDXGIAdapter1** ppAdapter)
603603
{
604604
*ppAdapter = nullptr;
605605

606606
ComPtr<IDXGIAdapter1> adapter;
607-
for (UINT adapterID = 0; DXGI_ERROR_NOT_FOUND != m_dxgiFactory->EnumAdapters1(adapterID, &adapter); ++adapterID)
607+
ComPtr<IDXGIFactory6> factory6;
608+
HRESULT hr = m_dxgiFactory.As(&factory6);
609+
if (FAILED(hr))
610+
{
611+
throw exception("DXGI 1.6 not supported");
612+
}
613+
for (UINT adapterID = 0; DXGI_ERROR_NOT_FOUND != factory6->EnumAdapterByGpuPreference(adapterID, DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE, IID_PPV_ARGS(&adapter)); ++adapterID)
608614
{
609615
if (m_adapterIDoverride != UINT_MAX && adapterID != m_adapterIDoverride)
610616
{

Samples/Desktop/D3D12Raytracing/src/D3D12RaytracingProceduralGeometry/util/DeviceResources.cpp

+8-2
Original file line numberDiff line numberDiff line change
@@ -597,14 +597,20 @@ void DeviceResources::MoveToNextFrame()
597597
m_fenceValues[m_backBufferIndex] = currentFenceValue + 1;
598598
}
599599

600-
// This method acquires the first available hardware adapter that supports Direct3D 12.
600+
// This method acquires the first high-performance hardware adapter that supports Direct3D 12.
601601
// If no such adapter can be found, try WARP. Otherwise throw an exception.
602602
void DeviceResources::InitializeAdapter(IDXGIAdapter1** ppAdapter)
603603
{
604604
*ppAdapter = nullptr;
605605

606606
ComPtr<IDXGIAdapter1> adapter;
607-
for (UINT adapterID = 0; DXGI_ERROR_NOT_FOUND != m_dxgiFactory->EnumAdapters1(adapterID, &adapter); ++adapterID)
607+
ComPtr<IDXGIFactory6> factory6;
608+
HRESULT hr = m_dxgiFactory.As(&factory6);
609+
if (FAILED(hr))
610+
{
611+
throw exception("DXGI 1.6 not supported");
612+
}
613+
for (UINT adapterID = 0; DXGI_ERROR_NOT_FOUND != factory6->EnumAdapterByGpuPreference(adapterID, DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE, IID_PPV_ARGS(&adapter)); ++adapterID)
608614
{
609615
if (m_adapterIDoverride != UINT_MAX && adapterID != m_adapterIDoverride)
610616
{

Samples/Desktop/D3D12Raytracing/src/D3D12RaytracingSimpleLighting/DeviceResources.cpp

+8-2
Original file line numberDiff line numberDiff line change
@@ -597,14 +597,20 @@ void DeviceResources::MoveToNextFrame()
597597
m_fenceValues[m_backBufferIndex] = currentFenceValue + 1;
598598
}
599599

600-
// This method acquires the first available hardware adapter that supports Direct3D 12.
600+
// This method acquires the first high-performance hardware adapter that supports Direct3D 12.
601601
// If no such adapter can be found, try WARP. Otherwise throw an exception.
602602
void DeviceResources::InitializeAdapter(IDXGIAdapter1** ppAdapter)
603603
{
604604
*ppAdapter = nullptr;
605605

606606
ComPtr<IDXGIAdapter1> adapter;
607-
for (UINT adapterID = 0; DXGI_ERROR_NOT_FOUND != m_dxgiFactory->EnumAdapters1(adapterID, &adapter); ++adapterID)
607+
ComPtr<IDXGIFactory6> factory6;
608+
HRESULT hr = m_dxgiFactory.As(&factory6);
609+
if (FAILED(hr))
610+
{
611+
throw exception("DXGI 1.6 not supported");
612+
}
613+
for (UINT adapterID = 0; DXGI_ERROR_NOT_FOUND != factory6->EnumAdapterByGpuPreference(adapterID, DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE, IID_PPV_ARGS(&adapter)); ++adapterID)
608614
{
609615
if (m_adapterIDoverride != UINT_MAX && adapterID != m_adapterIDoverride)
610616
{

0 commit comments

Comments
 (0)