radeonsi/nir: fix fs output index
authorTimothy Arceri <tarceri@itsqueeze.com>
Mon, 22 Jan 2018 03:41:25 +0000 (14:41 +1100)
committerTimothy Arceri <tarceri@itsqueeze.com>
Mon, 22 Jan 2018 22:11:22 +0000 (09:11 +1100)
Fixes the following piglit tests:

arb_blend_func_extended-fbo-extended-blend
arb_blend_func_extended-fbo-extended-blend-explicit
arb_blend_func_extended-fbo-extended-blend-explicit_gles3
arb_blend_func_extended-fbo-extended-blend-pattern
arb_blend_func_extended-fbo-extended-blend-pattern_gles2
arb_blend_func_extended-fbo-extended-blend-pattern_gles3
arb_blend_func_extended-fbo-extended-blend_gles3
ext_framebuffer_multisample/alpha-to-coverage-dual-src-blend
ext_framebuffer_multisample/alpha-to-one-dual-src-blend

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/si_shader_nir.c

index 97b647434b6d37c188f0e8ed16ea69d340a44c59..8784117833e9cff0ea374f249857f8b224f526c7 100644 (file)
@@ -317,6 +317,11 @@ void si_nir_scan_shader(const struct nir_shader *nir,
                if (nir->info.stage == MESA_SHADER_FRAGMENT) {
                        tgsi_get_gl_frag_result_semantic(variable->data.location,
                                &semantic_name, &semantic_index);
+
+                       /* Adjust for dual source blending */
+                       if (variable->data.index > 0) {
+                               semantic_index++;
+                       }
                } else {
                        tgsi_get_gl_varying_semantic(variable->data.location, true,
                                                     &semantic_name, &semantic_index);