From: Zack Rusin Date: Fri, 2 Apr 2010 19:56:34 +0000 (-0400) Subject: draw llvm: fix translation of formats with variable components X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=557b75248a3ebc6daabe3c2b69ac24d409aaa1e0;p=mesa.git draw llvm: fix translation of formats with variable components --- 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; }