mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-23 22:40:34 +01:00
r600: Fix interpolateAtCentroid
If the instruction interpolateAtCentroid is used the extra interpolator must also be enabled in the state. Fixes: fs-interpolateatcentroid-block Signed-off-by: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Roland Scheidegger <sroland@vmware.com>
This commit is contained in:
parent
1481d05409
commit
7cbb44aa6a
4 changed files with 14 additions and 1 deletions
|
|
@ -3364,6 +3364,12 @@ void evergreen_update_ps_state(struct pipe_context *ctx, struct r600_pipe_shader
|
|||
spi_baryc_cntl |= spi_baryc_enable_bit[k];
|
||||
have_perspective |= k < 3;
|
||||
have_linear |= !(k < 3);
|
||||
if (rshader->input[i].uses_interpolate_at_centroid) {
|
||||
k = eg_get_interpolator_index(
|
||||
rshader->input[i].interpolate,
|
||||
TGSI_INTERPOLATE_LOC_CENTROID);
|
||||
spi_baryc_cntl |= spi_baryc_enable_bit[k];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6973,6 +6973,7 @@ static int tgsi_interp_egcm(struct r600_shader_ctx *ctx)
|
|||
}
|
||||
else {
|
||||
location = TGSI_INTERPOLATE_LOC_CENTROID;
|
||||
ctx->shader->input[input].uses_interpolate_at_centroid = 1;
|
||||
}
|
||||
|
||||
k = eg_get_interpolator_index(ctx->shader->input[input].interpolate, location);
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ struct r600_shader_io {
|
|||
unsigned back_color_input;
|
||||
unsigned write_mask;
|
||||
int ring_offset;
|
||||
unsigned uses_interpolate_at_centroid;
|
||||
};
|
||||
|
||||
struct r600_shader_atomic {
|
||||
|
|
|
|||
|
|
@ -171,8 +171,13 @@ int bc_parser::parse_decls() {
|
|||
sh->add_input(in.gpr, preloaded, /*in.write_mask*/ 0x0F);
|
||||
if (ps_interp && in.spi_sid) {
|
||||
int k = eg_get_interpolator_index(in.interpolate, in.interpolate_location);
|
||||
if (k >= 0)
|
||||
if (k >= 0) {
|
||||
ij_interpolators[k] |= true;
|
||||
if (in.uses_interpolate_at_centroid) {
|
||||
k = eg_get_interpolator_index(in.interpolate, TGSI_INTERPOLATE_LOC_CENTROID);
|
||||
ij_interpolators[k] |= true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue