[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

@@ -3291,8 +3291,21 @@ void D3D12CommandProcessor::UpdateSystemConstantValues(
}
}
// Resolution scale, depth/stencil testing and blend constant for ROV.
// Interpolator sampling pattern, resolution scale, depth/stencil testing and
// blend constant for ROV.
if (edram_rov_used_) {
// Not needed without ROV because without ROV, MSAA is faked with SSAA, and
// everything is interpolated at samples, without the possibility of
// extrapolation.
uint32_t interpolator_sampling_pattern =
xenos::GetInterpolatorSamplingPattern(
rb_surface_info.msaa_samples, sq_context_misc.sc_sample_cntl,
regs.Get<reg::SQ_INTERPOLATOR_CNTL>().sampling_pattern);
dirty |= system_constants_.interpolator_sampling_pattern !=
interpolator_sampling_pattern;
system_constants_.interpolator_sampling_pattern =
interpolator_sampling_pattern;
uint32_t resolution_square_scale =
texture_cache_->IsResolutionScale2X() ? 4 : 1;
dirty |= system_constants_.edram_resolution_square_scale !=