pan/bi: Fix out-of-bounds write in va_lower_split_64bit

...with dual source blending. Fixes shaders/dolphin/smg.1.shader_test

There are more IR sources than Valhall machine sources here.

Fixes: b48933d641 ("pan/va: Include BLEND for va_swap_12")
Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17794>
(cherry picked from commit b5a6375f546c8a74fb81a70db6819f0281e3292e)
This commit is contained in:
Alyssa Rosenzweig 2022-08-31 16:54:02 -04:00 committed by Dylan Baker
parent 4022487538
commit 7d81b290d4
2 changed files with 2 additions and 2 deletions

View File

@ -5548,7 +5548,7 @@
"description": "pan/bi: Fix out-of-bounds write in va_lower_split_64bit", "description": "pan/bi: Fix out-of-bounds write in va_lower_split_64bit",
"nominated": true, "nominated": true,
"nomination_type": 1, "nomination_type": 1,
"resolution": 0, "resolution": 1,
"main_sha": null, "main_sha": null,
"because_sha": "b48933d6411a379c128b31174474949046a6915c" "because_sha": "b48933d6411a379c128b31174474949046a6915c"
}, },

View File

@ -67,7 +67,7 @@ va_lower_split_64bit(bi_context *ctx)
{ {
bi_foreach_instr_global(ctx, I) { bi_foreach_instr_global(ctx, I) {
bi_foreach_src(I, s) { bi_foreach_src(I, s) {
if (bi_is_null(I->src[s])) if (bi_is_null(I->src[s]) || s >= 4)
continue; continue;
struct va_src_info info = va_src_info(I->op, s); struct va_src_info info = va_src_info(I->op, s);