Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: ci
on:
push:
tags-ignore: v*.*
branches:
- '*'
pull_request:
branches:
- '*'
jobs:
build-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: init
run: sudo apt install -yqq ninja-build xorg-dev g++-11
- name: configure gcc
run: cmake -S . --preset=default -B build -DCMAKE_CXX_COMPILER=g++-11 -DFACADE_BUILD_SHADERS=OFF
- name: configure clang
run: cmake -S . --preset=ninja-clang -B clang -DFACADE_BUILD_SHADERS=OFF
- name: build gcc
run: cmake --build build --config=Release
- name: build clang
run: cmake --build clang --config=Release
- name: test
run: cd build && ctest -C Release
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: configure
run: cmake -S . --preset=vs22 -B build -DFACADE_BUILD_SHADERS=OFF
- name: build
run: cmake --build build --config=Release
- name: test
run: cd build && ctest -C Release
34 changes: 19 additions & 15 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,31 @@ set(CMAKE_DEBUG_POSTFIX "-d")

project(facade)

option(FACADE_BUILD_SHADERS ON)

add_subdirectory(ext)
add_subdirectory(cmake/interface)
add_subdirectory(tools/embed_shader)

add_subdirectory(facade-lib)

add_custom_command(
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/shaders/default.vert
${CMAKE_CURRENT_SOURCE_DIR}/shaders/unlit.frag
${CMAKE_CURRENT_SOURCE_DIR}/shaders/lit.frag

OUTPUT
${CMAKE_CURRENT_SOURCE_DIR}/src/bin/default_vert.spv.hpp
${CMAKE_CURRENT_SOURCE_DIR}/src/bin/unlit_frag.spv.hpp
${CMAKE_CURRENT_SOURCE_DIR}/src/bin/lit_frag.spv.hpp

COMMAND embed-shader ${CMAKE_CURRENT_SOURCE_DIR}/shaders/default.vert > ${CMAKE_CURRENT_SOURCE_DIR}/src/bin/default_vert.spv.hpp
COMMAND embed-shader ${CMAKE_CURRENT_SOURCE_DIR}/shaders/unlit.frag > ${CMAKE_CURRENT_SOURCE_DIR}/src/bin/unlit_frag.spv.hpp
COMMAND embed-shader ${CMAKE_CURRENT_SOURCE_DIR}/shaders/lit.frag > ${CMAKE_CURRENT_SOURCE_DIR}/src/bin/lit_frag.spv.hpp
)
if(FACADE_BUILD_SHADERS)
add_custom_command(
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/shaders/default.vert
${CMAKE_CURRENT_SOURCE_DIR}/shaders/unlit.frag
${CMAKE_CURRENT_SOURCE_DIR}/shaders/lit.frag

OUTPUT
${CMAKE_CURRENT_SOURCE_DIR}/src/bin/default_vert.spv.hpp
${CMAKE_CURRENT_SOURCE_DIR}/src/bin/unlit_frag.spv.hpp
${CMAKE_CURRENT_SOURCE_DIR}/src/bin/lit_frag.spv.hpp

COMMAND embed-shader ${CMAKE_CURRENT_SOURCE_DIR}/shaders/default.vert > ${CMAKE_CURRENT_SOURCE_DIR}/src/bin/default_vert.spv.hpp
COMMAND embed-shader ${CMAKE_CURRENT_SOURCE_DIR}/shaders/unlit.frag > ${CMAKE_CURRENT_SOURCE_DIR}/src/bin/unlit_frag.spv.hpp
COMMAND embed-shader ${CMAKE_CURRENT_SOURCE_DIR}/shaders/lit.frag > ${CMAKE_CURRENT_SOURCE_DIR}/src/bin/lit_frag.spv.hpp
)
endif()

add_executable(${PROJECT_NAME})

Expand Down
2 changes: 1 addition & 1 deletion facade-lib/src/detail/gltf.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -538,7 +538,7 @@ Geometry build_geometry(Data const data, MeshData::Primitive const& mp) {
Transform transform(dj::Json const& node) {
auto ret = Transform{};
if (auto const& mat = node["matrix"]) {
auto const& arr = mat.array_view();
[[maybe_unused]] auto const& arr = mat.array_view();
assert(arr.size() == 16);
ret.set_matrix(to<glm::mat4x4>(mat));
} else {
Expand Down
7 changes: 3 additions & 4 deletions facade-lib/src/glfw/glfw.cpp
Original file line number Diff line number Diff line change
@@ -1,27 +1,26 @@
#include <facade/glfw/glfw.hpp>
#include <facade/util/error.hpp>
#include <atomic>
#include <mutex>
#include <unordered_map>

namespace facade {
namespace {
std::atomic<std::weak_ptr<Glfw>> g_glfw{};
std::weak_ptr<Glfw> g_glfw{};
std::mutex g_mutex{};

std::unordered_map<GLFWwindow*, Glfw::State> g_states{};

std::shared_ptr<Glfw> get_or_make_glfw() {
if (auto glfw = g_glfw.load().lock()) { return glfw; }
auto lock = std::scoped_lock{g_mutex};
if (auto glfw = g_glfw.lock()) { return glfw; }
if (glfwInit() != GLFW_TRUE) { throw InitError{"GLFW initialization failed"}; }
if (!glfwVulkanSupported()) {
glfwTerminate();
throw InitError{"Vulkan not supported"};
}
auto ret = std::make_shared<Glfw>();
ret->active = true;
g_glfw.load() = ret;
g_glfw = ret;
return ret;
}

Expand Down
2 changes: 1 addition & 1 deletion facade-lib/src/vk/pipes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

namespace facade {
namespace {
constexpr bool has_all_sets(std::span<SetLayout const> layouts) {
[[maybe_unused]] constexpr bool has_all_sets(std::span<SetLayout const> layouts) {
std::uint32_t set{};
for (auto const& layout : layouts) {
if (layout.set != set) { return false; }
Expand Down
4 changes: 2 additions & 2 deletions facade-lib/src/vk/vma.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ UniqueBuffer Vma::make_buffer(vk::BufferUsageFlags const usage, vk::DeviceSize c
ret.allocation.vma = *this;
ret.size = bci.size;
if (host_visible) { vmaMapMemory(allocator, ret.allocation.allocation, &ret.ptr); }
return ret;
return UniqueBuffer{std::move(ret)};
}

UniqueImage Vma::make_image(ImageCreateInfo const& info, vk::Extent2D const extent) const {
Expand All @@ -56,7 +56,7 @@ UniqueImage Vma::make_image(ImageCreateInfo const& info, vk::Extent2D const exte
ret.image = image;
ret.allocation.vma = *this;
ret.extent = extent;
return ret;
return UniqueImage{std::move(ret)};
}

vk::UniqueImageView Vma::make_image_view(vk::Image const image, vk::Format const format, vk::ImageSubresourceRange isr) const {
Expand Down