From 5730364d695b706c99c0d3fe6379cbeac61d79f1 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Wed, 23 Jan 2019 02:36:44 -0800 Subject: [PATCH] nir: Bail on clip/cull distance lowering if GLSL IR already did it. We have a GLSL IR pass to convert clip/cull distance float[] arrays into vec4[2] arrays. In ff281e6204, we attempted to skip this pass if the GLSL IR lowering had already run. But, that code was not quite right, as we forgot to strip away the per-vertex IO array layer for geometry and tessellation shader varyings. If the GLSL IR pass has run, the variables will not be marked as "compact". So we can simply check that and bail. Reviewed-by: Timothy Arceri --- src/compiler/nir/nir_lower_clip_cull_distance_arrays.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler/nir/nir_lower_clip_cull_distance_arrays.c b/src/compiler/nir/nir_lower_clip_cull_distance_arrays.c index 6e1557e..79d61fa 100644 --- a/src/compiler/nir/nir_lower_clip_cull_distance_arrays.c +++ b/src/compiler/nir/nir_lower_clip_cull_distance_arrays.c @@ -144,9 +144,9 @@ combine_clip_cull(nir_shader *nir, cull = var; } - /* if the GLSL lowering pass has already run, don't bother repeating */ if (!cull && clip) { - if (!glsl_type_is_array(clip->type)) + /* The GLSL IR lowering pass must have converted these to vectors */ + if (!clip->data.compact) return false; } -- 2.7.4