diff options
author | Zack Rusin <[email protected]> | 2010-04-02 15:56:34 -0400 |
---|---|---|
committer | Zack Rusin <[email protected]> | 2010-04-02 15:56:34 -0400 |
commit | 557b75248a3ebc6daabe3c2b69ac24d409aaa1e0 (patch) | |
tree | 0ac15b07718374521a1d85cfe41eed475aa96880 /src/gallium | |
parent | ab5c09738760bc1b665b9809eaf921f4ac27057e (diff) |
draw llvm: fix translation of formats with variable components
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/auxiliary/draw/draw_llvm_translate.c | 13 |
1 files changed, 13 insertions, 0 deletions
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; } |