From 35790418978224a59db941df0ce770d07588b6d1 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 3 Mar 2022 09:23:03 -0500 Subject: [PATCH] zink: mark fbfetch push sets as non-cached these can't be cached, so ensure the value isn't uninitialized Test case 'KHR-GL46.blend_equation_advanced.blend_all.GL_HARDLIGHT_KHR_all_qualifier'.. ==1193311== Conditional jump or move depends on uninitialised value(s) ==1193311== at 0x634EF05: update_push_ubo_descriptors (zink_descriptors.c:1230) ==1193311== by 0x634FCC5: zink_descriptors_update (zink_descriptors.c:1412) ==1193311== by 0x63A5EA1: void zink_draw<(zink_multidraw)1, (zink_dynamic_state)3, true, false>(pipe_context*, pipe_draw_info const*, unsigned int, pipe_draw_indirect_info const*, pipe_draw_start_count_bias const*, unsigned int, pipe_vertex_state*, unsigned int) (zink_draw.cpp:788) ==1193311== by 0x635A0AF: void zink_draw_vbo<(zink_multidraw)1, (zink_dynamic_state)3, true>(pipe_context*, pipe_draw_info const*, unsigned int, pipe_draw_indirect_info const*, pipe_draw_start_count_bias const*, unsigned int) (zink_draw.cpp:907) ==1193311== by 0x6174397: tc_call_draw_single (u_threaded_context.c:3150) ==1193311== by 0x616C403: tc_batch_execute (u_threaded_context.c:211) ==1193311== by 0x616CA44: _tc_sync (u_threaded_context.c:362) ==1193311== by 0x61725E9: tc_texture_map (u_threaded_context.c:2274) ==1193311== by 0x5A9DAE9: pipe_texture_map_3d (u_inlines.h:572) ==1193311== by 0x5A9EB80: st_ReadPixels (st_cb_readpixels.c:530) ==1193311== by 0x5A0647A: read_pixels (readpix.c:1178) ==1193311== by 0x5A0647A: _mesa_ReadnPixelsARB (readpix.c:1195) ==1193311== by 0x5A06517: _mesa_ReadPixels (readpix.c:1210) cc: mesa-stable Acked-by: Emma Anholt Reviewed-by: Dave Airlie Part-of: (cherry picked from commit 9a91a520de76df3c192eeefbbcba6f955a9d5672) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_descriptors.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 5b4c3414cbb..46f84b19083 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1651,7 +1651,7 @@ "description": "zink: mark fbfetch push sets as non-cached", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/gallium/drivers/zink/zink_descriptors.c b/src/gallium/drivers/zink/zink_descriptors.c index 4e89b68db4a..9668887ea32 100644 --- a/src/gallium/drivers/zink/zink_descriptors.c +++ b/src/gallium/drivers/zink/zink_descriptors.c @@ -1419,6 +1419,7 @@ zink_descriptors_update(struct zink_context *ctx, bool is_compute) if (pg->dd->push_usage) { if (pg->dd->fbfetch) { /* fbfetch is not cacheable: grab a lazy set because it's faster */ + cache_hit = false; desc_set = zink_descriptors_alloc_lazy_push(ctx); } else { zds = zink_descriptor_set_get(ctx, ZINK_DESCRIPTOR_TYPES, is_compute, &cache_hit);