diff options
Diffstat (limited to 'Userland/Libraries/LibGLSL')
-rw-r--r-- | Userland/Libraries/LibGLSL/LinkedShader.h | 11 | ||||
-rw-r--r-- | Userland/Libraries/LibGLSL/Linker.cpp | 16 |
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)); } } |