| 4665 | } |
| 4666 | |
| 4667 | void AssignDeviceSpaceToSymbols( ASTNode* node ) |
| 4668 | { |
| 4669 | if( !node ) |
| 4670 | { |
| 4671 | return; |
| 4672 | } |
| 4673 | if( auto symbol = node->GetSymbol() ) |
| 4674 | { |
| 4675 | auto type = symbol->type; |
| 4676 | switch( type.builtInType ) |
| 4677 | { |
| 4678 | case OP_BUFFER: |
| 4679 | case OP_STRUCTUREDBUFFER: |
| 4680 | case OP_RWBUFFER: |
| 4681 | case OP_RWSTRUCTUREDBUFFER: |
| 4682 | case OP_RAYTRACING_ACCELERATION_STRUCTURE: |
| 4683 | symbol->addressSpace = AddressSpace::Device; |
| 4684 | break; |
| 4685 | default: |
| 4686 | if( type.arrayDimensions && ( type.IsTexture() || type.IsSampler() ) ) |
| 4687 | { |
| 4688 | symbol->addressSpace = AddressSpace::Device; |
| 4689 | } |
| 4690 | break; |
| 4691 | } |
| 4692 | } |
| 4693 | for( auto child : node->GetChildren() ) |
| 4694 | { |
| 4695 | AssignDeviceSpaceToSymbols( child ); |
| 4696 | } |
| 4697 | } |
| 4698 | |
| 4699 | ASTNode* CreateGlobalInputsStruct( ParserState& state, const std::vector<GlobalInputElement>& globalInputs ) |
| 4700 | { |
no test coverage detected