@@ -116,6 +116,15 @@ impl super::Adapter {
116116 }
117117 . unwrap ( ) ;
118118
119+ let mut features1 = Direct3D12 :: D3D12_FEATURE_DATA_D3D12_OPTIONS1 :: default ( ) ;
120+ let hr = unsafe {
121+ device. CheckFeatureSupport (
122+ Direct3D12 :: D3D12_FEATURE_D3D12_OPTIONS1 ,
123+ <* mut _ >:: cast ( & mut features1) ,
124+ size_of_val ( & features1) as u32 ,
125+ )
126+ } ;
127+
119128 let driver_version = unsafe { adapter. CheckInterfaceSupport ( & Dxgi :: IDXGIDevice :: IID ) }
120129 . ok ( )
121130 . map ( |i| {
@@ -156,6 +165,8 @@ impl super::Adapter {
156165 driver_version. 0 , driver_version. 1 , driver_version. 2 , driver_version. 3
157166 ) ,
158167 driver_info : String :: new ( ) ,
168+ subgroup_min_size : features1. WaveLaneCountMin ,
169+ subgroup_max_size : features1. WaveLaneCountMax ,
159170 transient_saves_memory : false ,
160171 } ;
161172
@@ -483,15 +494,6 @@ impl super::Adapter {
483494 } ;
484495 features. set ( wgt:: Features :: TEXTURE_FORMAT_P010 , p010_format_supported) ;
485496
486- let mut features1 = Direct3D12 :: D3D12_FEATURE_DATA_D3D12_OPTIONS1 :: default ( ) ;
487- let hr = unsafe {
488- device. CheckFeatureSupport (
489- Direct3D12 :: D3D12_FEATURE_D3D12_OPTIONS1 ,
490- <* mut _ >:: cast ( & mut features1) ,
491- size_of_val ( & features1) as u32 ,
492- )
493- } ;
494-
495497 features. set (
496498 wgt:: Features :: SHADER_INT64 ,
497499 shader_model >= naga:: back:: hlsl:: ShaderModel :: V6_0
@@ -694,8 +696,6 @@ impl super::Adapter {
694696 . min ( crate :: MAX_VERTEX_BUFFERS as u32 ) ,
695697 max_vertex_attributes : Direct3D12 :: D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT ,
696698 max_vertex_buffer_array_stride : Direct3D12 :: D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES ,
697- min_subgroup_size : 4 , // Not using `features1.WaveLaneCountMin` as it is unreliable
698- max_subgroup_size : 128 ,
699699 // The immediates are part of the root signature which
700700 // has a limit of 64 DWORDS (256 bytes), but other resources
701701 // also share the root signature:
0 commit comments