diff options
author | Stephan Unverwerth <s.unverwerth@serenityos.org> | 2022-08-28 19:23:30 +0200 |
---|---|---|
committer | Andrew Kaster <andrewdkaster@gmail.com> | 2022-12-17 22:39:09 -0700 |
commit | 67b2f8d68dd8a9d0c87551650777700bd8f9d841 (patch) | |
tree | c7472f002a3a36ff54ce39e0d18bb95b017ee12e | |
parent | 5f0eb812ac1d1dcface444049c35feb78ad885f4 (diff) | |
download | serenity-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.txt | 1 | ||||
-rw-r--r-- | Userland/Libraries/CMakeLists.txt | 1 | ||||
-rw-r--r-- | Userland/Libraries/LibGL/CMakeLists.txt | 2 | ||||
-rw-r--r-- | Userland/Libraries/LibGLSL/CMakeLists.txt | 7 | ||||
-rw-r--r-- | Userland/Libraries/LibGLSL/Compiler.cpp | 18 | ||||
-rw-r--r-- | Userland/Libraries/LibGLSL/Compiler.h | 27 | ||||
-rw-r--r-- | Userland/Libraries/LibGLSL/LinkedShader.h | 22 | ||||
-rw-r--r-- | Userland/Libraries/LibGLSL/Linker.cpp | 18 | ||||
-rw-r--r-- | Userland/Libraries/LibGLSL/Linker.h | 28 | ||||
-rw-r--r-- | Userland/Libraries/LibGLSL/ObjectFile.h | 16 |
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 { +}; + +} |