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 #include #include +#include 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> Linker::link(Vector 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)); } }