void
radv_hash_rt_shaders(unsigned char *hash, const VkRayTracingPipelineCreateInfoKHR *pCreateInfo,
- uint32_t flags)
+ const struct radv_pipeline_key *key, uint32_t flags)
{
RADV_FROM_HANDLE(radv_pipeline_layout, layout, pCreateInfo->layout);
struct mesa_sha1 ctx;
if (layout)
_mesa_sha1_update(&ctx, layout->sha1, sizeof(layout->sha1));
+ _mesa_sha1_update(&ctx, key, sizeof(*key));
+
for (uint32_t i = 0; i < pCreateInfo->stageCount; ++i) {
RADV_FROM_HANDLE(vk_shader_module, module, pCreateInfo->pStages[i].module);
const VkSpecializationInfo *spec_info = pCreateInfo->pStages[i].pSpecializationInfo;
goto fail;
}
- radv_hash_rt_shaders(hash, &local_create_info, radv_get_hash_flags(device, keep_statistic_info));
struct vk_shader_module module = {.base.type = VK_OBJECT_TYPE_SHADER_MODULE};
VkPipelineShaderStageCreateInfo stage = {
struct radv_pipeline_key key = radv_generate_rt_pipeline_key(rt_pipeline, pCreateInfo->flags);
UNUSED gl_shader_stage last_vgt_api_stage = MESA_SHADER_NONE;
+ radv_hash_rt_shaders(hash, &local_create_info, &key,
+ radv_get_hash_flags(device, keep_statistic_info));
+
/* First check if we can get things from the cache before we take the expensive step of
* generating the nir. */
result = radv_create_shaders(
const struct radv_pipeline_key *key, uint32_t flags);
void radv_hash_rt_shaders(unsigned char *hash, const VkRayTracingPipelineCreateInfoKHR *pCreateInfo,
- uint32_t flags);
+ const struct radv_pipeline_key *key, uint32_t flags);
uint32_t radv_get_hash_flags(const struct radv_device *device, bool stats);