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: <mesa-stable@lists.freedesktop.org>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6287>
This commit is contained in:
Dave Airlie 2020-08-12 15:48:42 +10:00 committed by Marge Bot
parent f1001a3827
commit 430e3310e2

View file

@ -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],