From: Marek Olšák <marek.ol...@amd.com> --- src/gallium/drivers/radeonsi/si_shader.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 392f85d..aa19e16 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -8765,34 +8765,45 @@ static bool si_shader_select_tcs_parts(struct si_screen *sscreen, } /** * Select and compile (or reuse) GS parts (prolog). */ static bool si_shader_select_gs_parts(struct si_screen *sscreen, LLVMTargetMachineRef tm, struct si_shader *shader, struct pipe_debug_callback *debug) { - union si_shader_part_key prolog_key; + if (sscreen->b.chip_class >= GFX9) { + struct si_shader *es_main_part = + shader->key.part.gs.es->main_shader_part_es; + + if (shader->key.part.gs.es->type == PIPE_SHADER_VERTEX && + !si_get_vs_prolog(sscreen, tm, shader, debug, es_main_part, + &shader->key.part.gs.vs_prolog)) + return false; + + shader->previous_stage = es_main_part; + } if (!shader->key.part.gs.prolog.tri_strip_adj_fix) return true; + union si_shader_part_key prolog_key; memset(&prolog_key, 0, sizeof(prolog_key)); prolog_key.gs_prolog.states = shader->key.part.gs.prolog; - shader->prolog = si_get_shader_part(sscreen, &sscreen->gs_prologs, + shader->prolog2 = si_get_shader_part(sscreen, &sscreen->gs_prologs, PIPE_SHADER_GEOMETRY, true, &prolog_key, tm, debug, si_build_gs_prolog_function, "Geometry Shader Prolog"); - return shader->prolog != NULL; + return shader->prolog2 != NULL; } /** * Build the pixel shader prolog function. This handles: * - two-side color selection and interpolation * - overriding interpolation parameters for the API PS * - polygon stippling * * All preloaded SGPRs and VGPRs are passed through unmodified unless they are * overriden by other states. (e.g. per-sample interpolation) -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev