freedreno/ir3: use nir two-sided-color lowering
With this, we completely switch over to nir lowering passes instead of tgsi_lowering. So one step closer to supporting direct glsl or spirv to nir support for freedreno a3xx/a4xx. Signed-off-by: Rob Clark <robclark@freedesktop.org>
This commit is contained in:
parent
e13ed3ffb4
commit
9ffc1049ca
|
@ -181,6 +181,8 @@ static struct nir_shader *to_nir(struct ir3_compile *ctx,
|
||||||
nir_lower_clip_fs(s, so->key.ucp_enables);
|
nir_lower_clip_fs(s, so->key.ucp_enables);
|
||||||
}
|
}
|
||||||
nir_lower_tex(s, &tex_options);
|
nir_lower_tex(s, &tex_options);
|
||||||
|
if (so->key.color_two_side)
|
||||||
|
nir_lower_two_sided_color(s);
|
||||||
nir_lower_idiv(s);
|
nir_lower_idiv(s);
|
||||||
nir_lower_load_const_to_scalar(s);
|
nir_lower_load_const_to_scalar(s);
|
||||||
|
|
||||||
|
@ -212,26 +214,12 @@ static struct nir_shader *to_nir(struct ir3_compile *ctx,
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO nir doesn't lower everything for us yet, but ideally it would: */
|
|
||||||
static const struct tgsi_token *
|
|
||||||
lower_tgsi(struct ir3_compile *ctx, const struct tgsi_token *tokens,
|
|
||||||
struct ir3_shader_variant *so)
|
|
||||||
{
|
|
||||||
struct tgsi_shader_info info;
|
|
||||||
struct tgsi_lowering_config lconfig = {
|
|
||||||
.color_two_side = so->key.color_two_side,
|
|
||||||
};
|
|
||||||
|
|
||||||
return tgsi_transform_lowering(&lconfig, tokens, &info);
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct ir3_compile *
|
static struct ir3_compile *
|
||||||
compile_init(struct ir3_compiler *compiler,
|
compile_init(struct ir3_compiler *compiler,
|
||||||
struct ir3_shader_variant *so,
|
struct ir3_shader_variant *so,
|
||||||
const struct tgsi_token *tokens)
|
const struct tgsi_token *tokens)
|
||||||
{
|
{
|
||||||
struct ir3_compile *ctx = rzalloc(NULL, struct ir3_compile);
|
struct ir3_compile *ctx = rzalloc(NULL, struct ir3_compile);
|
||||||
const struct tgsi_token *lowered_tokens;
|
|
||||||
|
|
||||||
if (compiler->gpu_id >= 400) {
|
if (compiler->gpu_id >= 400) {
|
||||||
/* need special handling for "flat" */
|
/* need special handling for "flat" */
|
||||||
|
@ -258,13 +246,7 @@ compile_init(struct ir3_compiler *compiler,
|
||||||
ctx->block_ht = _mesa_hash_table_create(ctx,
|
ctx->block_ht = _mesa_hash_table_create(ctx,
|
||||||
_mesa_hash_pointer, _mesa_key_pointer_equal);
|
_mesa_hash_pointer, _mesa_key_pointer_equal);
|
||||||
|
|
||||||
lowered_tokens = lower_tgsi(ctx, tokens, so);
|
ctx->s = to_nir(ctx, tokens, so);
|
||||||
if (!lowered_tokens)
|
|
||||||
lowered_tokens = tokens;
|
|
||||||
ctx->s = to_nir(ctx, lowered_tokens, so);
|
|
||||||
|
|
||||||
if (lowered_tokens != tokens)
|
|
||||||
free((void *)lowered_tokens);
|
|
||||||
|
|
||||||
so->first_driver_param = so->first_immediate = ctx->s->num_uniforms;
|
so->first_driver_param = so->first_immediate = ctx->s->num_uniforms;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue