From 1cfa6ef60672473f52fb6afdef82bac4b42cf90d Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 26 Sep 2022 07:10:22 +1000 Subject: [PATCH] llvmpipe: memset empty images in the key This fixes a bunch of valgrind warnings in dEQP-VK.pipeline.pipeline_library.descriptor_limits.fragment_shader.storage_images_63 Cc: mesa-stable Reviewed-by: Mike Blumenkrantz Part-of: (cherry picked from commit b144d3e6a7e9a31c8b62e43035f15dab34932273) --- .pick_status.json | 2 +- src/gallium/drivers/llvmpipe/lp_state_cs.c | 3 +++ src/gallium/drivers/llvmpipe/lp_state_fs.c | 4 ++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 57d4fa5f295..6c55d85d9b9 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -499,7 +499,7 @@ "description": "llvmpipe: memset empty images in the key", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/gallium/drivers/llvmpipe/lp_state_cs.c b/src/gallium/drivers/llvmpipe/lp_state_cs.c index 273dd8b944b..13873893755 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_cs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_cs.c @@ -653,6 +653,9 @@ make_variant_key(struct llvmpipe_context *lp, struct lp_image_static_state *lp_image; lp_image = lp_cs_variant_key_images(key); key->nr_images = shader->info.base.file_max[TGSI_FILE_IMAGE] + 1; + if (key->nr_images) + memset(lp_image, 0, + key->nr_images * sizeof *lp_image); for (i = 0; i < key->nr_images; ++i) { if (shader->info.base.file_mask[TGSI_FILE_IMAGE] & (1 << i)) { lp_sampler_static_texture_state_image(&lp_image[i].image_state, diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index 658642664ee..426b1864e82 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -4485,6 +4485,10 @@ make_variant_key(struct llvmpipe_context *lp, struct lp_image_static_state *lp_image = lp_fs_variant_key_images(key); key->nr_images = shader->info.base.file_max[TGSI_FILE_IMAGE] + 1; + + if (key->nr_images) + memset(lp_image, 0, + key->nr_images * sizeof *lp_image); for (unsigned i = 0; i < key->nr_images; ++i) { if (shader->info.base.file_mask[TGSI_FILE_IMAGE] & (1 << i)) { lp_sampler_static_texture_state_image(&lp_image[i].image_state,