radeonsi: respect semantic indices for COLOR[i] fragment shader outputs
authorMarek Olšák <marek.olsak@amd.com>
Tue, 22 Oct 2013 20:05:35 +0000 (22:05 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Fri, 25 Oct 2013 09:55:55 +0000 (11:55 +0200)
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
src/gallium/drivers/radeonsi/radeonsi_shader.c

index 80ee325b0f2ad32f93b7ef99d2565dbe77493f24..42db8ca118b3de65d7c5d711ade381e88b96e280 100644 (file)
@@ -885,7 +885,6 @@ static void si_llvm_emit_epilogue(struct lp_build_tgsi_context * bld_base)
        LLVMValueRef last_args[9] = { 0 };
        LLVMValueRef pos_args[4][9] = { { 0 } };
        unsigned semantic_name;
-       unsigned color_count = 0;
        unsigned param_count = 0;
        int depth_index = -1, stencil_index = -1;
        int i;
@@ -960,15 +959,13 @@ handle_semantic:
                                        shader->output[i].param_offset = param_count;
                                        param_count++;
                                } else {
-                                       target = V_008DFC_SQ_EXP_MRT + color_count;
+                                       target = V_008DFC_SQ_EXP_MRT + shader->output[i].sid;
                                        if (si_shader_ctx->shader->key.ps.alpha_to_one) {
                                                si_alpha_to_one(bld_base, index);
                                        }
-                                       if (color_count == 0 &&
+                                       if (shader->output[i].sid == 0 &&
                                            si_shader_ctx->shader->key.ps.alpha_func != PIPE_FUNC_ALWAYS)
                                                si_alpha_test(bld_base, index);
-
-                                       color_count++;
                                }
                                break;
                        case TGSI_SEMANTIC_CLIPDIST: