summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibGLSL
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Libraries/LibGLSL')
-rw-r--r--Userland/Libraries/LibGLSL/LinkedShader.h11
-rw-r--r--Userland/Libraries/LibGLSL/Linker.cpp16
2 files changed, 26 insertions, 1 deletions
diff --git a/Userland/Libraries/LibGLSL/LinkedShader.h b/Userland/Libraries/LibGLSL/LinkedShader.h
index 10fd4ffdf0..65d485be73 100644
--- a/Userland/Libraries/LibGLSL/LinkedShader.h
+++ b/Userland/Libraries/LibGLSL/LinkedShader.h
@@ -11,12 +11,23 @@
#include <AK/String.h>
#include <AK/Vector.h>
#include <LibGLSL/ObjectFile.h>
+#include <LibGPU/IR.h>
namespace GLSL {
// FIXME: Implement this class
class LinkedShader final {
+public:
+ LinkedShader(const GPU::IR::Shader& intermediate_shader_representation)
+ : m_intermediate_shader_representation { intermediate_shader_representation }
+ {
+ }
+
+ GPU::IR::Shader const& intermediate_shader_representation() const { return m_intermediate_shader_representation; }
+
+private:
+ GPU::IR::Shader m_intermediate_shader_representation;
};
}
diff --git a/Userland/Libraries/LibGLSL/Linker.cpp b/Userland/Libraries/LibGLSL/Linker.cpp
index 367bf93e05..b418840912 100644
--- a/Userland/Libraries/LibGLSL/Linker.cpp
+++ b/Userland/Libraries/LibGLSL/Linker.cpp
@@ -12,7 +12,21 @@ ErrorOr<NonnullOwnPtr<LinkedShader>> Linker::link(Vector<ObjectFile const*> cons
{
// FIXME: implement this function
m_messages = TRY(String::from_utf8(""sv));
- return adopt_own(*new LinkedShader());
+
+ GPU::IR::Shader shader;
+
+ auto input_name = TRY(String::from_utf8("input0"sv));
+ auto output_name = TRY(String::from_utf8("output0"sv));
+ TRY(shader.inputs.try_append({ move(input_name), GPU::IR::StorageType::Vector4 }));
+ TRY(shader.outputs.try_append({ move(output_name), GPU::IR::StorageType::Vector4 }));
+ GPU::IR::Instruction instruction {
+ GPU::IR::Opcode::Move,
+ { { GPU::IR::StorageLocation::Input, 0 } },
+ { GPU::IR::StorageLocation::Output, 0 }
+ };
+ TRY(shader.instructions.try_append(instruction));
+
+ return adopt_own(*new LinkedShader(shader));
}
}