@@ -320,7 +320,7 @@ namespace Slang
320
320
321
321
//
322
322
323
- Profile Profile::LookUp (char const * name)
323
+ Profile Profile::lookUp (char const * name)
324
324
{
325
325
#define PROFILE (TAG, NAME, STAGE, VERSION ) if (strcmp(name, #NAME) == 0 ) return Profile::TAG;
326
326
#define PROFILE_ALIAS (TAG, DEF, NAME ) if (strcmp(name, #NAME) == 0 ) return Profile::TAG;
@@ -408,36 +408,58 @@ namespace Slang
408
408
return session->getOrLoadDownstreamCompiler (passThrough, nullptr ) ? SLANG_OK: SLANG_E_NOT_FOUND;
409
409
}
410
410
411
- PassThroughMode getPreludeDownstreamCompilerForTarget (Session* session, CodeGenTarget target )
411
+ SourceLanguage getDefaultSourceLanguageForDownstreamCompiler (PassThroughMode compiler )
412
412
{
413
- switch (target )
413
+ switch (compiler )
414
414
{
415
- case CodeGenTarget ::None:
415
+ case PassThroughMode ::None:
416
416
{
417
- return PassThroughMode::None ;
417
+ return SourceLanguage::Unknown ;
418
418
}
419
- case CodeGenTarget::GLSL:
419
+ case PassThroughMode::Fxc:
420
+ case PassThroughMode::Dxc:
420
421
{
421
- // For the prelude we'll use Glslang
422
- return PassThroughMode::Glslang;
422
+ return SourceLanguage::HLSL;
423
423
}
424
- case CodeGenTarget::HLSL :
424
+ case PassThroughMode::Glslang :
425
425
{
426
- // Use the default compiler for the source language if set,
427
- DownstreamCompiler* downstreamCompiler = session->getDefaultDownstreamCompiler (SourceLanguage::HLSL);
428
- if (downstreamCompiler)
429
- {
430
- return PassThroughMode (downstreamCompiler->getDesc ().type );
431
- }
432
- else
433
- {
434
- // This is ambiguous, because we could use dxc or fxc. For now we'll go with Dxc.
435
- return PassThroughMode::Dxc;
436
- }
426
+ return SourceLanguage::GLSL;
427
+ }
428
+ case PassThroughMode::Clang:
429
+ case PassThroughMode::VisualStudio:
430
+ case PassThroughMode::Gcc:
431
+ case PassThroughMode::GenericCCpp:
432
+ {
433
+ // These could ingest C, but we only have this function to work out a
434
+ // 'default' language to ingest.
435
+ return SourceLanguage::CPP;
437
436
}
437
+ case PassThroughMode::NVRTC:
438
+ {
439
+ return SourceLanguage::CUDA;
440
+ }
441
+ default : break ;
442
+ }
443
+ SLANG_ASSERT (!" Unknown compiler" );
444
+ return SourceLanguage::Unknown;
445
+ }
446
+
447
+ PassThroughMode getDownstreamCompilerRequiredForTarget (CodeGenTarget target)
448
+ {
449
+ switch (target)
450
+ {
451
+ // Don't *require* a downstream compiler for source output
452
+ case CodeGenTarget::GLSL:
453
+ case CodeGenTarget::HLSL:
438
454
case CodeGenTarget::CUDASource:
455
+ case CodeGenTarget::CPPSource:
456
+ case CodeGenTarget::CSource:
439
457
{
440
- return PassThroughMode::NVRTC;
458
+ return PassThroughMode::None;
459
+ }
460
+ case CodeGenTarget::None:
461
+ {
462
+ return PassThroughMode::None;
441
463
}
442
464
case CodeGenTarget::SPIRVAssembly:
443
465
case CodeGenTarget::SPIRV:
@@ -459,12 +481,6 @@ namespace Slang
459
481
{
460
482
return PassThroughMode::Glslang;
461
483
}
462
- case CodeGenTarget::CPPSource:
463
- case CodeGenTarget::CSource:
464
- {
465
- // We'll just use the generic C/C++ compiler
466
- return PassThroughMode::GenericCCpp;
467
- }
468
484
case CodeGenTarget::HostCallable:
469
485
case CodeGenTarget::SharedLibrary:
470
486
case CodeGenTarget::Executable:
@@ -484,28 +500,9 @@ namespace Slang
484
500
return PassThroughMode::None;
485
501
}
486
502
487
- PassThroughMode getDownstreamCompilerRequiredForTarget (Session* session, CodeGenTarget target)
488
- {
489
- switch (target)
490
- {
491
- // Don't *require* a downstream compiler for source output
492
- case CodeGenTarget::GLSL:
493
- case CodeGenTarget::HLSL:
494
- case CodeGenTarget::CUDASource:
495
- case CodeGenTarget::CPPSource:
496
- case CodeGenTarget::CSource:
497
- {
498
- return PassThroughMode::None;
499
- }
500
- default : break ;
501
- }
502
-
503
- return getPreludeDownstreamCompilerForTarget (session, target);
504
- }
505
-
506
503
SlangResult checkCompileTargetSupport (Session* session, CodeGenTarget target)
507
504
{
508
- const PassThroughMode mode = getDownstreamCompilerRequiredForTarget (session, target);
505
+ const PassThroughMode mode = getDownstreamCompilerRequiredForTarget (target);
509
506
return (mode != PassThroughMode::None) ?
510
507
checkExternalCompilerSupport (session, mode) :
511
508
SLANG_OK;
@@ -634,7 +631,7 @@ namespace Slang
634
631
}
635
632
636
633
char const * stagePrefix = nullptr ;
637
- switch ( profile.GetStage () )
634
+ switch ( profile.getStage () )
638
635
{
639
636
// Note: All of the raytracing-related stages require
640
637
// compiling for a `lib_*` profile, even when only a
@@ -669,7 +666,7 @@ namespace Slang
669
666
}
670
667
671
668
char const * versionSuffix = nullptr ;
672
- switch (profile.GetVersion ())
669
+ switch (profile.getVersion ())
673
670
{
674
671
#define CASE (TAG, SUFFIX ) case ProfileVersion::TAG: versionSuffix = #SUFFIX; break
675
672
CASE (DX_4_0, _4_0);
0 commit comments