radeonsi/gfx10: set as_ngg for GS prolog

as_ngg is required by Wave32.

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
This commit is contained in:
Marek Olšák 2019-07-12 17:26:24 -04:00
parent d3a80f2dda
commit a8a526c5cb
2 changed files with 9 additions and 5 deletions

View File

@ -7023,6 +7023,7 @@ int si_compile_tgsi_shader(struct si_screen *sscreen,
memset(&gs_prolog_key, 0, sizeof(gs_prolog_key));
gs_prolog_key.gs_prolog.states = shader->key.part.gs.prolog;
gs_prolog_key.gs_prolog.is_monolithic = true;
gs_prolog_key.gs_prolog.as_ngg = shader->key.as_ngg;
si_build_gs_prolog_function(&ctx, &gs_prolog_key);
gs_prolog = ctx.main_fn;
@ -7260,11 +7261,6 @@ si_get_shader_part(struct si_screen *sscreen,
result->key = *key;
struct si_shader shader = {};
struct si_shader_context ctx;
si_init_shader_ctx(&ctx, sscreen, compiler);
ctx.shader = &shader;
ctx.type = type;
switch (type) {
case PIPE_SHADER_VERTEX:
@ -7278,6 +7274,7 @@ si_get_shader_part(struct si_screen *sscreen,
break;
case PIPE_SHADER_GEOMETRY:
assert(prolog);
shader.key.as_ngg = key->gs_prolog.as_ngg;
break;
case PIPE_SHADER_FRAGMENT:
if (prolog)
@ -7289,6 +7286,11 @@ si_get_shader_part(struct si_screen *sscreen,
unreachable("bad shader part");
}
struct si_shader_context ctx;
si_init_shader_ctx(&ctx, sscreen, compiler);
ctx.shader = &shader;
ctx.type = type;
build(&ctx, key);
/* Compile. */
@ -7699,6 +7701,7 @@ static bool si_shader_select_gs_parts(struct si_screen *sscreen,
union si_shader_part_key prolog_key;
memset(&prolog_key, 0, sizeof(prolog_key));
prolog_key.gs_prolog.states = shader->key.part.gs.prolog;
prolog_key.gs_prolog.as_ngg = shader->key.as_ngg;
shader->prolog2 = si_get_shader_part(sscreen, &sscreen->gs_prologs,
PIPE_SHADER_GEOMETRY, true,

View File

@ -490,6 +490,7 @@ union si_shader_part_key {
struct si_gs_prolog_bits states;
/* Prologs of monolithic shaders shouldn't set EXEC. */
unsigned is_monolithic:1;
unsigned as_ngg:1;
} gs_prolog;
struct {
struct si_ps_prolog_bits states;