From 557b75248a3ebc6daabe3c2b69ac24d409aaa1e0 Mon Sep 17 00:00:00 2001 From: Zack Rusin Date: Fri, 2 Apr 2010 15:56:34 -0400 Subject: [PATCH] draw llvm: fix translation of formats with variable components --- src/gallium/auxiliary/draw/draw_llvm_translate.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/gallium/auxiliary/draw/draw_llvm_translate.c b/src/gallium/auxiliary/draw/draw_llvm_translate.c index bc17d3861aa..b29ebdec3a9 100644 --- a/src/gallium/auxiliary/draw/draw_llvm_translate.c +++ b/src/gallium/auxiliary/draw/draw_llvm_translate.c @@ -428,6 +428,12 @@ fetch(LLVMBuilderRef builder, int offset = 0; LLVMValueRef res = LLVMConstNull( LLVMVectorType(LLVMFloatType(), 4)); + LLVMValueRef defaults[4]; + + defaults[0] = LLVMConstReal(LLVMFloatType(), 0); + defaults[1] = LLVMConstReal(LLVMFloatType(), 0); + defaults[2] = LLVMConstReal(LLVMFloatType(), 0); + defaults[3] = LLVMConstReal(LLVMFloatType(), 1); for (i = 0; i < nr_components; ++i) { LLVMValueRef src_index = LLVMConstInt(LLVMInt32Type(), offset, 0); @@ -447,6 +453,13 @@ fetch(LLVMBuilderRef builder, dst_index, ""); offset += val_size; } + for (; i < 4; ++i) { + LLVMValueRef dst_index = LLVMConstInt(LLVMInt32Type(), i, 0); + res = LLVMBuildInsertElement(builder, + res, + defaults[i], + dst_index, ""); + } return res; } -- 2.30.2