From be6e31c6a012c9cac9d3ee192a2b48a72deb172a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nicolai=20H=C3=A4hnle?= Date: Fri, 28 Oct 2016 21:42:47 +0200 Subject: [PATCH] radeonsi: use VS epilog for monolithic TES MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reviewed-by: Marek Olšák --- src/gallium/drivers/radeonsi/si_shader.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 7272313554a..628b8c3c287 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -7179,6 +7179,7 @@ int si_compile_tgsi_shader(struct si_screen *sscreen, ctx.separate_prolog = !is_monolithic; if (ctx.type == PIPE_SHADER_VERTEX || + ctx.type == PIPE_SHADER_TESS_EVAL || ctx.type == PIPE_SHADER_FRAGMENT) { ctx.no_prolog = false; ctx.no_epilog = false; @@ -7223,6 +7224,18 @@ int si_compile_tgsi_shader(struct si_screen *sscreen, si_build_wrapper_function(&ctx, parts, 1 + need_prolog + need_epilog, need_prolog ? 1 : 0); + } else if (is_monolithic && ctx.type == PIPE_SHADER_TESS_EVAL && + !shader->key.tes.as_es) { + LLVMValueRef parts[2]; + union si_shader_part_key epilog_key; + + parts[0] = ctx.main_fn; + + si_get_vs_epilog_key(shader, &shader->key.tes.epilog, &epilog_key); + si_build_vs_epilog_function(&ctx, &epilog_key); + parts[1] = ctx.main_fn; + + si_build_wrapper_function(&ctx, parts, 2, 0); } else if (is_monolithic && ctx.type == PIPE_SHADER_FRAGMENT) { LLVMValueRef parts[3]; union si_shader_part_key prolog_key; -- 2.30.2