MCPcopy Create free account
hub / github.com/carbonengine/trinity / AddPermutationsToWorkQueue

Function AddPermutationsToWorkQueue

shadercompiler/ShaderCompiler.cpp:448–498  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

446typedef WorkQueue2<CompileShaderArguments, decltype( &CompileShader )> CompileQueue;
447
448void AddPermutationsToWorkQueue( CompileQueue& queue, const Permutations& permutations, bool ignorePermutations, const std::vector<Macro>& defines )
449{
450 std::vector<size_t> indexes;
451 indexes.resize( permutations.size() );
452 uint32_t permutation = 0;
453 bool done = false;
454 while( !done )
455 {
456 CompileShaderArguments args;
457 args.permutation = permutation;
458 if( !defines.empty() )
459 {
460 args.defines.insert( args.defines.end(), defines.begin(), defines.end() );
461 }
462
463 if( !ignorePermutations )
464 {
465 for( size_t i = 0; i < permutations.size(); ++i )
466 {
467 Macro define;
468 define.name = permutations[i].name;
469 define.value = std::to_string( int64_t( permutations[i].options[indexes[i]].value ) );
470 args.defines.push_back( define );
471 }
472 }
473
474 queue.Put( args );
475
476 for( size_t i = 0; i < permutations.size(); ++i )
477 {
478 ++indexes[i];
479 if( indexes[i] >= permutations[i].options.size() )
480 {
481 if( i + 1 == permutations.size() )
482 {
483 done = true;
484 }
485 indexes[i] = 0;
486 }
487 else
488 {
489 break;
490 }
491 }
492 if( ignorePermutations || permutations.empty() )
493 {
494 break;
495 }
496 ++permutation;
497 }
498}
499
500struct WithTelemetry
501{

Callers 1

mainFunction · 0.85

Calls 6

to_stringFunction · 0.85
sizeMethod · 0.80
emptyMethod · 0.80
endMethod · 0.45
beginMethod · 0.45
PutMethod · 0.45

Tested by

no test coverage detected