Mesa (master): nir/linking: always set the used_across_stages/ outputs_read bits
Dave Airlie
airlied at kemper.freedesktop.org
Mon Dec 18 20:44:39 UTC 2017
Module: Mesa
Branch: master
Commit: 0e8e7ccf9dc80588e569e9ff11c880f3d5d57607
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0e8e7ccf9dc80588e569e9ff11c880f3d5d57607
Author: Dave Airlie <airlied at redhat.com>
Date: Mon Dec 18 16:49:43 2017 +1000
nir/linking: always set the used_across_stages/outputs_read bits
If we don't remap and output this code would trample the outputs
read bits.
This fixes a regression in
dEQP-VK.tessellation.shader_input_output.barrier
Fixes: 1c9c42d16b4c (nir: add varying component packing helpers)
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied at redhat.com>
---
src/compiler/nir/nir_linking_helpers.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/compiler/nir/nir_linking_helpers.c b/src/compiler/nir/nir_linking_helpers.c
index 9f0122d451..6459c6a24d 100644
--- a/src/compiler/nir/nir_linking_helpers.c
+++ b/src/compiler/nir/nir_linking_helpers.c
@@ -297,14 +297,15 @@ remap_slots_and_components(struct exec_list *var_list, gl_shader_stage stage,
unsigned location = var->data.location - VARYING_SLOT_VAR0;
struct varying_loc *new_loc = &remap[location][var->data.location_frac];
- if (new_loc->location) {
- uint64_t slots = (((uint64_t)1 << num_slots) - 1) << var->data.location;
- if (slots & *slots_used)
- used_across_stages = true;
- if (slots & *out_slots_read)
- outputs_read = true;
+ uint64_t slots = (((uint64_t)1 << num_slots) - 1) << var->data.location;
+ if (slots & *slots_used)
+ used_across_stages = true;
+
+ if (slots & *out_slots_read)
+ outputs_read = true;
+ if (new_loc->location) {
var->data.location = new_loc->location;
var->data.location_frac = new_loc->component;
}
More information about the mesa-commit
mailing list