for (unsigned i = 0; i < pCreateInfo->groupCount; ++i) {
non_recursive_size = MAX2(groups[i].stack_size.non_recursive_size, non_recursive_size);
- const VkRayTracingShaderGroupCreateInfoKHR *group_info = &pCreateInfo->pGroups[i];
- uint32_t shader_id = VK_SHADER_UNUSED_KHR;
+ uint32_t shader_id = groups[i].recursive_shader;
unsigned size = groups[i].stack_size.recursive_size;
- switch (group_info->type) {
- case VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR:
- shader_id = group_info->generalShader;
- break;
- case VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR:
- case VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR:
- shader_id = group_info->closestHitShader;
- break;
- default:
- break;
- }
if (shader_id == VK_SHADER_UNUSED_KHR)
continue;
/* reserve stack sizes */
for (uint32_t group_idx = 0; group_idx < vars->create_info->groupCount; group_idx++) {
- const VkRayTracingShaderGroupCreateInfoKHR *group = vars->create_info->pGroups + group_idx;
+ struct radv_ray_tracing_group *group = groups + group_idx;
- if (stage_idx == group->generalShader || stage_idx == group->closestHitShader)
- groups[group_idx].stack_size.recursive_size =
- MAX2(groups[group_idx].stack_size.recursive_size, src_vars.stack_size);
+ if (stage_idx == group->recursive_shader)
+ group->stack_size.recursive_size =
+ MAX2(group->stack_size.recursive_size, src_vars.stack_size);
- if (stage_idx == group->anyHitShader || stage_idx == group->intersectionShader)
- groups[group_idx].stack_size.non_recursive_size =
- MAX2(groups[group_idx].stack_size.non_recursive_size, src_vars.stack_size);
+ if (stage_idx == group->any_hit_shader || stage_idx == group->intersection_shader)
+ group->stack_size.non_recursive_size =
+ MAX2(group->stack_size.non_recursive_size, src_vars.stack_size);
}
}
nir_push_if(b, nir_ine_imm(b, sbt_idx, 0));
for (unsigned i = 0; i < pCreateInfo->groupCount; ++i) {
- const VkRayTracingShaderGroupCreateInfoKHR *group_info = &pCreateInfo->pGroups[i];
+ struct radv_ray_tracing_group *group = &data->groups[i];
uint32_t shader_id = VK_SHADER_UNUSED_KHR;
- switch (group_info->type) {
+ switch (group->type) {
case VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR:
- shader_id = group_info->anyHitShader;
+ shader_id = group->any_hit_shader;
break;
default:
break;
nir_push_if(b, nir_ine_imm(b, nir_load_var(b, inner_vars.idx), 0));
for (unsigned i = 0; i < data->createInfo->groupCount; ++i) {
- const VkRayTracingShaderGroupCreateInfoKHR *group_info = &data->createInfo->pGroups[i];
+ struct radv_ray_tracing_group *group = &data->groups[i];
uint32_t shader_id = VK_SHADER_UNUSED_KHR;
uint32_t any_hit_shader_id = VK_SHADER_UNUSED_KHR;
- switch (group_info->type) {
+ switch (group->type) {
case VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR:
- shader_id = group_info->intersectionShader;
- any_hit_shader_id = group_info->anyHitShader;
+ shader_id = group->intersection_shader;
+ any_hit_shader_id = group->any_hit_shader;
break;
default:
break;
unsigned call_idx_base = 1;
for (unsigned i = 0; i < pCreateInfo->groupCount; ++i) {
- unsigned stage_idx = VK_SHADER_UNUSED_KHR;
- if (pCreateInfo->pGroups[i].type == VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR)
- stage_idx = pCreateInfo->pGroups[i].generalShader;
- else
- stage_idx = pCreateInfo->pGroups[i].closestHitShader;
+ unsigned stage_idx = groups[i].recursive_shader;
if (stage_idx == VK_SHADER_UNUSED_KHR)
continue;