diff --git a/src/gallium/drivers/zink/zink_clear.c b/src/gallium/drivers/zink/zink_clear.c index 6b6db04c3ca..6a9e00f92a5 100644 --- a/src/gallium/drivers/zink/zink_clear.c +++ b/src/gallium/drivers/zink/zink_clear.c @@ -75,10 +75,10 @@ clear_in_rp(struct pipe_context *pctx, if (buffers & PIPE_CLEAR_COLOR) { VkClearColorValue color; - color.float32[0] = pcolor->f[0]; - color.float32[1] = pcolor->f[1]; - color.float32[2] = pcolor->f[2]; - color.float32[3] = pcolor->f[3]; + color.uint32[0] = pcolor->ui[0]; + color.uint32[1] = pcolor->ui[1]; + color.uint32[2] = pcolor->ui[2]; + color.uint32[3] = pcolor->ui[3]; for (unsigned i = 0; i < fb->nr_cbufs; i++) { if (!(buffers & (PIPE_CLEAR_COLOR0 << i)) || !fb->cbufs[i]) @@ -134,10 +134,10 @@ clear_color_no_rp(struct zink_context *ctx, struct zink_resource *res, const uni range.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; VkClearColorValue color; - color.float32[0] = pcolor->f[0]; - color.float32[1] = pcolor->f[1]; - color.float32[2] = pcolor->f[2]; - color.float32[3] = pcolor->f[3]; + color.uint32[0] = pcolor->ui[0]; + color.uint32[1] = pcolor->ui[1]; + color.uint32[2] = pcolor->ui[2]; + color.uint32[3] = pcolor->ui[3]; if (zink_resource_image_needs_barrier(res, VK_IMAGE_LAYOUT_GENERAL, 0, 0) && zink_resource_image_needs_barrier(res, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 0, 0)) @@ -533,8 +533,7 @@ zink_fb_clear_util_unpack_clear_color(struct zink_framebuffer_clear_data *clear, } color->f[3] = clear->color.color.f[3]; } else { - for (unsigned i = 0; i < 4; i++) - color->f[i] = clear->color.color.f[i]; + *color = clear->color.color; } }