From: Dave Airlie Date: Wed, 12 Aug 2020 05:48:42 +0000 (+1000) Subject: llvmpipe: only read 0 for channels being read X-Git-Tag: upstream/21.0.0~6537 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=430e3310e2aed924dc4e0729644e629007d73ef7;p=platform%2Fupstream%2Fmesa.git llvmpipe: only read 0 for channels being read KHR-GL45.robust_buffer_access_behavior.vertex_buffer_objects on the CTS 4.6.0 branch and this fixes it. Roland identified that if the vertex format doesn't contain channels then we shouldn't be overriding them to 0, so RGB fetch out of bounds should return 0 for RGB, but the A channel should still be getting back 1. Cc: Reviewed-by: Roland Scheidegger Part-of: --- diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 845ed62..22644aa 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -1128,7 +1128,7 @@ fetch_vector(struct gallivm_state *gallivm, } /* out-of-bound fetches return all zeros */ - for (i = 0; i < TGSI_NUM_CHANNELS; i++) { + for (i = 0; i < format_desc->nr_channels; i++) { inputs[i] = LLVMBuildBitCast(builder, inputs[i], blduivec.vec_type, ""); inputs[i] = LLVMBuildAnd(builder, inputs[i], valid_mask, ""); inputs[i] = LLVMBuildBitCast(builder, inputs[i],