radv: fix when incomplete rt pipeline libraries are loaded from cache

It might be that the radv_pipeline_cache_lookup_nir_handle() in
radv_ray_tracing_pipeline_cache_search() fails but we will later need the
NIR. If rt_stages[i].shader was non-NULL, then we would not have created
the NIR.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Backport-to: 25.2
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
(cherry picked from commit 89eefdcadb)

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39745>
This commit is contained in:
Rhys Perry 2025-10-31 10:58:29 +00:00 committed by Dylan Baker
parent 8fec8e88f1
commit ac72225800
2 changed files with 3 additions and 3 deletions

View file

@ -114,7 +114,7 @@
"description": "radv: fix when incomplete rt pipeline libraries are loaded from cache",
"nominated": true,
"nomination_type": 4,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null,
"notes": null

View file

@ -616,7 +616,7 @@ radv_rt_compile_shaders(struct radv_device *device, struct vk_pipeline_cache *ca
*/
bool monolithic = !library && pipeline->stage_count < 50;
for (uint32_t i = 0; i < pCreateInfo->stageCount; i++) {
if (rt_stages[i].shader || rt_stages[i].nir)
if (rt_stages[i].nir)
continue;
int64_t stage_start = os_time_get_nano();
@ -651,7 +651,7 @@ radv_rt_compile_shaders(struct radv_device *device, struct vk_pipeline_cache *ca
}
for (uint32_t idx = 0; idx < pCreateInfo->stageCount; idx++) {
if (rt_stages[idx].shader || rt_stages[idx].nir)
if (rt_stages[idx].nir)
continue;
int64_t stage_start = os_time_get_nano();