mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 17:20:10 +01:00
i965/fs: use determine_interpolation_mode().
This patch changes how fs_visitor::emit_general_interpolation()
decides what kind of interpolation to do. Previously, it used the
shade model to determine how to interpolate colors, and used smooth
interpolation on everything else. Now it uses
ir_variable::determine_interpolation_mode(), so that it respects GLSL
1.30 interpolation qualifiers.
Fixes piglit tests interpolation-flat-*-smooth-{distance,fixed,vertex}
and interpolation-flat-other-flat-{distance,fixed,vertex}.
Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
e04bdeae82
commit
f8386a29f0
1 changed files with 4 additions and 4 deletions
|
|
@ -442,6 +442,9 @@ fs_visitor::emit_general_interpolation(ir_variable *ir)
|
|||
type = ir->type;
|
||||
}
|
||||
|
||||
glsl_interp_qualifier interpolation_mode =
|
||||
ir->determine_interpolation_mode(c->key.flat_shade);
|
||||
|
||||
int location = ir->location;
|
||||
for (unsigned int i = 0; i < array_elements; i++) {
|
||||
for (unsigned int j = 0; j < type->matrix_columns; j++) {
|
||||
|
|
@ -454,10 +457,7 @@ fs_visitor::emit_general_interpolation(ir_variable *ir)
|
|||
continue;
|
||||
}
|
||||
|
||||
bool is_gl_Color =
|
||||
location == FRAG_ATTRIB_COL0 || location == FRAG_ATTRIB_COL1;
|
||||
|
||||
if (c->key.flat_shade && is_gl_Color) {
|
||||
if (interpolation_mode == INTERP_QUALIFIER_FLAT) {
|
||||
/* Constant interpolation (flat shading) case. The SF has
|
||||
* handed us defined values in only the constant offset
|
||||
* field of the setup reg.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue