diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2021-01-09 03:30:07 -0300 |
---|---|---|
committer | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-07-22 21:51:21 -0400 |
commit | 2d48a7b4d0666ad16d03a22d85712617a0849046 (patch) | |
tree | dd1069afca86f66e77e3438da77421a43adf5091 /src/shader_recompiler/frontend/maxwell/program.h | |
parent | 75059c46d645e42e8da31fb97d003047c67b004b (diff) |
shader: Initial recompiler work
Diffstat (limited to 'src/shader_recompiler/frontend/maxwell/program.h')
-rw-r--r-- | src/shader_recompiler/frontend/maxwell/program.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/shader_recompiler/frontend/maxwell/program.h b/src/shader_recompiler/frontend/maxwell/program.h new file mode 100644 index 0000000000..7814b2c016 --- /dev/null +++ b/src/shader_recompiler/frontend/maxwell/program.h @@ -0,0 +1,39 @@ +// Copyright 2021 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include <string> +#include <vector> + +#include <boost/pool/pool_alloc.hpp> + +#include "shader_recompiler/environment.h" +#include "shader_recompiler/frontend/ir/basic_block.h" +#include "shader_recompiler/frontend/maxwell/control_flow.h" + +namespace Shader::Maxwell { + +class Program { + friend std::string DumpProgram(const Program& program); + +public: + explicit Program(Environment& env, const Flow::CFG& cfg); + +private: + struct Function { + ~Function(); + + std::vector<IR::Block*> blocks; + }; + + boost::pool_allocator<IR::Block, boost::default_user_allocator_new_delete, + boost::details::pool::null_mutex> + block_alloc_pool; + std::vector<Function> functions; +}; + +[[nodiscard]] std::string DumpProgram(const Program& program); + +} // namespace Shader::Maxwell |