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.
This commit is contained in:
Stephan Unverwerth 2022-08-28 19:23:30 +02:00 committed by Andrew Kaster
parent 5f0eb812ac
commit 67b2f8d68d
Notes: sideshowbarker 2024-07-17 08:45:34 +09:00
10 changed files with 139 additions and 1 deletions

View file

@ -347,6 +347,7 @@ if (BUILD_LAGOM)
Gemini
Gfx
GL
GLSL
GPU
HTTP
IMAP

View file

@ -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)

View file

@ -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)

View file

@ -0,0 +1,7 @@
set(SOURCES
Compiler.cpp
Linker.cpp
)
serenity_lib(LibGLSL glsl)
target_link_libraries(LibGLSL PRIVATE LibGPU)

View file

@ -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());
}
}

View file

@ -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;
};
}

View file

@ -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 {
};
}

View file

@ -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());
}
}

View file

@ -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;
};
}

View file

@ -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 {
};
}