aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/vc4
diff options
context:
space:
mode:
authorBoyan Ding <[email protected]>2015-09-27 17:16:57 +0800
committerEric Anholt <[email protected]>2015-10-06 16:34:07 -0700
commit64d9d4b73031d1bc23ae869e2afad86ed01edea5 (patch)
tree6f60cf0862bbcfae6f6bad55388206049775216c /src/gallium/drivers/vc4
parentb6cd39fc4761a3a6276a373e68510fb7fb735a77 (diff)
vc4: use nir two-sided-color lowering
Similar to 9ffc1049ca (freedreno/ir3: use nir two-sided-color lowering). No piglit regression. Signed-off-by: Boyan Ding <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
Diffstat (limited to 'src/gallium/drivers/vc4')
-rw-r--r--src/gallium/drivers/vc4/vc4_context.h1
-rw-r--r--src/gallium/drivers/vc4/vc4_program.c25
2 files changed, 2 insertions, 24 deletions
diff --git a/src/gallium/drivers/vc4/vc4_context.h b/src/gallium/drivers/vc4/vc4_context.h
index 7502293180a..c7698422951 100644
--- a/src/gallium/drivers/vc4/vc4_context.h
+++ b/src/gallium/drivers/vc4/vc4_context.h
@@ -103,7 +103,6 @@ struct vc4_uncompiled_shader {
/** How many variants of this program were compiled, for shader-db. */
uint32_t compiled_variant_count;
struct pipe_shader_state base;
- const struct tgsi_token *twoside_tokens;
};
struct vc4_ubo_range {
diff --git a/src/gallium/drivers/vc4/vc4_program.c b/src/gallium/drivers/vc4/vc4_program.c
index 01ea7544984..31c7e28ff57 100644
--- a/src/gallium/drivers/vc4/vc4_program.c
+++ b/src/gallium/drivers/vc4/vc4_program.c
@@ -1738,27 +1738,6 @@ vc4_shader_ntq(struct vc4_context *vc4, enum qstage stage,
}
const struct tgsi_token *tokens = key->shader_state->base.tokens;
- if (c->fs_key && c->fs_key->light_twoside) {
- if (!key->shader_state->twoside_tokens) {
- const struct tgsi_lowering_config lowering_config = {
- .color_two_side = true,
- };
- struct tgsi_shader_info info;
- key->shader_state->twoside_tokens =
- tgsi_transform_lowering(&lowering_config,
- key->shader_state->base.tokens,
- &info);
-
- /* If no transformation occurred, then NULL is
- * returned and we just use our original tokens.
- */
- if (!key->shader_state->twoside_tokens) {
- key->shader_state->twoside_tokens =
- key->shader_state->base.tokens;
- }
- }
- tokens = key->shader_state->twoside_tokens;
- }
if (vc4_debug & VC4_DEBUG_TGSI) {
fprintf(stderr, "%s prog %d/%d TGSI:\n",
@@ -1772,6 +1751,8 @@ vc4_shader_ntq(struct vc4_context *vc4, enum qstage stage,
nir_convert_to_ssa(c->s);
if (stage == QSTAGE_FRAG)
vc4_nir_lower_blend(c);
+ if (c->fs_key && c->fs_key->light_twoside)
+ nir_lower_two_sided_color(c->s);
vc4_nir_lower_io(c);
nir_lower_idiv(c->s);
nir_lower_load_const_to_scalar(c->s);
@@ -2190,8 +2171,6 @@ vc4_shader_state_delete(struct pipe_context *pctx, void *hwcso)
hash_table_foreach(vc4->vs_cache, entry)
delete_from_cache_if_matches(vc4->vs_cache, entry, so);
- if (so->twoside_tokens != so->base.tokens)
- free((void *)so->twoside_tokens);
free((void *)so->base.tokens);
free(so);
}