// Copyright 2020 The Tint Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #ifndef SRC_INSPECTOR_ENTRY_POINT_H_ #define SRC_INSPECTOR_ENTRY_POINT_H_ #include #include #include #include "src/ast/pipeline_stage.h" namespace tint { namespace inspector { /// Container of reflection data for an entry point in the shader. typedef struct EntryPoint { /// Constructors EntryPoint(); /// Copy Constructor EntryPoint(EntryPoint&); /// Move Constructor EntryPoint(EntryPoint&&); ~EntryPoint(); /// The entry point name std::string name; /// The entry point stage ast::PipelineStage stage = ast::PipelineStage::kNone; /// The workgroup x size uint32_t workgroup_size_x; /// The workgroup y size uint32_t workgroup_size_y; /// The workgroup z size uint32_t workgroup_size_z; /// List of the input variable accessed via this entry point. std::vector input_variables; /// List of the output variable accessed via this entry point. std::vector output_variables; /// @returns the size of the workgroup in {x,y,z} format std::tuple workgroup_size() { return std::tuple( workgroup_size_x, workgroup_size_y, workgroup_size_z); } } EntryPoint; } // namespace inspector } // namespace tint #endif // SRC_INSPECTOR_ENTRY_POINT_H_