yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
35f8e092f
master
1#include "slang.h" 2 3namespace SlangRecord 4{ 5static Slang ::String SlangCompileTargetToString (const SlangCompileTarget target ) 6{ 7#define CASE (x ) \ 8 case x: \ 9 return #x 10 11switch (target ) 12 { 13CASE (SLANG_TARGET_UNKNOWN ); 14CASE (SLANG_GLSL ); 15CASE (SLANG_GLSL_VULKAN_DEPRECATED ); 16CASE (SLANG_GLSL_VULKAN_ONE_DESC_DEPRECATED ); 17CASE (SLANG_HLSL ); 18CASE (SLANG_SPIRV ); 19CASE (SLANG_SPIRV_ASM ); 20CASE (SLANG_DXBC ); 21CASE (SLANG_DXIL ); 22CASE (SLANG_DXIL_ASM ); 23CASE (SLANG_C_SOURCE ); 24CASE (SLANG_CPP_SOURCE ); 25CASE (SLANG_HOST_EXECUTABLE ); 26CASE (SLANG_SHADER_SHARED_LIBRARY ); 27CASE (SLANG_SHADER_HOST_CALLABLE ); 28CASE (SLANG_CUDA_SOURCE ); 29CASE (SLANG_PTX ); 30CASE (SLANG_CUDA_OBJECT_CODE ); 31CASE (SLANG_OBJECT_CODE ); 32CASE (SLANG_HOST_CPP_SOURCE ); 33CASE (SLANG_HOST_HOST_CALLABLE ); 34CASE (SLANG_CPP_PYTORCH_BINDING ); 35CASE (SLANG_METAL ); 36CASE (SLANG_METAL_LIB ); 37CASE (SLANG_METAL_LIB_ASM ); 38CASE (SLANG_HOST_SHARED_LIBRARY ); 39CASE (SLANG_WGSL ); 40CASE (SLANG_TARGET_COUNT_OF ); 41default : 42Slang ::StringBuilder str ; 43str <<"Unknown SlangCompileTarget: " <<static_cast < uint32_t > (target ); 44return str .toString (); 45 } 46#undef CASE 47} 48 49static Slang ::String SlangProfileIDToString (const SlangProfileID profile ) 50{ 51switch (profile ) 52 { 53case SLANG_PROFILE_UNKNOWN : 54return "SLANG_PROFILE_UNKNOWN" ; 55default : 56Slang ::StringBuilder str ; 57str <<"Unknown SlangProfileID: " <<static_cast < uint32_t > (profile ); 58return str .toString (); 59 } 60} 61 62static Slang ::String SlangTargetFlagsToString (const SlangTargetFlags flags ) 63{ 64switch (flags ) 65 { 66case SLANG_TARGET_FLAG_PARAMETER_BLOCKS_USE_REGISTER_SPACES : 67return "SLANG_TARGET_FLAG_PARAMETER_BLOCKS_USE_REGISTER_SPACES" ; 68case SLANG_TARGET_FLAG_GENERATE_WHOLE_PROGRAM : 69return "SLANG_TARGET_FLAG_GENERATE_WHOLE_PROGRAM" ; 70case SLANG_TARGET_FLAG_DUMP_IR : 71return "SLANG_TARGET_FLAG_DUMP_IR" ; 72case SLANG_TARGET_FLAG_GENERATE_SPIRV_DIRECTLY : 73return "SLANG_TARGET_FLAG_GENERATE_SPIRV_DIRECTLY" ; 74default : 75Slang ::StringBuilder str ; 76str <<"Unknown SlangTargetFlags: " <<static_cast < uint32_t > (flags ); 77return str .toString (); 78 } 79} 80 81static Slang ::String SlangFloatingPointModeToString (const SlangFloatingPointMode mode ) 82{ 83switch (mode ) 84 { 85case SLANG_FLOATING_POINT_MODE_DEFAULT : 86return "SLANG_FLOATING_POINT_MODE_DEFAULT" ; 87case SLANG_FLOATING_POINT_MODE_FAST : 88return "SLANG_FLOATING_POINT_MODE_FAST" ; 89case SLANG_FLOATING_POINT_MODE_PRECISE : 90return "SLANG_FLOATING_POINT_MODE_PRECISE" ; 91default : 92Slang ::StringBuilder str ; 93str <<"Unknown SlangFloatingPointMode: " <<static_cast < uint32_t > (mode ); 94return str .toString (); 95 } 96} 97 98static Slang ::String SlangLineDirectiveModeToString (const SlangLineDirectiveMode mode ) 99{ 100switch (mode ) 101 { 102case SLANG_LINE_DIRECTIVE_MODE_DEFAULT : 103return "SLANG_LINE_DIRECTIVE_MODE_DEFAULT" ; 104case SLANG_LINE_DIRECTIVE_MODE_NONE : 105return "SLANG_LINE_DIRECTIVE_MODE_NONE" ; 106case SLANG_LINE_DIRECTIVE_MODE_STANDARD : 107return "SLANG_LINE_DIRECTIVE_MODE_STANDARD" ; 108case SLANG_LINE_DIRECTIVE_MODE_GLSL : 109return "SLANG_LINE_DIRECTIVE_MODE_GLSL" ; 110case SLANG_LINE_DIRECTIVE_MODE_SOURCE_MAP : 111return "SLANG_LINE_DIRECTIVE_MODE_SOURCE_MAP" ; 112default : 113Slang ::StringBuilder str ; 114str <<"Unknown SlangLineDirectiveMode: " <<static_cast < uint32_t > (mode ); 115return str .toString (); 116 } 117} 118 119static Slang ::String CompilerOptionNameToString (const slang ::CompilerOptionName name ) 120{ 121#define CASE (x ) \ 122 case CompilerOptionName::x: \ 123 return #x 124 125using namespace slang ; 126switch (name ) 127 { 128CASE (MacroDefine ); 129CASE (DepFile ); 130CASE (EntryPointName ); 131CASE (Specialize ); 132CASE (Help ); 133CASE (HelpStyle ); 134CASE (Include ); 135CASE (Language ); 136CASE (MatrixLayoutColumn ); 137CASE (MatrixLayoutRow ); 138CASE (ZeroInitialize ); 139CASE (IgnoreCapabilities ); 140CASE (RestrictiveCapabilityCheck ); 141CASE (ModuleName ); 142CASE (Output ); 143CASE (Profile ); 144CASE (Stage ); 145CASE (Target ); 146CASE (Version ); 147CASE (WarningsAsErrors ); 148CASE (DisableWarnings ); 149CASE (EnableWarning ); 150CASE (DisableWarning ); 151CASE (DumpWarningDiagnostics ); 152CASE (InputFilesRemain ); 153CASE (EmitIr ); 154CASE (ReportDownstreamTime ); 155CASE (ReportPerfBenchmark ); 156CASE (ReportCheckpointIntermediates ); 157CASE (SkipSPIRVValidation ); 158CASE (SourceEmbedStyle ); 159CASE (SourceEmbedName ); 160CASE (SourceEmbedLanguage ); 161CASE (DisableShortCircuit ); 162CASE (MinimumSlangOptimization ); 163CASE (DisableNonEssentialValidations ); 164CASE (DisableSourceMap ); 165CASE (UnscopedEnum ); 166CASE (PreserveParameters ); 167CASE (Capability ); 168CASE (DefaultImageFormatUnknown ); 169CASE (DisableDynamicDispatch ); 170CASE (DisableSpecialization ); 171CASE (FloatingPointMode ); 172CASE (DebugInformation ); 173CASE (LineDirectiveMode ); 174CASE (Optimization ); 175CASE (Obfuscate ); 176CASE (VulkanBindShift ); 177CASE (VulkanBindGlobals ); 178CASE (VulkanInvertY ); 179CASE (VulkanUseDxPositionW ); 180CASE (VulkanUseEntryPointName ); 181CASE (VulkanUseGLLayout ); 182CASE (VulkanEmitReflection ); 183CASE (GLSLForceScalarLayout ); 184CASE (ForceDXLayout ); 185CASE (ForceCLayout ); 186CASE (EnableEffectAnnotations ); 187CASE (EmitSpirvViaGLSL ); 188CASE (EmitSpirvDirectly ); 189CASE (SPIRVCoreGrammarJSON ); 190CASE (IncompleteLibrary ); 191CASE (CompilerPath ); 192CASE (DefaultDownstreamCompiler ); 193CASE (DownstreamArgs ); 194CASE (PassThrough ); 195CASE (DumpRepro ); 196CASE (DumpReproOnError ); 197CASE (ExtractRepro ); 198CASE (LoadRepro ); 199CASE (LoadReproDirectory ); 200CASE (ReproFallbackDirectory ); 201CASE (DumpAst ); 202CASE (DumpIntermediatePrefix ); 203CASE (DumpIntermediates ); 204CASE (DumpIr ); 205CASE (DumpIrIds ); 206CASE (PreprocessorOutput ); 207CASE (OutputIncludes ); 208CASE (ReproFileSystem ); 209CASE (REMOVED_SerialIR ); 210CASE (SkipCodeGen ); 211CASE (ValidateIr ); 212CASE (VerbosePaths ); 213CASE (VerifyDebugSerialIr ); 214CASE (NoCodeGen ); 215CASE (FileSystem ); 216CASE (Heterogeneous ); 217CASE (NoMangle ); 218CASE (NoHLSLBinding ); 219CASE (NoHLSLPackConstantBufferElements ); 220CASE (ValidateUniformity ); 221CASE (AllowGLSL ); 222CASE (ArchiveType ); 223CASE (CompileCoreModule ); 224CASE (Doc ); 225CASE (IrCompression ); 226CASE (LoadCoreModule ); 227CASE (ReferenceModule ); 228CASE (SaveCoreModule ); 229CASE (SaveCoreModuleBinSource ); 230CASE (SaveGLSLModuleBinSource ); 231CASE (TrackLiveness ); 232CASE (LoopInversion ); 233CASE (CountOfParsableOptions ); 234CASE (DebugInformationFormat ); 235CASE (VulkanBindShiftAll ); 236CASE (GenerateWholeProgram ); 237CASE (UseUpToDateBinaryModule ); 238CASE (CountOf ); 239default : 240Slang ::StringBuilder str ; 241str <<"Unknown CompilerOptionName: " <<static_cast < uint32_t > (name ); 242return str .toString (); 243 } 244#undef CASE 245} 246 247static Slang ::String CompilerOptionValueKindToString (const slang ::CompilerOptionValueKind kind ) 248{ 249using namespace slang ; 250switch (kind ) 251 { 252case CompilerOptionValueKind ::Int : 253return "Int" ; 254case CompilerOptionValueKind ::String : 255return "String" ; 256default : 257Slang ::StringBuilder str ; 258str <<"Unknown CompilerOptionValueKind: " <<static_cast < uint32_t > (kind ); 259return str .toString (); 260 } 261} 262 263static Slang ::String SessionFlagsToString (const slang ::SessionFlags flags ) 264{ 265using namespace slang ; 266switch (flags ) 267 { 268case kSessionFlags_None : 269return "kSessionFlags_None" ; 270default : 271Slang ::StringBuilder str ; 272str <<"Unknown SessionFlags: " <<static_cast < uint32_t > (flags ); 273return str .toString (); 274 } 275} 276 277static Slang ::String SlangMatrixLayoutModeToString (const SlangMatrixLayoutMode mode ) 278{ 279switch (mode ) 280 { 281case SLANG_MATRIX_LAYOUT_MODE_UNKNOWN : 282return "SLANG_MATRIX_LAYOUT_MODE_UNKNOWN" ; 283case SLANG_MATRIX_LAYOUT_ROW_MAJOR : 284return "SLANG_MATRIX_LAYOUT_ROW_MAJOR" ; 285case SLANG_MATRIX_LAYOUT_COLUMN_MAJOR : 286return "SLANG_MATRIX_LAYOUT_COLUMN_MAJOR" ; 287default : 288Slang ::StringBuilder str ; 289str <<"Unknown SlangMatrixLayoutMode: " <<static_cast < uint32_t > (mode ); 290return str .toString (); 291 } 292} 293 294static Slang ::String SlangPassThroughToString (const SlangPassThrough passThrough ) 295{ 296#define CASE (x ) \ 297 case x: \ 298 return #x 299 300switch (passThrough ) 301 { 302CASE (SLANG_PASS_THROUGH_NONE ); 303CASE (SLANG_PASS_THROUGH_FXC ); 304CASE (SLANG_PASS_THROUGH_DXC ); 305CASE (SLANG_PASS_THROUGH_GLSLANG ); 306CASE (SLANG_PASS_THROUGH_SPIRV_DIS ); 307CASE (SLANG_PASS_THROUGH_CLANG ); 308CASE (SLANG_PASS_THROUGH_VISUAL_STUDIO ); 309CASE (SLANG_PASS_THROUGH_GCC ); 310CASE (SLANG_PASS_THROUGH_GENERIC_C_CPP ); 311CASE (SLANG_PASS_THROUGH_NVRTC ); 312CASE (SLANG_PASS_THROUGH_LLVM ); 313CASE (SLANG_PASS_THROUGH_SPIRV_OPT ); 314CASE (SLANG_PASS_THROUGH_METAL ); 315CASE (SLANG_PASS_THROUGH_COUNT_OF ); 316default : 317Slang ::StringBuilder str ; 318str <<"Unknown SlangPassThrough: " <<static_cast < uint32_t > (passThrough ); 319return str .toString (); 320 } 321#undef CASE 322} 323 324static Slang ::String SlangSourceLanguageToString (const SlangSourceLanguage language ) 325{ 326#define CASE (x ) \ 327 case x: \ 328 return #x 329 330switch (language ) 331 { 332CASE (SLANG_SOURCE_LANGUAGE_UNKNOWN ); 333CASE (SLANG_SOURCE_LANGUAGE_SLANG ); 334CASE (SLANG_SOURCE_LANGUAGE_HLSL ); 335CASE (SLANG_SOURCE_LANGUAGE_GLSL ); 336CASE (SLANG_SOURCE_LANGUAGE_C ); 337CASE (SLANG_SOURCE_LANGUAGE_CPP ); 338CASE (SLANG_SOURCE_LANGUAGE_CUDA ); 339CASE (SLANG_SOURCE_LANGUAGE_SPIRV ); 340CASE (SLANG_SOURCE_LANGUAGE_METAL ); 341CASE (SLANG_SOURCE_LANGUAGE_COUNT_OF ); 342default : 343Slang ::StringBuilder str ; 344str <<"Unknown SlangSourceLanguage: " <<static_cast < uint32_t > (language ); 345return str .toString (); 346 } 347} 348 349static Slang ::String CompileCoreModuleFlagsToString (const slang ::CompileCoreModuleFlags flags ) 350{ 351using namespace slang ; 352switch (flags ) 353 { 354case CompileCoreModuleFlag ::WriteDocumentation : 355return "WriteDocumentation" ; 356default : 357Slang ::StringBuilder str ; 358str <<"Unknown CompileCoreModuleFlags: " <<static_cast < uint32_t > (flags ); 359return str .toString (); 360 } 361} 362 363static Slang ::String SlangArchiveTypeToString (const SlangArchiveType type ) 364{ 365#define CASE (x ) \ 366 case x: \ 367 return #x 368switch (type ) 369 { 370CASE (SLANG_ARCHIVE_TYPE_UNDEFINED ); 371CASE (SLANG_ARCHIVE_TYPE_ZIP ); 372CASE (SLANG_ARCHIVE_TYPE_RIFF ); 373CASE (SLANG_ARCHIVE_TYPE_RIFF_DEFLATE ); 374CASE (SLANG_ARCHIVE_TYPE_RIFF_LZ4 ); 375CASE (SLANG_ARCHIVE_TYPE_COUNT_OF ); 376default : 377Slang ::StringBuilder str ; 378str <<"Unknown SlangArchiveType: " <<static_cast < uint32_t > (type ); 379return str .toString (); 380 } 381} 382 383static Slang ::String SpecializationArgKindToString (const slang ::SpecializationArg ::Kind kind ) 384{ 385using namespace slang ; 386switch (kind ) 387 { 388case SpecializationArg ::Kind ::Unknown : 389return "Unknown" ; 390case SpecializationArg ::Kind ::Type : 391return "Type" ; 392default : 393Slang ::StringBuilder str ; 394str <<"Unknown SpecializationArg::Kind: " <<static_cast < uint32_t > (kind ); 395return str .toString (); 396 } 397} 398 399static Slang ::String LayoutRulesToString (const slang ::LayoutRules rules ) 400{ 401using namespace slang ; 402switch (rules ) 403 { 404case LayoutRules ::Default : 405return "Default" ; 406case LayoutRules ::MetalArgumentBufferTier2 : 407return "MetalArgumentBufferTier2" ; 408default : 409Slang ::StringBuilder str ; 410str <<"Unknown LayoutRules: " <<static_cast < uint32_t > (rules ); 411return str .toString (); 412 } 413} 414 415static Slang ::String SlangStageToString (const SlangStage stage ) 416{ 417#define CASE (x ) \ 418 case x: \ 419 return #x 420 421switch (stage ) 422 { 423CASE (SLANG_STAGE_NONE ); 424CASE (SLANG_STAGE_VERTEX ); 425CASE (SLANG_STAGE_HULL ); 426CASE (SLANG_STAGE_DOMAIN ); 427CASE (SLANG_STAGE_GEOMETRY ); 428CASE (SLANG_STAGE_FRAGMENT ); 429CASE (SLANG_STAGE_COMPUTE ); 430CASE (SLANG_STAGE_RAY_GENERATION ); 431CASE (SLANG_STAGE_INTERSECTION ); 432CASE (SLANG_STAGE_ANY_HIT ); 433CASE (SLANG_STAGE_CLOSEST_HIT ); 434CASE (SLANG_STAGE_MISS ); 435CASE (SLANG_STAGE_CALLABLE ); 436CASE (SLANG_STAGE_MESH ); 437CASE (SLANG_STAGE_AMPLIFICATION ); 438default : 439Slang ::StringBuilder str ; 440str <<"Unknown SlangStage: " <<static_cast < uint32_t > (stage ); 441return str .toString (); 442 } 443#undef CASE 444} 445 446static Slang ::String ContainerTypeToString (const slang ::ContainerType type ) 447{ 448using namespace slang ; 449switch (type ) 450 { 451case ContainerType ::None : 452return "None" ; 453case ContainerType ::UnsizedArray : 454return "UnsizedArray" ; 455case ContainerType ::StructuredBuffer : 456return "StructuredBuffer" ; 457case ContainerType ::ConstantBuffer : 458return "ConstantBuffer" ; 459case ContainerType ::ParameterBlock : 460return "ParameterBlock" ; 461default : 462Slang ::StringBuilder str ; 463str <<"Unknown ContainerType: " <<static_cast < uint32_t > (type ); 464return str .toString (); 465 } 466} 467}// namespace SlangRecord