mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 11:48:06 +02:00
intel/compiler: disable per-sample interpolation modes with non-per-sample dispatch
Fixes hangs in dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.*
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 5644011f06 ("intel/compiler: Convert wm_prog_key::persample_interp to a tri-state")
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24716>
This commit is contained in:
parent
8366d77e4c
commit
d74c301026
1 changed files with 18 additions and 2 deletions
|
|
@ -1172,9 +1172,13 @@ wm_prog_data_barycentric_modes(const struct brw_wm_prog_data *prog_data,
|
|||
{
|
||||
uint32_t modes = prog_data->barycentric_interp_modes;
|
||||
|
||||
if (pushed_msaa_flags & BRW_WM_MSAA_FLAG_PERSAMPLE_INTERP) {
|
||||
assert(pushed_msaa_flags & BRW_WM_MSAA_FLAG_ENABLE_DYNAMIC);
|
||||
/* In the non dynamic case, we can just return the computed modes from
|
||||
* compilation time.
|
||||
*/
|
||||
if (!(pushed_msaa_flags & BRW_WM_MSAA_FLAG_ENABLE_DYNAMIC))
|
||||
return modes;
|
||||
|
||||
if (pushed_msaa_flags & BRW_WM_MSAA_FLAG_PERSAMPLE_INTERP) {
|
||||
assert(prog_data->persample_dispatch == BRW_ALWAYS ||
|
||||
(pushed_msaa_flags & BRW_WM_MSAA_FLAG_PERSAMPLE_DISPATCH));
|
||||
|
||||
|
|
@ -1211,6 +1215,18 @@ wm_prog_data_barycentric_modes(const struct brw_wm_prog_data *prog_data,
|
|||
modes &= ~BITFIELD_BIT(sample_mode);
|
||||
modes |= BITFIELD_BIT(BRW_BARYCENTRIC_NONPERSPECTIVE_SAMPLE);
|
||||
}
|
||||
} else {
|
||||
/* If we're not using per-sample interpolation, we need to disable the
|
||||
* per-sample bits.
|
||||
*
|
||||
* SKL PRMs, Volume 2a: Command Reference: Instructions,
|
||||
* 3DSTATE_WM:Barycentric Interpolation Mode:
|
||||
|
||||
* "MSDISPMODE_PERSAMPLE is required in order to select Perspective
|
||||
* Sample or Non-perspective Sample barycentric coordinates."
|
||||
*/
|
||||
modes &= ~(BITFIELD_BIT(BRW_BARYCENTRIC_PERSPECTIVE_SAMPLE) |
|
||||
BITFIELD_BIT(BRW_BARYCENTRIC_NONPERSPECTIVE_SAMPLE));
|
||||
}
|
||||
|
||||
return modes;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue