Skip to content

Commit 6ce4459

Browse files
author
Hai Nguyen
committed
Added missing shader stage processing for raytracing
1 parent d907642 commit 6ce4459

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

common/output_stream.cpp

+9-1
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,14 @@ std::string ToStringShaderStage(SpvReflectShaderStageFlagBits stage) {
107107
case SPV_REFLECT_SHADER_STAGE_GEOMETRY_BIT : return "GS";
108108
case SPV_REFLECT_SHADER_STAGE_FRAGMENT_BIT : return "PS";
109109
case SPV_REFLECT_SHADER_STAGE_COMPUTE_BIT : return "CS";
110+
case SPV_REFLECT_SHADER_STAGE_TASK_BIT_NV : return "TASK";
111+
case SPV_REFLECT_SHADER_STAGE_MESH_BIT_NV : return "MESH";
112+
case SPV_REFLECT_SHADER_STAGE_RAYGEN_BIT_KHR : return "RAYGEN";
113+
case SPV_REFLECT_SHADER_STAGE_ANY_HIT_BIT_KHR : return "ANY_HIT";
114+
case SPV_REFLECT_SHADER_STAGE_CLOSEST_HIT_BIT_KHR : return "CLOSEST_HIT";
115+
case SPV_REFLECT_SHADER_STAGE_MISS_BIT_KHR : return "MISS";
116+
case SPV_REFLECT_SHADER_STAGE_INTERSECTION_BIT_KHR : return "INTERSECTION";
117+
case SPV_REFLECT_SHADER_STAGE_CALLABLE_BIT_KHR : return "CALLABLE";
110118
}
111119
// Unhandled SpvReflectShaderStageFlagBits enum value
112120
return "???";
@@ -938,6 +946,7 @@ void StreamWriteShaderModule(std::ostream& os, const SpvReflectShaderModule& obj
938946
os << "source lang : " << spvReflectSourceLanguage(obj.source_language) << "\n";
939947
os << "source lang ver : " << obj.source_language_version << "\n";
940948
os << "source file : " << (obj.source_file != NULL ? obj.source_file : "") << "\n";
949+
os << "shader stage : " << ToStringShaderStage(obj.shader_stage) << "\n";
941950

942951
if (obj.entry_point_count > 1) {
943952
// TODO: Figure out what to do with multiple entry points
@@ -946,7 +955,6 @@ void StreamWriteShaderModule(std::ostream& os, const SpvReflectShaderModule& obj
946955
StreamWriteEntryPoint(os, obj.entry_points[0], "");
947956
}
948957

949-
//os << "shader stage : " << ToStringShaderStage(obj.shader_stage);
950958
//if ((obj.shader_stage == SPV_REFLECT_SHADER_STAGE_COMPUTE_BIT)) {
951959
// os << "local size : " << obj.ent
952960
//}

spirv_reflect.c

+6
Original file line numberDiff line numberDiff line change
@@ -2971,6 +2971,12 @@ static SpvReflectResult ParseEntryPoints(Parser* p_parser, SpvReflectShaderModul
29712971
case SpvExecutionModelGLCompute : p_entry_point->shader_stage = SPV_REFLECT_SHADER_STAGE_COMPUTE_BIT; break;
29722972
case SpvExecutionModelTaskNV : p_entry_point->shader_stage = SPV_REFLECT_SHADER_STAGE_TASK_BIT_NV; break;
29732973
case SpvExecutionModelMeshNV : p_entry_point->shader_stage = SPV_REFLECT_SHADER_STAGE_MESH_BIT_NV; break;
2974+
case SpvExecutionModelRayGenerationKHR : p_entry_point->shader_stage = SPV_REFLECT_SHADER_STAGE_RAYGEN_BIT_KHR; break;
2975+
case SpvExecutionModelIntersectionKHR : p_entry_point->shader_stage = SPV_REFLECT_SHADER_STAGE_INTERSECTION_BIT_KHR; break;
2976+
case SpvExecutionModelAnyHitKHR : p_entry_point->shader_stage = SPV_REFLECT_SHADER_STAGE_ANY_HIT_BIT_KHR; break;
2977+
case SpvExecutionModelClosestHitKHR : p_entry_point->shader_stage = SPV_REFLECT_SHADER_STAGE_CLOSEST_HIT_BIT_KHR; break;
2978+
case SpvExecutionModelMissKHR : p_entry_point->shader_stage = SPV_REFLECT_SHADER_STAGE_MISS_BIT_KHR; break;
2979+
case SpvExecutionModelCallableKHR : p_entry_point->shader_stage = SPV_REFLECT_SHADER_STAGE_CALLABLE_BIT_KHR; break;
29742980
}
29752981

29762982
++entry_point_index;

spirv_reflect.h

+7
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,13 @@ typedef enum SpvReflectShaderStageFlagBits {
186186
SPV_REFLECT_SHADER_STAGE_COMPUTE_BIT = 0x00000020, // = VK_SHADER_STAGE_COMPUTE_BIT
187187
SPV_REFLECT_SHADER_STAGE_TASK_BIT_NV = 0x00000040, // = VK_SHADER_STAGE_TASK_BIT_NV
188188
SPV_REFLECT_SHADER_STAGE_MESH_BIT_NV = 0x00000080, // = VK_SHADER_STAGE_MESH_BIT_NV
189+
SPV_REFLECT_SHADER_STAGE_RAYGEN_BIT_KHR = 0x00000100, // VK_SHADER_STAGE_RAYGEN_BIT_KHR
190+
SPV_REFLECT_SHADER_STAGE_ANY_HIT_BIT_KHR = 0x00000200, // VK_SHADER_STAGE_ANY_HIT_BIT_KHR
191+
SPV_REFLECT_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 0x00000400, // VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR
192+
SPV_REFLECT_SHADER_STAGE_MISS_BIT_KHR = 0x00000800, // VK_SHADER_STAGE_MISS_BIT_KHR
193+
SPV_REFLECT_SHADER_STAGE_INTERSECTION_BIT_KHR = 0x00001000, // VK_SHADER_STAGE_INTERSECTION_BIT_KHR
194+
SPV_REFLECT_SHADER_STAGE_CALLABLE_BIT_KHR = 0x00002000, // VK_SHADER_STAGE_CALLABLE_BIT_KHR
195+
189196
} SpvReflectShaderStageFlagBits;
190197

191198
/*! @enum SpvReflectGenerator

0 commit comments

Comments
 (0)