From 6da016cded42114f1c31e367fc4643ff8aefce80 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Wed, 20 Apr 2022 18:28:28 +0300 Subject: [PATCH] nir/serialize: restore ray query variables The ray query status of a variable is tracked in the nir_variable::data. We need to store it in the serialization otherwise restoring NIR from a cache will drop the annotation. Signed-off-by: Lionel Landwerlin Fixes: 5a9cdab17050 ("nir: track variables representing ray queries") Reviewed-by: Caio Oliveira Part-of: (cherry picked from commit a4c5521ea9b1852734672e1978ff769a1e11113f) --- .pick_status.json | 2 +- src/compiler/nir/nir_serialize.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 4bdce42901b..e318d56137c 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -841,7 +841,7 @@ "description": "nir/serialize: restore ray query variables", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "5a9cdab170502039bf0330c42295decbfdfa4c6f" }, diff --git a/src/compiler/nir/nir_serialize.c b/src/compiler/nir/nir_serialize.c index 73bf7cd44e9..7b1108533d4 100644 --- a/src/compiler/nir/nir_serialize.c +++ b/src/compiler/nir/nir_serialize.c @@ -213,7 +213,7 @@ union packed_var { unsigned data_encoding:2; unsigned type_same_as_last:1; unsigned interface_type_same_as_last:1; - unsigned _pad:1; + unsigned ray_query:1; unsigned num_members:16; } u; }; @@ -284,6 +284,8 @@ write_variable(write_ctx *ctx, const nir_variable *var) flags.u.data_encoding = var_encode_full; } + flags.u.ray_query = var->data.ray_query; + blob_write_uint32(ctx->blob, flags.u32); if (!flags.u.type_same_as_last) { @@ -385,6 +387,8 @@ read_variable(read_ctx *ctx) ctx->last_var_data = var->data; } + var->data.ray_query = flags.u.ray_query; + var->num_state_slots = flags.u.num_state_slots; if (var->num_state_slots != 0) { var->state_slots = ralloc_array(var, nir_state_slot,