---
 src/gallium/drivers/r600/r600_llvm.c | 38 ++++++++++++++++++++++++++++++++++--
 1 file changed, 36 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_llvm.c 
b/src/gallium/drivers/r600/r600_llvm.c
index 32b8e56..d28182b 100644
--- a/src/gallium/drivers/r600/r600_llvm.c
+++ b/src/gallium/drivers/r600/r600_llvm.c
@@ -329,6 +329,30 @@ static void llvm_emit_epilogue(struct 
lp_build_tgsi_context * bld_base)
                                break;
                        }
                        }
+                       if (!next_param) {
+                               //Dummy export
+                               LLVMValueRef args[3];
+                               args[0] = 
LLVMGetUndef(LLVMVectorType(bld_base->base.elem_type, 4));
+                               args[1] = lp_build_const_int32(base->gallivm, 
0);
+                               args[2] = lp_build_const_int32(base->gallivm, 
V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_PARAM);
+                               build_intrinsic(
+                                       base->gallivm->builder,
+                                       "llvm.R600.store.swizzle",
+                                       
LLVMVoidTypeInContext(base->gallivm->context),
+                                       args, 3, 0);
+                       }
+                       if (!next_pos) {
+                               //Dummy export
+                               LLVMValueRef args[3];
+                               args[0] = 
LLVMGetUndef(LLVMVectorType(bld_base->base.elem_type, 4));
+                               args[1] = lp_build_const_int32(base->gallivm, 
0);
+                               args[2] = lp_build_const_int32(base->gallivm, 
V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_POS);
+                               build_intrinsic(
+                                       base->gallivm->builder,
+                                       "llvm.R600.store.swizzle",
+                                       
LLVMVoidTypeInContext(base->gallivm->context),
+                                       args, 3, 0);
+                               }
                } else if (ctx->type == TGSI_PROCESSOR_FRAGMENT) {
                        switch (ctx->r600_outputs[i].name) {
                        case TGSI_SEMANTIC_COLOR:
@@ -373,10 +397,20 @@ static void llvm_emit_epilogue(struct 
lp_build_tgsi_context * bld_base)
                                break;
                        }
                }
+               if (!has_color) {
+                       //Dummy export
+                       LLVMValueRef args[3];
+                       args[0] = 
LLVMGetUndef(LLVMVectorType(bld_base->base.elem_type, 4));
+                       args[1] = lp_build_const_int32(base->gallivm, 0);
+                       args[2] = lp_build_const_int32(base->gallivm, 
V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_PIXEL);
+                       build_intrinsic(
+                               base->gallivm->builder,
+                               "llvm.R600.store.swizzle",
+                               LLVMVoidTypeInContext(base->gallivm->context),
+                               args, 3, 0);
+                       }
        }
 
-       if (!has_color && ctx->type == TGSI_PROCESSOR_FRAGMENT)
-               lp_build_intrinsic(base->gallivm->builder, 
"llvm.R600.store.pixel.dummy", LLVMVoidTypeInContext(base->gallivm->context), 
0, 0);
 }
 
 static void llvm_emit_tex(
-- 
1.8.1

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to