zink: zero out zink_render_pass_state
authorDuncan Hopkins <duncan@thefoundry.co.uk>
Thu, 12 Mar 2020 16:45:39 +0000 (16:45 +0000)
committerMarge Bot <eric+marge@anholt.net>
Tue, 17 Mar 2020 13:04:30 +0000 (13:04 +0000)
Since zink_render_pass_state is used as a hash-key, the entire struct gets
compared. This means we don't want any uninitialized padding in there, or
else we risk getting false negatives. This has led to issues on macOS builds.

So let's zero out the struct before we start filling it out.

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4212>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4212>

src/gallium/drivers/zink/zink_context.c

index 0580d23..e434324 100644 (file)
@@ -484,7 +484,7 @@ get_render_pass(struct zink_context *ctx)
 {
    struct zink_screen *screen = zink_screen(ctx->base.screen);
    const struct pipe_framebuffer_state *fb = &ctx->fb_state;
-   struct zink_render_pass_state state;
+   struct zink_render_pass_state state = { 0 };
 
    for (int i = 0; i < fb->nr_cbufs; i++) {
       struct pipe_resource *res = fb->cbufs[i]->texture;