pso_desc.RTVFormats[i] = d3d12_rtv_format(ctx, i);
pso_desc.DSVFormat = state->dsv_format;
+ pso_desc.SampleDesc.Count = state->samples;
if (state->num_cbufs || state->dsv_format != DXGI_FORMAT_UNKNOWN) {
- pso_desc.SampleDesc.Count = state->samples;
if (!state->zsa->desc.DepthEnable &&
!state->zsa->desc.StencilEnable &&
!state->rast->desc.MultisampleEnable &&
pso_desc.DSVFormat = DXGI_FORMAT_UNKNOWN;
}
} else if (state->samples > 1) {
- pso_desc.SampleDesc.Count = 1;
- pso_desc.RasterizerState.ForcedSampleCount = state->samples;
+#if D3D12_SDK_VERSION >= 609
+ if (!(screen->opts19.SupportedSampleCountsWithNoOutputs & (1 << state->samples)))
+#endif
+ {
+ pso_desc.SampleDesc.Count = 1;
+ pso_desc.RasterizerState.ForcedSampleCount = state->samples;
+ }
}
pso_desc.SampleDesc.Quality = 0;
debug_printf("D3D12: failed to get device options\n");
return false;
}
+#if D3D12_SDK_VERSION >= 609
+ screen->dev->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS19, &screen->opts19, sizeof(screen->opts19));
+#endif
screen->architecture.NodeIndex = 0;
if (FAILED(screen->dev->CheckFeatureSupport(D3D12_FEATURE_ARCHITECTURE,
D3D12_FEATURE_DATA_D3D12_OPTIONS2 opts2;
D3D12_FEATURE_DATA_D3D12_OPTIONS3 opts3;
D3D12_FEATURE_DATA_D3D12_OPTIONS4 opts4;
+#if D3D12_SDK_VERSION >= 610
+ D3D12_FEATURE_DATA_D3D12_OPTIONS19 opts19;
+#endif
nir_shader_compiler_options nir_options;