| 29 | namespace gl { |
| 30 | |
| 31 | struct ShaderCode { |
| 32 | ShaderCode() = default; |
| 33 | ShaderCode(const std::vector<Variable>& in_parameters, |
| 34 | const std::vector<Object>& in_objects, const uint3& in_workload, |
| 35 | const uint3& in_recommended_workgroup, |
| 36 | const std::string& in_source_code, |
| 37 | const std::vector<NodeId>& in_node_indices) |
| 38 | : parameters(in_parameters), |
| 39 | objects(in_objects), |
| 40 | workload(in_workload), |
| 41 | recommended_workgroup(in_recommended_workgroup), |
| 42 | source_code(in_source_code), |
| 43 | node_indices(in_node_indices) {} |
| 44 | |
| 45 | // A list of uniform parameters to be set. |
| 46 | std::vector<Variable> parameters; |
| 47 | |
| 48 | // A list of objects to bind to opengl program. |
| 49 | std::vector<Object> objects; |
| 50 | |
| 51 | uint3 workload; |
| 52 | |
| 53 | // operation may specify recommended workgroup size |
| 54 | uint3 recommended_workgroup; |
| 55 | |
| 56 | // Generated source code does not set local size, therefore it needs to be set |
| 57 | // elsewhere. |
| 58 | std::string source_code; |
| 59 | |
| 60 | // nodes of the graph that are covered by the shader. |
| 61 | std::vector<NodeId> node_indices; |
| 62 | }; |
| 63 | |
| 64 | } // namespace gl |
| 65 | } // namespace gpu |