From 6cd9c94ce49a2c1a8826c1b1bf2fb73dc595131d Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Wed, 1 Apr 2015 12:31:46 -0400 Subject: [PATCH] freedreno/ir3: handle FRAG IN's without interpolation specified Fallback to picking based on semantic name. Signed-off-by: Rob Clark --- src/gallium/drivers/freedreno/ir3/ir3_compiler.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/gallium/drivers/freedreno/ir3/ir3_compiler.c b/src/gallium/drivers/freedreno/ir3/ir3_compiler.c index 8239308..38df8b5 100644 --- a/src/gallium/drivers/freedreno/ir3/ir3_compiler.c +++ b/src/gallium/drivers/freedreno/ir3/ir3_compiler.c @@ -3107,15 +3107,23 @@ decl_in(struct ir3_compile_context *ctx, struct tgsi_full_declaration *decl) } else { bool use_ldlv = false; - /* I don't believe it is valid to not have Interp - * on a normal frag shader input, and various parts - * that that handle flat/smooth shading make this - * assumption as well. + /* if no interpolation given, pick based on + * semantic: */ - compile_assert(ctx, decl->Declaration.Interpolate); + if (!decl->Declaration.Interpolate) { + switch (decl->Semantic.Name) { + case TGSI_SEMANTIC_COLOR: + so->inputs[n].interpolate = + TGSI_INTERPOLATE_COLOR; + break; + default: + so->inputs[n].interpolate = + TGSI_INTERPOLATE_LINEAR; + } + } if (ctx->flat_bypass) { - switch (decl->Interp.Interpolate) { + switch (so->inputs[n].interpolate) { case TGSI_INTERPOLATE_COLOR: if (!ctx->so->key.rasterflat) break; @@ -3162,7 +3170,7 @@ decl_sv(struct ir3_compile_context *ctx, struct tgsi_full_declaration *decl) so->inputs[n].compmask = 1; so->inputs[n].regid = r; so->inputs[n].inloc = ctx->next_inloc; - so->inputs[n].interpolate = false; + so->inputs[n].interpolate = TGSI_INTERPOLATE_CONSTANT; struct ir3_instruction *instr = NULL; -- 2.7.4