[D3D12] Interpolation at centroid

This commit is contained in:
Triang3l
2020-07-08 23:20:36 +03:00
parent 829c6ee2b0
commit 1547b9df41
31 changed files with 2681 additions and 2487 deletions

View File

@@ -554,6 +554,24 @@ enum class SampleControl : uint32_t {
kCentroidsAndCenters = 2,
};
// - msaa_samples is RB_SURFACE_INFO::msaa_samples.
// - sample_control is SQ_CONTEXT_MISC::sc_sample_cntl.
// - interpolator_control_sampling_pattern is
// SQ_INTERPOLATOR_CNTL::sampling_pattern.
inline uint32_t GetInterpolatorSamplingPattern(
MsaaSamples msaa_samples, SampleControl sample_control,
uint32_t interpolator_control_sampling_pattern) {
if (msaa_samples == MsaaSamples::k1X ||
sample_control == SampleControl::kCentersOnly) {
return ((1 << 16) - 1) * uint32_t(SampleLocation::kCenter);
}
if (sample_control == SampleControl::kCentroidsOnly) {
return ((1 << 16) - 1) * uint32_t(SampleLocation::kCentroid);
}
assert_true(sample_control == SampleControl::kCentroidsAndCenters);
return interpolator_control_sampling_pattern;
}
enum class VGTOutputPath : uint32_t {
kVertexReuse = 0,
kTessellationEnable = 1,