@@ -20,7 +20,7 @@ namespace slang {
2020using STS = compiled::ShaderTextureSemantic;
2121using SBS = compiled::ShaderBufferSemantic;
2222
23- result::Result<compiled::Shader> ShaderPassCompiler::compile (const ShaderCompilerOptions &p_options) {
23+ result::Result<compiled::Shader> ShaderPassCompiler::compile (const ShaderCompilerOptions &p_options) const {
2424 std::vector<compiled::ShaderPass> passes;
2525 for (ShaderPass &pass : shader->passes ) {
2626 // Compile the pass
@@ -88,7 +88,7 @@ result::Result<compiled::Shader> ShaderPassCompiler::compile(const ShaderCompile
8888 };
8989}
9090
91- result::Result<compiled::ShaderPass> ShaderPassCompiler::compile_pass (ShaderPass &p_pass, const ShaderCompilerOptions &p_options) {
91+ result::Result<compiled::ShaderPass> ShaderPassCompiler::compile_pass (ShaderPass &p_pass, const ShaderCompilerOptions &p_options) const {
9292 auto res = make_compilers_for_pass (p_pass, p_options);
9393 if (res.is_err ()) {
9494 return res.take_err ();
@@ -142,13 +142,6 @@ result::Result<compiled::ShaderPass> ShaderPassCompiler::compile_pass(ShaderPass
142142 };
143143}
144144
145- static spirv_cross::CompilerGLSL::Options default_options () {
146- spirv_cross::CompilerGLSL::Options options;
147- options.fragment .default_float_precision = spirv_cross::CompilerGLSL::Options::Precision::Highp;
148- options.fragment .default_int_precision = spirv_cross::CompilerGLSL::Options::Precision::Highp;
149- return options;
150- }
151-
152145static Compiler compiler_from_spirv (std::vector<uint32_t > &&p_spirv) {
153146 spirv_cross::Parser parser (std::move (p_spirv));
154147 parser.parse ();
@@ -194,7 +187,7 @@ result::Result<std::vector<uint32_t>> ShaderPassCompiler::ir_for_pass(ShaderPass
194187
195188 auto messages = (EShMessages)(EShMsgSpvRules | EShMsgVulkanRules | EShMsgDebugInfo);
196189
197- const int DefaultVersion = 110 ;
190+ constexpr int DefaultVersion = 110 ;
198191
199192 if (!glsl.parse (GetDefaultResources (), DefaultVersion, false , messages)) {
200193 std::string error = glsl.getInfoLog ();
@@ -271,7 +264,7 @@ result::Result<ShaderSymbols> ShaderPassCompiler::make_symbols() const {
271264 return sym;
272265}
273266
274- bool ShaderPassCompiler::validate_resources (spirv_cross::ShaderResources &p_vert, spirv_cross::ShaderResources &p_frag) {
267+ bool ShaderPassCompiler::validate_resources (const spirv_cross::ShaderResources &p_vert, const spirv_cross::ShaderResources &p_frag) {
275268 return p_vert.sampled_images .empty () &&
276269 p_vert.storage_buffers .empty () &&
277270 p_vert.subpass_inputs .empty () &&
@@ -482,19 +475,19 @@ error::ErrorOpt ShaderPassCompiler::add_active_buffer_ranges(ShaderPassReflectio
482475 return {};
483476}
484477
485- compiled::UBOBufferDescriptor ShaderPassCompiler::make_ubo_descriptor (slang::ShaderPassReflection &p_ref) const {
478+ compiled::UBOBufferDescriptor ShaderPassCompiler::make_ubo_descriptor (slang::ShaderPassReflection &p_ref) {
486479 auto desc = make_descriptors (p_ref, ShaderBufferSemanticMeta::UBO );
487480
488481 return compiled::UBOBufferDescriptor (p_ref.ubo .binding , (compiled::Stage)p_ref.ubo .stage , p_ref.ubo .size , desc);
489482}
490483
491- compiled::PushBufferDescriptor ShaderPassCompiler::make_push_descriptor (slang::ShaderPassReflection &p_ref) const {
484+ compiled::PushBufferDescriptor ShaderPassCompiler::make_push_descriptor (slang::ShaderPassReflection &p_ref) {
492485 auto desc = make_descriptors (p_ref, ShaderBufferSemanticMeta::PUSH );
493486
494487 return compiled::PushBufferDescriptor ((compiled::Stage)p_ref.push .stage , p_ref.push .size , desc);
495488}
496489
497- std::vector<compiled::BufferUniformDescriptor> ShaderPassCompiler::make_descriptors (slang::ShaderPassReflection &p_ref, ShaderBufferSemanticMeta::OffsetType p_type) const {
490+ std::vector<compiled::BufferUniformDescriptor> ShaderPassCompiler::make_descriptors (const slang::ShaderPassReflection &p_ref, ShaderBufferSemanticMeta::OffsetType p_type) {
498491 // Find bound global semantics, like MVP, FrameCount, etc
499492 std::vector<compiled::BufferUniformDescriptor> descriptors;
500493 for (auto &kv : p_ref.semantics ) {
@@ -503,10 +496,10 @@ std::vector<compiled::BufferUniformDescriptor> ShaderPassCompiler::make_descript
503496 if (auto offset = meta->get_offset (p_type); offset.has_value ()) {
504497 descriptors.push_back (
505498 compiled::BufferUniformDescriptor (sem,
506- std::nullopt ,
507- meta->name ,
508- meta->number_of_components * sizeof (float ),
509- offset.value ()));
499+ std::nullopt ,
500+ meta->name ,
501+ meta->number_of_components * sizeof (float ),
502+ offset.value ()));
510503 }
511504 }
512505
@@ -516,10 +509,10 @@ std::vector<compiled::BufferUniformDescriptor> ShaderPassCompiler::make_descript
516509 if (auto offset = meta->get_offset (p_type); offset.has_value ()) {
517510 descriptors.push_back (
518511 compiled::BufferUniformDescriptor (SBS ::FLOAT_PARAMETER ,
519- meta->index ,
520- meta->name ,
521- meta->number_of_components * sizeof (float ),
522- offset.value ()));
512+ meta->index ,
513+ meta->name ,
514+ meta->number_of_components * sizeof (float ),
515+ offset.value ()));
523516 }
524517 }
525518
@@ -532,18 +525,18 @@ std::vector<compiled::BufferUniformDescriptor> ShaderPassCompiler::make_descript
532525 if (auto offset = meta->get_offset (p_type); offset.has_value ()) {
533526 descriptors.push_back (
534527 compiled::BufferUniformDescriptor (sem,
535- meta->index ,
536- meta->name ,
537- 4 * sizeof (float ), // these are always vec4
538- offset.value ()));
528+ meta->index ,
529+ meta->name ,
530+ 4 * sizeof (float ), // these are always vec4
531+ offset.value ()));
539532 }
540533 }
541534 }
542535
543536 return descriptors;
544537}
545538
546- std::vector<compiled::TextureDescriptor> ShaderPassCompiler::make_textures (ShaderPassReflection &p_ref, ShaderSymbols &p_sym) const {
539+ std::vector<compiled::TextureDescriptor> ShaderPassCompiler::make_textures (const ShaderPassReflection &p_ref, ShaderSymbols &p_sym) const {
547540 std::vector<compiled::TextureDescriptor> textures;
548541
549542 for (auto &kv : p_ref.textures ) {
@@ -557,11 +550,11 @@ std::vector<compiled::TextureDescriptor> ShaderPassCompiler::make_textures(Shade
557550 auto filter = sem == STS ::USER ? shader->luts [meta->index ].filter : shader->passes [p_ref.pass_number ].filter ;
558551 textures.push_back (
559552 compiled::TextureDescriptor (meta->name ,
560- sem,
561- binding,
562- wrap,
563- filter,
564- meta->index ));
553+ sem,
554+ binding,
555+ wrap,
556+ filter,
557+ meta->index ));
565558 }
566559 }
567560 }
0 commit comments