Module: Mesa Branch: master Commit: 452586b56ab4cc787cd5843f6fd89e682e24ec79 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=452586b56ab4cc787cd5843f6fd89e682e24ec79
Author: Timothy Arceri <tarc...@itsqueeze.com> Date: Thu Dec 7 13:11:32 2017 +1100 radeonsi: add dummy implementation of si_nir_scan_tess_ctrl() Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com> Reviewed-by: Marek Olšák <marek.ol...@amd.com> --- src/gallium/drivers/radeonsi/si_shader.h | 3 +++ src/gallium/drivers/radeonsi/si_shader_nir.c | 19 +++++++++++++++++++ src/gallium/drivers/radeonsi/si_state_shaders.c | 1 + 3 files changed, 23 insertions(+) diff --git a/src/gallium/drivers/radeonsi/si_shader.h b/src/gallium/drivers/radeonsi/si_shader.h index c981d3562e..c449aa9684 100644 --- a/src/gallium/drivers/radeonsi/si_shader.h +++ b/src/gallium/drivers/radeonsi/si_shader.h @@ -652,6 +652,9 @@ const char *si_get_shader_name(const struct si_shader *shader, unsigned processo /* si_shader_nir.c */ void si_nir_scan_shader(const struct nir_shader *nir, struct tgsi_shader_info *info); +void si_nir_scan_tess_ctrl(const struct nir_shader *nir, + const struct tgsi_shader_info *info, + struct tgsi_tessctrl_info *out); void si_lower_nir(struct si_shader_selector *sel); /* Inline helpers. */ diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c index 2757d4e411..d331dfeaaa 100644 --- a/src/gallium/drivers/radeonsi/si_shader_nir.c +++ b/src/gallium/drivers/radeonsi/si_shader_nir.c @@ -130,6 +130,25 @@ static void scan_instruction(struct tgsi_shader_info *info, } } +void si_nir_scan_tess_ctrl(const struct nir_shader *nir, + const struct tgsi_shader_info *info, + struct tgsi_tessctrl_info *out) +{ + memset(out, 0, sizeof(*out)); + + if (nir->info.stage != MESA_SHADER_TESS_CTRL) + return; + + /* Initial value = true. Here the pass will accumulate results from + * multiple segments surrounded by barriers. If tess factors aren't + * written at all, it's a shader bug and we don't care if this will be + * true. + */ + out->tessfactors_are_def_in_all_invocs = true; + + /* TODO: Implement scanning of tess factors, see tgsi backend. */ +} + void si_nir_scan_shader(const struct nir_shader *nir, struct tgsi_shader_info *info) { diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c index 6fe6855ecc..ecb8a0dad8 100644 --- a/src/gallium/drivers/radeonsi/si_state_shaders.c +++ b/src/gallium/drivers/radeonsi/si_state_shaders.c @@ -2005,6 +2005,7 @@ static void *si_create_shader_selector(struct pipe_context *ctx, sel->nir = state->ir.nir; si_nir_scan_shader(sel->nir, &sel->info); + si_nir_scan_tess_ctrl(sel->nir, &sel->info, &sel->tcs_info); si_lower_nir(sel); } _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit