summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Unverwerth <s.unverwerth@serenityos.org>2022-08-28 19:23:30 +0200
committerAndrew Kaster <andrewdkaster@gmail.com>2022-12-17 22:39:09 -0700
commit67b2f8d68dd8a9d0c87551650777700bd8f9d841 (patch)
treec7472f002a3a36ff54ce39e0d18bb95b017ee12e
parent5f0eb812ac1d1dcface444049c35feb78ad885f4 (diff)
downloadserenity-67b2f8d68dd8a9d0c87551650777700bd8f9d841.zip
LibGLSL: Add LibGLSL
This adds a new library, LibGLSL for parsing and compiling GLSL programs to LibGPU IR. Currently the compiler consists only of stubs.
-rw-r--r--Meta/Lagom/CMakeLists.txt1
-rw-r--r--Userland/Libraries/CMakeLists.txt1
-rw-r--r--Userland/Libraries/LibGL/CMakeLists.txt2
-rw-r--r--Userland/Libraries/LibGLSL/CMakeLists.txt7
-rw-r--r--Userland/Libraries/LibGLSL/Compiler.cpp18
-rw-r--r--Userland/Libraries/LibGLSL/Compiler.h27
-rw-r--r--Userland/Libraries/LibGLSL/LinkedShader.h22
-rw-r--r--Userland/Libraries/LibGLSL/Linker.cpp18
-rw-r--r--Userland/Libraries/LibGLSL/Linker.h28
-rw-r--r--Userland/Libraries/LibGLSL/ObjectFile.h16
10 files changed, 139 insertions, 1 deletions
diff --git a/Meta/Lagom/CMakeLists.txt b/Meta/Lagom/CMakeLists.txt
index 3e1785b15c..0b3d046fe1 100644
--- a/Meta/Lagom/CMakeLists.txt
+++ b/Meta/Lagom/CMakeLists.txt
@@ -347,6 +347,7 @@ if (BUILD_LAGOM)
Gemini
Gfx
GL
+ GLSL
GPU
HTTP
IMAP
diff --git a/Userland/Libraries/CMakeLists.txt b/Userland/Libraries/CMakeLists.txt
index c1e7ac418a..232e79014b 100644
--- a/Userland/Libraries/CMakeLists.txt
+++ b/Userland/Libraries/CMakeLists.txt
@@ -23,6 +23,7 @@ add_subdirectory(LibFileSystemAccessClient)
add_subdirectory(LibGemini)
add_subdirectory(LibGfx)
add_subdirectory(LibGL)
+add_subdirectory(LibGLSL)
add_subdirectory(LibGPU)
add_subdirectory(LibGUI)
add_subdirectory(LibHTTP)
diff --git a/Userland/Libraries/LibGL/CMakeLists.txt b/Userland/Libraries/LibGL/CMakeLists.txt
index 7b29573dee..88bd390fe9 100644
--- a/Userland/Libraries/LibGL/CMakeLists.txt
+++ b/Userland/Libraries/LibGL/CMakeLists.txt
@@ -20,4 +20,4 @@ set(SOURCES
)
serenity_lib(LibGL gl)
-target_link_libraries(LibGL PRIVATE LibCore LibGfx LibGPU)
+target_link_libraries(LibGL PRIVATE LibCore LibGfx LibGLSL LibGPU)
diff --git a/Userland/Libraries/LibGLSL/CMakeLists.txt b/Userland/Libraries/LibGLSL/CMakeLists.txt
new file mode 100644
index 0000000000..7c57d8d9dc
--- /dev/null
+++ b/Userland/Libraries/LibGLSL/CMakeLists.txt
@@ -0,0 +1,7 @@
+set(SOURCES
+ Compiler.cpp
+ Linker.cpp
+)
+
+serenity_lib(LibGLSL glsl)
+target_link_libraries(LibGLSL PRIVATE LibGPU)
diff --git a/Userland/Libraries/LibGLSL/Compiler.cpp b/Userland/Libraries/LibGLSL/Compiler.cpp
new file mode 100644
index 0000000000..797860513a
--- /dev/null
+++ b/Userland/Libraries/LibGLSL/Compiler.cpp
@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2022, Stephan Unverwerth <s.unverwerth@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <LibGLSL/Compiler.h>
+
+namespace GLSL {
+
+ErrorOr<NonnullOwnPtr<ObjectFile>> Compiler::compile(Vector<String> const&)
+{
+ // FIXME: implement this function
+ m_messages = TRY(String::from_utf8(""sv));
+ return adopt_own(*new ObjectFile());
+}
+
+}
diff --git a/Userland/Libraries/LibGLSL/Compiler.h b/Userland/Libraries/LibGLSL/Compiler.h
new file mode 100644
index 0000000000..b4d4c4be36
--- /dev/null
+++ b/Userland/Libraries/LibGLSL/Compiler.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2022, Stephan Unverwerth <s.unverwerth@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <AK/Error.h>
+#include <AK/NonnullOwnPtr.h>
+#include <AK/String.h>
+#include <AK/Vector.h>
+#include <LibGLSL/ObjectFile.h>
+
+namespace GLSL {
+
+class Compiler final {
+public:
+ ErrorOr<NonnullOwnPtr<ObjectFile>> compile(Vector<String> const& sources);
+
+ String messages() const { return m_messages; }
+
+private:
+ String m_messages;
+};
+
+}
diff --git a/Userland/Libraries/LibGLSL/LinkedShader.h b/Userland/Libraries/LibGLSL/LinkedShader.h
new file mode 100644
index 0000000000..10fd4ffdf0
--- /dev/null
+++ b/Userland/Libraries/LibGLSL/LinkedShader.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2022, Stephan Unverwerth <s.unverwerth@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <AK/Error.h>
+#include <AK/NonnullOwnPtr.h>
+#include <AK/String.h>
+#include <AK/Vector.h>
+#include <LibGLSL/ObjectFile.h>
+
+namespace GLSL {
+
+// FIXME: Implement this class
+
+class LinkedShader final {
+};
+
+}
diff --git a/Userland/Libraries/LibGLSL/Linker.cpp b/Userland/Libraries/LibGLSL/Linker.cpp
new file mode 100644
index 0000000000..367bf93e05
--- /dev/null
+++ b/Userland/Libraries/LibGLSL/Linker.cpp
@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2022, Stephan Unverwerth <s.unverwerth@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <LibGLSL/Linker.h>
+
+namespace GLSL {
+
+ErrorOr<NonnullOwnPtr<LinkedShader>> Linker::link(Vector<ObjectFile const*> const&)
+{
+ // FIXME: implement this function
+ m_messages = TRY(String::from_utf8(""sv));
+ return adopt_own(*new LinkedShader());
+}
+
+}
diff --git a/Userland/Libraries/LibGLSL/Linker.h b/Userland/Libraries/LibGLSL/Linker.h
new file mode 100644
index 0000000000..90ac686969
--- /dev/null
+++ b/Userland/Libraries/LibGLSL/Linker.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2022, Stephan Unverwerth <s.unverwerth@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <AK/Error.h>
+#include <AK/NonnullOwnPtr.h>
+#include <AK/String.h>
+#include <AK/Vector.h>
+#include <LibGLSL/LinkedShader.h>
+#include <LibGLSL/ObjectFile.h>
+
+namespace GLSL {
+
+class Linker final {
+public:
+ ErrorOr<NonnullOwnPtr<LinkedShader>> link(Vector<ObjectFile const*> const&);
+
+ String messages() const { return m_messages; }
+
+private:
+ String m_messages;
+};
+
+}
diff --git a/Userland/Libraries/LibGLSL/ObjectFile.h b/Userland/Libraries/LibGLSL/ObjectFile.h
new file mode 100644
index 0000000000..da29541ac8
--- /dev/null
+++ b/Userland/Libraries/LibGLSL/ObjectFile.h
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) 2022, Stephan Unverwerth <s.unverwerth@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+namespace GLSL {
+
+// FIXME: Implement this class
+
+class ObjectFile final {
+};
+
+}