summaryrefslogtreecommitdiff
path: root/pipeline.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pipeline.cpp')
-rw-r--r--pipeline.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/pipeline.cpp b/pipeline.cpp
new file mode 100644
index 0000000..30bf442
--- /dev/null
+++ b/pipeline.cpp
@@ -0,0 +1,29 @@
+#include "video.hpp"
+
+extern "C" {
+#include "qstd/memory.h"
+#include "qstd/plat.h"
+}
+
+Pipeline_Builder::Pipeline_Builder(Arena* arena):
+ arena(arena) {}
+
+void Pipeline_Builder::begin_rp() {
+ pass = (Render_Pass*)arena_alloc(arena, sizeof *pass);
+ pass->target = 0;
+ pass->clear = { 0, 0, 0, 0 };
+}
+
+void Pipeline_Builder::rp_target(Texture_Id id, Colour clear) {
+ pass->target = id;
+ pass->clear = clear;
+}
+
+void Pipeline_Builder::validate_rp() {
+ assert(pass->target);
+}
+
+Render_Pass& Pipeline_Builder::build_rp() {
+ validate_rp();
+ return *pass;
+}