Skip to content

Commit 1c6427a

Browse files
authored
compute queue for core/ml adapters only (#635)
1 parent 2ac1dd0 commit 1c6427a

1 file changed

Lines changed: 30 additions & 1 deletion

File tree

Samples/DirectML_ESRGAN/helpers.cpp

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,38 @@ std::tuple<Microsoft::WRL::ComPtr<IDMLDevice>, Microsoft::WRL::ComPtr<ID3D12Comm
112112
ComPtr<IDMLDevice> dmlDevice;
113113
THROW_IF_FAILED(DMLCreateDevice(d3d12Device.Get(), DML_CREATE_DEVICE_FLAG_NONE, IID_PPV_ARGS(&dmlDevice)));
114114

115+
D3D_FEATURE_LEVEL featureLevelsRequested[] =
116+
{
117+
D3D_FEATURE_LEVEL_1_0_GENERIC,
118+
D3D_FEATURE_LEVEL_1_0_CORE,
119+
D3D_FEATURE_LEVEL_11_0,
120+
D3D_FEATURE_LEVEL_11_1,
121+
D3D_FEATURE_LEVEL_12_0,
122+
D3D_FEATURE_LEVEL_12_1
123+
};
124+
125+
D3D12_FEATURE_DATA_FEATURE_LEVELS featureLevelSupport =
126+
{
127+
.NumFeatureLevels = _countof(featureLevelsRequested),
128+
.pFeatureLevelsRequested = featureLevelsRequested
129+
};
130+
131+
THROW_IF_FAILED(d3d12Device->CheckFeatureSupport(
132+
D3D12_FEATURE_FEATURE_LEVELS,
133+
&featureLevelSupport,
134+
sizeof(featureLevelSupport)
135+
));
136+
137+
// The feature level returned by SelectAdapter is the MINIMUM feature level required for the adapter.
138+
// However, some adapters may support higher feature levels. For compatibility reasons, this sample
139+
// uses a direct queue for graphics-capable adapters that support feature levels > CORE.
140+
auto queueType = (featureLevelSupport.MaxSupportedFeatureLevel <= D3D_FEATURE_LEVEL_1_0_CORE) ?
141+
D3D12_COMMAND_LIST_TYPE_COMPUTE :
142+
D3D12_COMMAND_LIST_TYPE_DIRECT;
143+
115144
D3D12_COMMAND_QUEUE_DESC queueDesc =
116145
{
117-
.Type = D3D12_COMMAND_LIST_TYPE_COMPUTE,
146+
.Type = queueType,
118147
.Priority = D3D12_COMMAND_QUEUE_PRIORITY_NORMAL,
119148
.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE,
120149
.NodeMask = 0

0 commit comments

Comments
 (0)