[Mesa-dev] [PATCH] draw/gs: fix extracting of the clip
Jose Fonseca
jfonseca at vmware.com
Tue May 14 12:33:44 PDT 2013
Looks good to me. Thanks for the quick turnaround.
Jose
----- Original Message -----
> The indices are not consecutive when using the geometry shader,
> which means we were extracting non existing values. Create
> an array of linear indices and always use it instead of the passed
> indices. Found by Jose.
>
> Signed-off-by: Zack Rusin <zackr at vmware.com>
> ---
> src/gallium/auxiliary/draw/draw_llvm.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/src/gallium/auxiliary/draw/draw_llvm.c
> b/src/gallium/auxiliary/draw/draw_llvm.c
> index 017d729..4a71955 100644
> --- a/src/gallium/auxiliary/draw/draw_llvm.c
> +++ b/src/gallium/auxiliary/draw/draw_llvm.c
> @@ -871,6 +871,7 @@ store_aos_array(struct gallivm_state *gallivm,
> LLVMBuilderRef builder = gallivm->builder;
> LLVMValueRef attr_index = lp_build_const_int32(gallivm, attrib);
> LLVMValueRef inds[LP_MAX_VECTOR_WIDTH / 32];
> + LLVMValueRef linear_inds[LP_MAX_VECTOR_WIDTH / 32];
> LLVMValueRef io_ptrs[LP_MAX_VECTOR_WIDTH / 32];
> int vector_length = soa_type.length;
> int i;
> @@ -878,10 +879,11 @@ store_aos_array(struct gallivm_state *gallivm,
> debug_assert(TGSI_NUM_CHANNELS == 4);
>
> for (i = 0; i < vector_length; i++) {
> + linear_inds[i] = lp_build_const_int32(gallivm, i);
> if (indices) {
> inds[i] = indices[i];
> } else {
> - inds[i] = lp_build_const_int32(gallivm, i);
> + inds[i] = linear_inds[i];
> }
> io_ptrs[i] = LLVMBuildGEP(builder, io_ptr, &inds[i], 1, "");
> }
> @@ -904,7 +906,7 @@ store_aos_array(struct gallivm_state *gallivm,
> cliptmp = LLVMBuildOr(builder, val, clipmask, "");
> for (i = 0; i < vector_length; i++) {
> LLVMValueRef id_ptr = draw_jit_header_id(gallivm, io_ptrs[i]);
> - val = LLVMBuildExtractElement(builder, cliptmp, inds[i], "");
> + val = LLVMBuildExtractElement(builder, cliptmp, linear_inds[i],
> "");
> val = adjust_mask(gallivm, val);
> LLVMBuildStore(builder, val, id_ptr);
> #if DEBUG_STORE
> --
> 1.7.10.4
>
More information about the mesa-dev
mailing list