summaryrefslogtreecommitdiff
path: root/Userland
diff options
context:
space:
mode:
authorStephan Unverwerth <s.unverwerth@serenityos.org>2022-09-18 16:18:12 +0200
committerAndrew Kaster <andrewdkaster@gmail.com>2022-12-17 22:39:09 -0700
commit5bab17596d71e2bdbecce7eff288279e41e34539 (patch)
tree490de3d283084887177793b3c8ad273d25fa22ed /Userland
parentc88bc74afd5e40d60c10d87920b28adbe7a13fe4 (diff)
downloadserenity-5bab17596d71e2bdbecce7eff288279e41e34539.zip
LibGLSL: Fill LinkedShaders with dummy IR code
Diffstat (limited to 'Userland')
-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));
}
}