From afc96598564034d318ff753bd0d1dd4c556db2eb Mon Sep 17 00:00:00 2001 From: Martin Dinkov Date: Tue, 23 Feb 2021 14:53:35 -0500 Subject: [PATCH] The test declares VkSpecializationInfo in a localized scope and calls vkCreateRayTracingPipelinesKHR outside of that scope. Thus, by the time vkCreateRayTracingPipelinesKHR is called, VkSpecializationInfo has been destroyed. --- examples/raytracingreflections/raytracingreflections.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/examples/raytracingreflections/raytracingreflections.cpp b/examples/raytracingreflections/raytracingreflections.cpp index 96bb3fb4..6b6dfdd1 100644 --- a/examples/raytracingreflections/raytracingreflections.cpp +++ b/examples/raytracingreflections/raytracingreflections.cpp @@ -374,13 +374,14 @@ public: */ std::vector shaderStages; + VkSpecializationMapEntry specializationMapEntry = vks::initializers::specializationMapEntry(0, 0, sizeof(uint32_t)); + uint32_t maxRecursion = 4; + VkSpecializationInfo specializationInfo = vks::initializers::specializationInfo(1, &specializationMapEntry, sizeof(maxRecursion), &maxRecursion); + // Ray generation group { shaderStages.push_back(loadShader(getShadersPath() + "raytracingreflections/raygen.rgen.spv", VK_SHADER_STAGE_RAYGEN_BIT_KHR)); // Pass recursion depth for reflections to ray generation shader via specialization constant - VkSpecializationMapEntry specializationMapEntry = vks::initializers::specializationMapEntry(0, 0, sizeof(uint32_t)); - uint32_t maxRecursion = 4; - VkSpecializationInfo specializationInfo = vks::initializers::specializationInfo(1, &specializationMapEntry, sizeof(maxRecursion), &maxRecursion); shaderStages.back().pSpecializationInfo = &specializationInfo; VkRayTracingShaderGroupCreateInfoKHR shaderGroup{}; shaderGroup.sType = VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR;