summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/backend/glasm/emit_context.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/backend/glasm/emit_context.h')
-rw-r--r--src/shader_recompiler/backend/glasm/emit_context.h27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/shader_recompiler/backend/glasm/emit_context.h b/src/shader_recompiler/backend/glasm/emit_context.h
index ae91069c8..cf66619de 100644
--- a/src/shader_recompiler/backend/glasm/emit_context.h
+++ b/src/shader_recompiler/backend/glasm/emit_context.h
@@ -5,17 +5,38 @@
#pragma once
#include <string>
+#include <utility>
+
+#include <fmt/format.h>
#include "shader_recompiler/backend/glasm/reg_alloc.h"
+namespace Shader::IR {
+class Inst;
+}
+
namespace Shader::Backend::GLASM {
class EmitContext {
public:
- std::string code;
- RegAlloc reg_alloc;
+ explicit EmitContext();
-private:
+ template <typename... Args>
+ void Add(const char* fmt, IR::Inst& inst, Args&&... args) {
+ code += fmt::format(fmt, reg_alloc.Define(inst), std::forward<Args>(args)...);
+ // TODO: Remove this
+ code += '\n';
+ }
+
+ template <typename... Args>
+ void Add(const char* fmt, Args&&... args) {
+ code += fmt::format(fmt, std::forward<Args>(args)...);
+ // TODO: Remove this
+ code += '\n';
+ }
+
+ std::string code;
+ RegAlloc reg_alloc{*this};
};
} // namespace Shader::Backend::GLASM