draw llvm: fix translation of formats with variable components

This commit is contained in:
Zack Rusin 2010-04-02 15:56:34 -04:00
parent ab5c097387
commit 557b75248a

View file

@ -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;
}