From a92f597b98bb032b904c7c8a8c3a9fe798b51915 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Sun, 22 Nov 2020 10:30:33 -0800 Subject: [PATCH] freedreno/ir3: Fix valgrind complaint about streamout state The warning is a bit misleading about where it shows up.. it complains about the shader key, due to shader key being calculated from (among other things) stream_output state that had some uninitialized garbage in the padding. ==84572== Uninitialised byte(s) found during client check request ==84572== at 0x60548E8: blob_write_bytes (blob.c:163) ==84572== by 0x6534EF7: compute_variant_key (ir3_disk_cache.c:111) ==84572== by 0x6535143: ir3_disk_cache_retrieve (ir3_disk_cache.c:171) ==84572== by 0x654D82F: create_variant (ir3_shader.c:251) ==84572== by 0x654DA2B: ir3_shader_get_variant (ir3_shader.c:301) ==84572== by 0x645B2CB: ir3_shader_variant (ir3_gallium.c:113) ==84572== by 0x645B7EB: ir3_shader_create (ir3_gallium.c:219) ==84572== by 0x645BAA7: ir3_shader_state_create (ir3_gallium.c:285) ==84572== by 0x6506003: fd6_shader_state_create (fd6_program.c:1136) ==84572== by 0x64676C7: assemble_tgsi (freedreno_program.c:105) ==84572== by 0x64679DF: fd_prog_init (freedreno_program.c:188) ==84572== by 0x6506157: fd6_prog_init (fd6_program.c:1172) ==84572== Address 0xeff1588 is 424 bytes inside a block of size 480 alloc'd ==84572== at 0x4866FA4: malloc (vg_replace_malloc.c:307) ==84572== by 0x605D46F: ralloc_size (ralloc.c:133) ==84572== by 0x605D52F: rzalloc_size (ralloc.c:166) ==84572== by 0x654DFF7: ir3_shader_from_nir (ir3_shader.c:473) ==84572== by 0x645B6C7: ir3_shader_create (ir3_gallium.c:182) ==84572== by 0x645BAA7: ir3_shader_state_create (ir3_gallium.c:285) ==84572== by 0x6506003: fd6_shader_state_create (fd6_program.c:1136) ==84572== by 0x64676C7: assemble_tgsi (freedreno_program.c:105) ==84572== by 0x64679DF: fd_prog_init (freedreno_program.c:188) ==84572== by 0x6506157: fd6_prog_init (fd6_program.c:1172) ==84572== by 0x64CB36F: fd6_context_create (fd6_context.c:154) ==84572== by 0x59D93BB: st_api_create_context (st_manager.c:917) Somehow this was showing up with dEQP-GLES31.info.vendor but not other things. Signed-off-by: Rob Clark Part-of: --- src/gallium/drivers/freedreno/ir3/ir3_gallium.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gallium/drivers/freedreno/ir3/ir3_gallium.c b/src/gallium/drivers/freedreno/ir3/ir3_gallium.c index 5a79a7692cc..743af58b240 100644 --- a/src/gallium/drivers/freedreno/ir3/ir3_gallium.c +++ b/src/gallium/drivers/freedreno/ir3/ir3_gallium.c @@ -176,7 +176,7 @@ ir3_shader_create(struct ir3_compiler *compiler, nir = tgsi_to_nir(cso->tokens, screen, false); } - struct ir3_stream_output_info stream_output; + struct ir3_stream_output_info stream_output = {}; copy_stream_out(&stream_output, &cso->stream_output); struct ir3_shader *shader = ir3_shader_from_nir(compiler, nir, 0, &stream_output);