Skip to content

Commit

Permalink
Add-support-for-SPV_NVX_raytracing
Browse files Browse the repository at this point in the history
  • Loading branch information
chaocNV committed Sep 19, 2018
1 parent e8ffa06 commit b430877
Show file tree
Hide file tree
Showing 7 changed files with 103 additions and 5 deletions.
10 changes: 10 additions & 0 deletions glslc/src/shader_stage.cc
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,11 @@ shaderc_shader_kind MapStageNameToForcedKind(const string_piece& stage_name) {
{"compute", shaderc_glsl_compute_shader},
{"comp", shaderc_glsl_compute_shader},
#ifdef NV_EXTENSIONS
{"rgen", shaderc_glsl_raygen_shader },
{"rahit", shaderc_glsl_anyhit_shader },
{"rchit", shaderc_glsl_closesthit_shader },
{"rmiss", shaderc_glsl_miss_shader },
{"rint", shaderc_glsl_intersection_shader },
{"task", shaderc_glsl_task_shader },
{"mesh", shaderc_glsl_mesh_shader },
#endif
Expand Down Expand Up @@ -74,6 +79,11 @@ shaderc_shader_kind DeduceDefaultShaderKindFromFileName(
{"comp", shaderc_glsl_default_compute_shader},
{"spvasm", shaderc_spirv_assembly},
#ifdef NV_EXTENSIONS
{"rgen", shaderc_glsl_default_raygen_shader },
{"rahit", shaderc_glsl_default_anyhit_shader },
{"rchit", shaderc_glsl_default_closesthit_shader },
{"rmiss", shaderc_glsl_default_miss_shader },
{"rint", shaderc_glsl_default_intersection_shader },
{"task", shaderc_glsl_default_task_shader },
{"mesh", shaderc_glsl_default_mesh_shader },
#endif
Expand Down
15 changes: 15 additions & 0 deletions glslc/src/stage_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,21 @@ TEST(DeduceDefaultShaderKindFromFileName, ValidStage) {
glslc::DeduceDefaultShaderKindFromFileName("a.comp"));

#ifdef NV_EXTENSIONS
EXPECT_EQ(shaderc_glsl_default_raygen_shader,
glslc::DeduceDefaultShaderKindFromFileName("a.rgen"));

EXPECT_EQ(shaderc_glsl_default_anyhit_shader,
glslc::DeduceDefaultShaderKindFromFileName("a.rahit"));

EXPECT_EQ(shaderc_glsl_default_closesthit_shader,
glslc::DeduceDefaultShaderKindFromFileName("a.rchit"));

EXPECT_EQ(shaderc_glsl_default_miss_shader,
glslc::DeduceDefaultShaderKindFromFileName("a.rmiss"));

EXPECT_EQ(shaderc_glsl_default_intersection_shader,
glslc::DeduceDefaultShaderKindFromFileName("a.rint"));

EXPECT_EQ(shaderc_glsl_default_task_shader,
glslc::DeduceDefaultShaderKindFromFileName("a.task"));

Expand Down
18 changes: 15 additions & 3 deletions libshaderc/include/shaderc/shaderc.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,13 @@ typedef enum {
shaderc_tess_control_shader,
shaderc_tess_evaluation_shader,


shaderc_glsl_vertex_shader = shaderc_vertex_shader,
shaderc_glsl_fragment_shader = shaderc_fragment_shader,
shaderc_glsl_compute_shader = shaderc_compute_shader,
shaderc_glsl_geometry_shader = shaderc_geometry_shader,
shaderc_glsl_tess_control_shader = shaderc_tess_control_shader,
shaderc_glsl_tess_evaluation_shader = shaderc_tess_evaluation_shader,


// Deduce the shader kind from #pragma annotation in the source code. Compiler
// will emit error if #pragma annotation is not found.
shaderc_glsl_infer_from_source,
Expand All @@ -80,8 +78,22 @@ typedef enum {
shaderc_glsl_default_tess_control_shader,
shaderc_glsl_default_tess_evaluation_shader,
shaderc_spirv_assembly,

#ifdef NV_EXTENSIONS
shaderc_raygen_shader,
shaderc_anyhit_shader,
shaderc_closesthit_shader,
shaderc_miss_shader,
shaderc_intersection_shader,
shaderc_glsl_raygen_shader = shaderc_raygen_shader,
shaderc_glsl_anyhit_shader = shaderc_anyhit_shader,
shaderc_glsl_closesthit_shader = shaderc_closesthit_shader,
shaderc_glsl_miss_shader = shaderc_miss_shader,
shaderc_glsl_intersection_shader = shaderc_intersection_shader,
shaderc_glsl_default_raygen_shader,
shaderc_glsl_default_anyhit_shader,
shaderc_glsl_default_closesthit_shader,
shaderc_glsl_default_miss_shader,
shaderc_glsl_default_intersection_shader,
shaderc_task_shader,
shaderc_mesh_shader,
shaderc_glsl_task_shader = shaderc_task_shader,
Expand Down
31 changes: 31 additions & 0 deletions libshaderc/src/shaderc.cc
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,18 @@ EShLanguage GetForcedStage(shaderc_shader_kind kind) {
return EShLangTessControl;
case shaderc_glsl_tess_evaluation_shader:
return EShLangTessEvaluation;

#ifdef NV_EXTENSIONS
case shaderc_glsl_raygen_shader:
return EShLangRayGenNV;
case shaderc_glsl_anyhit_shader:
return EShLangAnyHitNV;
case shaderc_glsl_closesthit_shader:
return EShLangClosestHitNV;
case shaderc_glsl_miss_shader:
return EShLangMissNV;
case shaderc_glsl_intersection_shader:
return EShLangIntersectNV;
case shaderc_glsl_task_shader:
return EShLangTaskNV;
case shaderc_glsl_mesh_shader:
Expand All @@ -71,6 +82,11 @@ EShLanguage GetForcedStage(shaderc_shader_kind kind) {
case shaderc_glsl_default_tess_control_shader:
case shaderc_glsl_default_tess_evaluation_shader:
#ifdef NV_EXTENSIONS
case shaderc_glsl_default_raygen_shader:
case shaderc_glsl_default_anyhit_shader:
case shaderc_glsl_default_closesthit_shader:
case shaderc_glsl_default_miss_shader:
case shaderc_glsl_default_intersection_shader:
case shaderc_glsl_default_task_shader:
case shaderc_glsl_default_mesh_shader:
#endif
Expand Down Expand Up @@ -132,6 +148,11 @@ class StageDeducer {
case shaderc_glsl_tess_evaluation_shader:
case shaderc_glsl_infer_from_source:
#ifdef NV_EXTENSIONS
case shaderc_glsl_raygen_shader:
case shaderc_glsl_anyhit_shader:
case shaderc_glsl_closesthit_shader:
case shaderc_glsl_miss_shader:
case shaderc_glsl_intersection_shader:
case shaderc_glsl_task_shader:
case shaderc_glsl_mesh_shader:
#endif
Expand All @@ -149,6 +170,16 @@ class StageDeducer {
case shaderc_glsl_default_tess_evaluation_shader:
return EShLangTessEvaluation;
#ifdef NV_EXTENSIONS
case shaderc_glsl_default_raygen_shader:
return EShLangRayGenNV;
case shaderc_glsl_default_anyhit_shader:
return EShLangAnyHitNV;
case shaderc_glsl_default_closesthit_shader:
return EShLangClosestHitNV;
case shaderc_glsl_default_miss_shader:
return EShLangMissNV;
case shaderc_glsl_default_intersection_shader:
return EShLangIntersectNV;
case shaderc_glsl_default_task_shader:
return EShLangTaskNV;
case shaderc_glsl_default_mesh_shader:
Expand Down
10 changes: 10 additions & 0 deletions libshaderc/src/shaderc_private.h
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,16 @@ inline shaderc_util::Compiler::Stage shaderc_convert_specific_stage(
case shaderc_compute_shader:
return shaderc_util::Compiler::Stage::Compute;
#if NV_EXTENSIONS
case shaderc_raygen_shader:
return shaderc_util::Compiler::Stage::RayGenNV;
case shaderc_intersection_shader:
return shaderc_util::Compiler::Stage::IntersectNV;
case shaderc_anyhit_shader:
return shaderc_util::Compiler::Stage::AnyHitNV;
case shaderc_closesthit_shader:
return shaderc_util::Compiler::Stage::ClosestHitNV;
case shaderc_miss_shader:
return shaderc_util::Compiler::Stage::MissNV;
case shaderc_task_shader:
return shaderc_util::Compiler::Stage::TaskNV;
case shaderc_mesh_shader:
Expand Down
10 changes: 10 additions & 0 deletions libshaderc/src/shaderc_private_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,16 @@ TEST(ConvertSpecificStage, Exhaustive) {
EXPECT_EQ(shaderc_util::Compiler::Stage::Compute,
shaderc_convert_specific_stage(shaderc_compute_shader));
#ifdef NV_EXTENSIONS
EXPECT_EQ(shaderc_util::Compiler::Stage::RayGenNV,
shaderc_convert_specific_stage(shaderc_raygen_shader));
EXPECT_EQ(shaderc_util::Compiler::Stage::AnyHitNV,
shaderc_convert_specific_stage(shaderc_anyhit_shader));
EXPECT_EQ(shaderc_util::Compiler::Stage::ClosestHitNV,
shaderc_convert_specific_stage(shaderc_closesthit_shader));
EXPECT_EQ(shaderc_util::Compiler::Stage::IntersectNV,
shaderc_convert_specific_stage(shaderc_intersection_shader));
EXPECT_EQ(shaderc_util::Compiler::Stage::MissNV,
shaderc_convert_specific_stage(shaderc_miss_shader));
EXPECT_EQ(shaderc_util::Compiler::Stage::TaskNV,
shaderc_convert_specific_stage(shaderc_task_shader));
EXPECT_EQ(shaderc_util::Compiler::Stage::MeshNV,
Expand Down
14 changes: 12 additions & 2 deletions libshaderc_util/include/libshaderc_util/compiler.h
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,11 @@ class Compiler {
Fragment,
Compute,
#ifdef NV_EXTENSIONS
RayGenNV,
IntersectNV,
AnyHitNV,
ClosestHitNV,
MissNV,
TaskNV,
MeshNV,
#endif
Expand All @@ -183,8 +188,13 @@ class Compiler {
{Stage::Vertex, Stage::TessEval, Stage::TessControl, Stage::Geometry,
Stage::Fragment, Stage::Compute,
#ifdef NV_EXTENSIONS
Stage::TaskNV,
Stage::MeshNV,
Stage::RayGenNV,
Stage::IntersectNV,
Stage::AnyHitNV,
Stage::ClosestHitNV,
Stage::MissNV,
Stage::TaskNV,
Stage::MeshNV,
#endif
}};
return values;
Expand Down

0 comments on commit b430877

Please sign in to comment.