mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-26 15:00:10 +01:00
radeonsi/gfx9: add initial code generation for non-monolithic merged LS-HS
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
c73d9bd643
commit
62abdb17bb
3 changed files with 23 additions and 1 deletions
|
|
@ -6693,6 +6693,10 @@ static void si_dump_shader_key(unsigned processor, struct si_shader *shader,
|
|||
break;
|
||||
|
||||
case PIPE_SHADER_TESS_CTRL:
|
||||
if (shader->selector->screen->b.chip_class >= GFX9) {
|
||||
si_dump_shader_key_vs(key, &key->part.tcs.ls_prolog,
|
||||
"part.tcs.ls_prolog", f);
|
||||
}
|
||||
fprintf(f, " part.tcs.epilog.prim_mode = %u\n", key->part.tcs.epilog.prim_mode);
|
||||
fprintf(f, " mono.ff_tcs_inputs_to_copy = 0x%"PRIx64"\n", key->mono.ff_tcs_inputs_to_copy);
|
||||
break;
|
||||
|
|
@ -8007,9 +8011,19 @@ static bool si_shader_select_tcs_parts(struct si_screen *sscreen,
|
|||
struct si_shader *shader,
|
||||
struct pipe_debug_callback *debug)
|
||||
{
|
||||
union si_shader_part_key epilog_key;
|
||||
if (sscreen->b.chip_class >= GFX9) {
|
||||
struct si_shader *ls_main_part =
|
||||
shader->key.part.tcs.ls->main_shader_part_ls;
|
||||
|
||||
if (!si_get_vs_prolog(sscreen, tm, shader, debug, ls_main_part,
|
||||
&shader->key.part.tcs.ls_prolog))
|
||||
return false;
|
||||
|
||||
shader->previous_stage = ls_main_part;
|
||||
}
|
||||
|
||||
/* Get the epilog. */
|
||||
union si_shader_part_key epilog_key;
|
||||
memset(&epilog_key, 0, sizeof(epilog_key));
|
||||
epilog_key.tcs_epilog.states = shader->key.part.tcs.epilog;
|
||||
|
||||
|
|
|
|||
|
|
@ -435,6 +435,8 @@ struct si_shader_key {
|
|||
struct si_vs_epilog_bits epilog;
|
||||
} vs;
|
||||
struct {
|
||||
struct si_vs_prolog_bits ls_prolog; /* for merged LS-HS */
|
||||
struct si_shader_selector *ls; /* for merged LS-HS */
|
||||
struct si_tcs_epilog_bits epilog;
|
||||
} tcs; /* tessellation control shader */
|
||||
struct {
|
||||
|
|
|
|||
|
|
@ -1060,6 +1060,12 @@ static inline void si_shader_selector_key(struct pipe_context *ctx,
|
|||
}
|
||||
break;
|
||||
case PIPE_SHADER_TESS_CTRL:
|
||||
if (sctx->b.chip_class >= GFX9) {
|
||||
si_shader_selector_key_vs(sctx, sctx->vs_shader.cso,
|
||||
key, &key->part.tcs.ls_prolog);
|
||||
key->part.tcs.ls = sctx->vs_shader.cso;
|
||||
}
|
||||
|
||||
key->part.tcs.epilog.prim_mode =
|
||||
sctx->tes_shader.cso->info.properties[TGSI_PROPERTY_TES_PRIM_MODE];
|
||||
key->part.tcs.epilog.tes_reads_tess_factors =
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue