GithubHelp home page GithubHelp logo

tgfrerer / island Goto Github PK

View Code? Open in Web Editor NEW
933.0 15.0 39.0 10.06 MB

🌋🐎 Project Island is an experimental, hot-reloading Vulkan Renderer for Linux and Windows, written in C/C++.

License: MIT License

Python 0.70% CMake 1.63% C++ 58.98% C 34.47% GLSL 3.71% Shell 0.34% PowerShell 0.17%
vulkan c cpp hot-reload engine 3d-engine research-and-development rendergraph vulkan-backend experimental

island's Introduction

Project Island 🌋🐎

Project Island is an experimental Vulkan Renderer for Linux and Windows, written in C/C++.

Island is written for rapid protoyping and tweaking. That's why it allows hot-reloading wherever possible: for C/C++ application code, GLSL or HLSL shader code, even the renderer's own core modules.

Island is fast to compile. A full rebuild should take < 5s on a moderate multicore machine, and incremental builds often take < 1s.

To achieve this aim, Island is structured into strictly separated modules, which can be dropped in or out during Debug, while for Release, you can build a single, statically linked and optimised binary.

C/C++ CI

Main Features:

  • Hot-reloading: An Island project is made from isolated c/cpp modules, each of which can be tweaked, re-compiled at runtime, and automatically hot-reloaded.

  • Shader hot-reloading: Island supports shader code hot-reloading for HLSL, GLSL, or SPIR-V shader source files. Shader files are automatically watched, and any change triggers a recompile, with (Vulkan) pipelines automatically rebuilt if needed. HLSL/GLSL Shaders may use #include directives. Error messages (if any) will point at shader file and line number, and include a brief listing with problematic lines highlighted in context.

  • Image hot-reloading: If importing images via le_resource_manager (it's simple, and recommended) - any image resource may automatically hot-reload when its source file changes.

  • Fast compile times: Because of Island's modular architecture, a recompilation & reload cycle typically takes less than 1 second, while the application keeps running. Compiling the whole codebase from scratch should take less than 5 seconds when using LLVM on an average multi-core machine.

  • Code tweaks: Near-instant in-code parameter tweaks for Debug builds (no need to recompile) by using a special LE_TWEAK() macro.

  • Vulkan backend: Island has a Vulkan rendering backend, which, on Linux, allows access to new and experimental GPU features soon after they are released. The renderer takes care of most of the bureaucracy which comes with modern APIs: Vulkan resources are automatically synchronised, and only allocated when needed. Most resource properties are inferred automatically based on the context of how the resource is being used. Pipelines are compiled and recompiled on demand. When compiled in Debug mode, Vulkan validation layers are loaded by default.

  • Rendergraph- based architecture: Rendering is structured using renderpasses. Renderpasses are executed on-demand and synchronised automatically by evaluating a rendergraph. If a renderpass is detected to have no effect on the final image, it is automatically pruned. When requested, the rendergraph generates .dot files, which can be drawn using graphviz. More about how Island builds its rendergraph in this blog post.

  • Automatic GPU multiqueue: renderpasses are automatically distributed onto any avaliable render queues - if resources need to be transferred between queue families, this happens automatically. More about how Island distributes workloads across renderqueues and synchronises them in this blog post.

  • Vulkan Video Decode hardware accelerated video decode using just the new Vulkan Video api, and no external decoding dependencies, synchronising video images implicitly and simply.

  • Static release binaries: While Island is highly modular and dynamic when compiled for Debug, it can compile into a single, optimised static binary for Release.

  • Interactive Console if you add the le_console module to your app, it will listen on localhost port 3535 and, if you connect to it via telnet or similar, if will provide you with an interactive console. You can use this to change settings on a running application, and to filter and monitor log messages. Use reverse-ssh or similar to forward localhost::3535 and you can remotely connect to a running app from all over the world.

  • Gamepad support: the default camera can be steered with a gamepad-just connect your gamepad and you are set; application windows can decide whether they want to subscribe to gamepad events- and to which gamepads to subscribe to.

  • Tracy intergation nano-second-resolution profiling via Tracy - enable this by uncommenting a single line in the app CMakeLists file. Profiling works with both hot-reloading and optimised static builds.

  • Multi-Window Island allows you to hook up multiple swapchains to a single application. You can dynamically add and remove swapchains while your Island application is running. This is particularly useful for multi-window scenarios. See example

  • Straight to video: Island can render straight to screen using the direct rendering swapchain, or use any number of available options for a window-based vulkan swapchain. It's also easy to render straight to an mp4 file (via ffmpeg), or an image sequence without showing a window, by selecting the appropriate le_swapchain specialisation.

  • Helpers: minimal effort to enable multisampling, import images, import, display and use fonts

  • Support for importing OpenEXR images, in 16bit float, 32bit float variants via the core le_exr module

  • 2D drawing context: Draw thick lines and curves using le_paths, which specialises in 2D meshes. This module implements a useful subset of the SVG command palette, and includes some extras like for example a command to smoothen open or closed Bézier curves by applying the Hobby algorithm. Thick Bézier curves are drawn using an algorithm after T. F. Hain.

  • Job-system: Cooperatively parallel workloads can be implemented using the le_jobs module, which implements a job system using coroutine-like fibers. Both backend and render modules are designed to minimise resource contention.

  • GPU ray tracing Island supports RTX via the Khronos Vulkan raytracing extensions. Creating acceleration structures and shader binding tables is automated and simplified as much as possible. Ray tracing shaders can be hot-reloaded.

Examples (more examples)

Island comes with a number of examples. No collection of examples would be complete without a

Hello Triangle and a Hello World example

A full list of examples can be found here. Examples can be used as starting point for new projects by using the project generator.

Tools

Project Generator

Island projects can be scaffolded from templates (or from other, existing projects) by invoking the project generator python script. This script lives in the scripts folder, but can be invoked from anywhere.

# say myapps is where I want to place a new island project
cd island/apps/myapps

# this will create a new project based on the "hello triangle" template
../../scripts/create_project.py mynewproject

# this will create a new project based on the "full screen quad" template
../../scripts/create_project.py mynewquadproject -t quad_template

# this will create a new project based on the project "myoldproject", if it can be found in the current directory
../../scripts/create_project.py anotherproject -T . -t myoldproject
# print options and help for project generator via 
../../scripts/create_project.py -h
usage: create_project.py [-h] [-T TEMPLATE_DIR] [-t TEMPLATE_NAME]
                         project_name

Create a new Island project based on a template / or an existing
project.

positional arguments:
  project_name          Specify the name for new project to create
                        from template.

options:
  -h, --help            show this help message and exit
  -T TEMPLATE_DIR, --template-dir TEMPLATE_DIR
                        Specify a path *relative to the current
                        directory* in which to look for project
                        template directories. Use dot (".") to search
                        for project directories within the current
                        directory - for example if you wish to
                        duplicate an existing project as a starting
                        point for a new project.
  -t TEMPLATE_NAME, --template-name TEMPLATE_NAME
                        Specify the name for template. This can be
                        the name of any project directory within
                        TEMPLATE_DIR.

Modules

Island projects can be built by combining any number of island modules. Each module aims to do one thing well, and to play nice with others. Modules are automatically hot-reloaded, if a change is detected and hot-reloading is active. Some modules provide their functionality by wrapping well-known external libraries, some are written entirely from scratch. Some of the most useful modules are listed here:

Module Wraps Description
le_camera - interactive, mouse controlled camera
le_path - draw svg-style paths, parse simplified SVG-style path command lists
le_tessellator earcut, libtess tessellation; dynamic choice of tessellation backend
le_imgui imgui graphical user interface
le_pixels stb image load image files
le_font stb truetype truetype glyph sdf, geometry and texture atlas based typesetting
le_pipeline_builder - build graphics, and compute pipelines
le_rtx_pipeline_builder - build Khronos RTX raytracing pipelines
le_2d - simplified 2d drawing context
le_timebase - timekeeping, canonical clock for animations
le_jobs - fiber-based job system
le_ecs - entity-component-system
le_shader_compiler shaderc compile glsl shaders to SPIR-V
le_window glfw window i/o system
le_swapchain - windowed, direct, or straight-to-video output
le_renderer - record command buffers, evaluate rendergraphs
le_video_decoder - hardware accelerated video decoding using Vulkan Video API
le_backend - interact with GPU via Vulkan, manage GPU resources

To use a module, name it as a dependency in your applidation module's CMakeLists.txt file; modules may depend on other modules, and the build system will automatically include these dependencies. You can write your own modules - and there is a module template generator which provides you with a scaffold to start from.

Setup instructions

Island should run out of the box on a modern Linux system with the current Vulkan SDK and build tools installed. For Windows, build instructions are collected in a separate readme.

Dependencies

Island depends on a few common development tools: CMake, gcc, git, ninja. These are commonly found on a development machine. Island also depends on the Vulkan SDK.

Install Vulkan SDK

Vulkan SDK >= 1.3.211

I recommend to install the latest Vulkan SDK via a package manager. Follow the installation instructions via: https://vulkan.lunarg.com/sdk/home#linux.

Arch Linux (Manjaro)

On Arch Linux, I recommend installing the following packages via pacman: shaderc vulkan-devel ninja cmake.

Building an Island project

🚨 If you freshly cloned the Island repository, remember to update submodules before proceeding.🚨

git submodule init
git submodule update --depth=1

Then move to the directory of the Island project which you want to compile:

cd apps/examples/hello_triangle/

Build using CMake:

mkdir build
cd build
cmake -G Ninja ..
ninja

Run your new Island Application:

./Island-HelloTriangle

Note: The CMAKE parameter PLUGINS_DYNAMIC lets you choose whether to compile Island as a static binary, or as a thin module with dynamic plugins. Unless you change this parameter, Debug builds will be built thin/dynamic with hot-reloading enabled, and Release builds will produce a single static binary with hot-reloading disabled.

IDE support

I recommend using the freely available QT Creator IDE, it allows you to directly open CMake project files, and integrates pretty seamlessly with the Island workflow: running, hot-reloading, then setting a breakpoint, and then stepping whilst inspecting state in the debugger just works. Alternative IDEs are of course available, and as long as they support CMake project files, should work. When running an Island app with the debugger in Qt Creator, it's important to check that Run in terminal is disabled - this can be specified in the Run Settings dialog.

Auto-recompilation on save using entr

If you prefer to work without an IDE, but wish a setup where apps get recompiled as soon as a source file changes, the following Linux-based setup is pretty nice:

    cd apps/examples/hello_triangle
    mkdir build
    cd build
    cmake -G Ninja ..
    # and then 
    git ls-files ../.. | entr ninja &

entr(1) is a great utility, which runs a command on file change. The last line of the above script causes ninja to run as soon as any of the files checked into the github repo at hello_triangle change.

Windows 10 support

Island can compile and run natively on Microsoft Windows - with some caveats. Progress of the Windows port and Windows-specific build instructions etc. are tracked in a separate readme.

Caveats

Note Island's API is under active development, expect lots of change. As such, there are no promises that it might be ready or fit for any purpose, and the code here is released in the hope that you might find it interesting.

The initial motivation for writing Island was to experiment with a modern rendering API (Vulkan), to learn by trying out ideas around modern realtime-rendering, and to have a framework to create visual experiments with.

island's People

Contributors

jopadan avatar kant avatar ldkuba avatar mihaisebea-gl avatar pol-zzz-ygoniq avatar richardeakin avatar tgfrerer avatar themancalledjakob avatar ukari avatar underdoeg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

island's Issues

When are dot files created

While working on le_video, I noticed that a new .dot file is generated in every frame and spamming the output. is this the intended behaviour or did I somehow change the internal system so it thinks it needs to recreate the viz?

Compiling with Ninja on Windows

Is there a way to compile using Ninja on Windows? Ninja seems to have several compiling problems whereas building with MSVC seems to work. Using the same build commands for both MSVC and Ninja seems to cause the same issues.

cmake ../ -G Ninja
cmake --build ./ # also tried using `ninja`
cmake ../ # msvc
cmake --build ./

SPIRV and GLSLANG linker errors for examples

[ 98%] Linking CXX executable Island-Asterisks
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(shaderc.cc.o): in function `shaderc_compilation_result_spv_binary::~shaderc_compilation_result_spv_binary()':
(.text._ZN37shaderc_compilation_result_spv_binaryD2Ev[_ZN37shaderc_compilation_result_spv_binaryD5Ev]+0x13): undefined reference to `spvBinaryDestroy'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(shaderc.cc.o): in function `shaderc_compilation_result_spv_binary::~shaderc_compilation_result_spv_binary()':
(.text._ZN37shaderc_compilation_result_spv_binaryD0Ev[_ZN37shaderc_compilation_result_spv_binaryD5Ev]+0x13): undefined reference to `spvBinaryDestroy'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(spirv_tools_wrapper.cc.o): in function `shaderc_util::SpirvToolsDisassemble(shaderc_util::Compiler::TargetEnv, shaderc_util::Compiler::TargetEnvVersion, std::vector<unsigned int, std::allocator<unsigned int> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)':
(.text+0x1e8): undefined reference to `spvtools::SpirvTools::SpirvTools(spv_target_env)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x35a): undefined reference to `spvtools::SpirvTools::SetMessageConsumer(std::function<void (spv_message_level_t, char const*, spv_position_t const&, char const*)>)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x388): undefined reference to `spvtools::SpirvTools::Disassemble(std::vector<unsigned int, std::allocator<unsigned int> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, unsigned int) const'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x51c): undefined reference to `spvtools::SpirvTools::~SpirvTools()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(spirv_tools_wrapper.cc.o): in function `shaderc_util::SpirvToolsAssemble(shaderc_util::Compiler::TargetEnv, shaderc_util::Compiler::TargetEnvVersion, shaderc_util::string_piece, spv_binary_t**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)':
(.text+0x6cd): undefined reference to `spvContextCreate'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x70c): undefined reference to `spvTextToBinary'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xa75): undefined reference to `spvDiagnosticDestroy'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xa7f): undefined reference to `spvContextDestroy'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(spirv_tools_wrapper.cc.o): in function `shaderc_util::SpirvToolsOptimize(shaderc_util::Compiler::TargetEnv, shaderc_util::Compiler::TargetEnvVersion, std::vector<shaderc_util::PassId, std::allocator<shaderc_util::PassId> > const&, spvtools::OptimizerOptions&, std::vector<unsigned int, std::allocator<unsigned int> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)':
(.text+0xcd2): undefined reference to `spvValidatorOptionsCreate'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xce7): undefined reference to `spvValidatorOptionsSetSkipBlockLayout'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xcf4): undefined reference to `spvValidatorOptionsSetRelaxLogicalPointer'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xd01): undefined reference to `spvValidatorOptionsSetBeforeHlslLegalization'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xd11): undefined reference to `spvOptimizerOptionsSetValidatorOptions'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xd23): undefined reference to `spvOptimizerOptionsSetRunValidator'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xd50): undefined reference to `spvtools::Optimizer::Optimizer(spv_target_env)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xef9): undefined reference to `spvtools::Optimizer::SetMessageConsumer(std::function<void (spv_message_level_t, char const*, spv_position_t const&, char const*)>)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xf49): undefined reference to `spvtools::CreateCompactIdsPass()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xf56): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xf5e): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xf94): undefined reference to `spvtools::Optimizer::Run(unsigned int const*, unsigned long, std::vector<unsigned int, std::allocator<unsigned int> >*, spv_optimizer_options_t*) const'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x1062): undefined reference to `spvtools::Optimizer::~Optimizer()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x106c): undefined reference to `spvValidatorOptionsDestroy'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x10a6): undefined reference to `spvtools::Optimizer::RegisterPerformancePasses()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x10b6): undefined reference to `spvtools::Optimizer::RegisterLegalizationPasses()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x10c9): undefined reference to `spvtools::CreateStripDebugInfoPass()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x10d6): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x10e6): undefined reference to `spvtools::Optimizer::RegisterSizePasses()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(spirv_tools_wrapper.cc.o): in function `shaderc_util::SpirvToolsDisassemble(shaderc_util::Compiler::TargetEnv, shaderc_util::Compiler::TargetEnvVersion, std::vector<unsigned int, std::allocator<unsigned int> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) [clone .cold]':
(.text.unlikely+0x78): undefined reference to `spvtools::SpirvTools::~SpirvTools()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(spirv_tools_wrapper.cc.o): in function `shaderc_util::SpirvToolsOptimize(shaderc_util::Compiler::TargetEnv, shaderc_util::Compiler::TargetEnvVersion, std::vector<shaderc_util::PassId, std::allocator<shaderc_util::PassId> > const&, spvtools::OptimizerOptions&, std::vector<unsigned int, std::allocator<unsigned int> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) [clone .cold]':
(.text.unlikely+0x1c6): undefined reference to `spvtools::Optimizer::~Optimizer()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text.unlikely+0x1d0): undefined reference to `spvValidatorOptionsDestroy'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text.unlikely+0x1fb): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(compiler.cc.o): in function `shaderc_util::GlslangInitializer::GlslangInitializer()':
(.text+0x4a): undefined reference to `glslang::InitializeProcess()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(compiler.cc.o): in function `shaderc_util::GlslangInitializer::~GlslangInitializer()':
(.text+0xd9): undefined reference to `glslang::FinalizeProcess()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(compiler.cc.o): in function `shaderc_util::Compiler::PreprocessShader(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, shaderc_util::string_piece const&, shaderc_util::string_piece const&, shaderc_util::CountingIncluder&) const':
(.text+0x66ca): undefined reference to `glslang::TShader::TShader(EShLanguage)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x670f): undefined reference to `glslang::TShader::setStringsWithLengthsAndNames(char const* const*, int const*, char const* const*, int)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x6771): undefined reference to `glslang::TShader::setInvertY(bool)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x6780): undefined reference to `glslang::TShader::setNanMinMaxClamp(bool)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x683d): undefined reference to `glslang::TShader::preprocess(TBuiltInResource const*, int, EProfile, bool, bool, EShMessages, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, glslang::TShader::Includer&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x6851): undefined reference to `glslang::TShader::getInfoLog()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x6991): undefined reference to `glslang::TShader::getInfoLog()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x6a56): undefined reference to `glslang::TShader::~TShader()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(compiler.cc.o): in function `shaderc_util::Compiler::Compile(shaderc_util::string_piece const&, EShLanguage, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, std::function<EShLanguage (std::ostream*, shaderc_util::string_piece const&)> const&, shaderc_util::CountingIncluder&, shaderc_util::Compiler::OutputType, std::ostream*, unsigned long*, unsigned long*) const':
(.text+0x768a): undefined reference to `glslang::TShader::TShader(EShLanguage)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x76dc): undefined reference to `glslang::TShader::setStringsWithLengthsAndNames(char const* const*, int const*, char const* const*, int)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x76f9): undefined reference to `glslang::TShader::setEntryPoint(char const*)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7709): undefined reference to `glslang::TShader::setAutoMapBindings(bool)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7727): undefined reference to `glslang::TShader::setAutoMapLocations(bool)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7742): undefined reference to `glslang::TShader::setShiftImageBinding(unsigned int)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7756): undefined reference to `glslang::TShader::setShiftSamplerBinding(unsigned int)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x776a): undefined reference to `glslang::TShader::setShiftTextureBinding(unsigned int)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x777e): undefined reference to `glslang::TShader::setShiftUboBinding(unsigned int)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7792): undefined reference to `glslang::TShader::setShiftSsboBinding(unsigned int)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x77a6): undefined reference to `glslang::TShader::setShiftUavBinding(unsigned int)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x77b6): undefined reference to `glslang::TShader::setHlslIoMapping(bool)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x77ca): undefined reference to `glslang::TShader::setResourceSetBinding(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_s
, std::allocator<char> > > > const&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x77f8): undefined reference to `glslang::TShader::setInvertY(bool)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7808): undefined reference to `glslang::TShader::setNanMinMaxClamp(bool)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x78a3): undefined reference to `glslang::TShader::parse(TBuiltInResource const*, int, EProfile, bool, bool, EShMessages, glslang::TShader::Includer&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x78b2): undefined reference to `glslang::TShader::getInfoLog()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7925): undefined reference to `glslang::TProgram::TProgram()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7967): undefined reference to `glslang::TProgram::link(EShMessages)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x797e): undefined reference to `glslang::TProgram::getInfoLog()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7a2e): undefined reference to `glslang::GlslangToSpv(glslang::TIntermediate const&, std::vector<unsigned int, std::allocator<unsigned int> >&, glslang::SpvOptions*)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7ad1): undefined reference to `glslang::TProgram::~TProgram()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7ad9): undefined reference to `glslang::TShader::~TShader()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x8159): undefined reference to `glslang::TShader::setTextureSamplerTransformMode(EShTextureSamplerTransformMode)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x84b0): undefined reference to `spvOptimizerOptionsCreate'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x84c7): undefined reference to `spvOptimizerOptionsSetPreserveBindings'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x858f): undefined reference to `spvOptimizerOptionsDestroy'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x8623): undefined reference to `glslang::TProgram::mapIO(glslang::TIoMapResolver*, glslang::TIoMapper*)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x870b): undefined reference to `spvOptimizerOptionsDestroy'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(compiler.cc.o): in function `shaderc_util::Compiler::PreprocessShader(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, shaderc_util::string_piece const&, shaderc_util::string_piece const&, shaderc_util::CountingIncluder&) const [clone .cold]':
(.text.unlikely+0x47b): undefined reference to `glslang::TShader::~TShader()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(compiler.cc.o): in function `shaderc_util::Compiler::Compile(shaderc_util::string_piece const&, EShLanguage, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, std::function<EShLanguage (std::ostream*, shaderc_util::string_piece const&)> const&, shaderc_util::CountingIncluder&, shaderc_util::Compiler::OutputType, std::ostream*, unsigned long*, unsigned long*) const [clone .cold]':
(.text.unlikely+0x52e): undefined reference to `spvOptimizerOptionsDestroy'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text.unlikely+0x555): undefined reference to `glslang::TProgram::~TProgram()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text.unlikely+0x567): undefined reference to `glslang::TShader::~TShader()'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/Island-Asterisks.dir/build.make:115: Island-Asterisks] Error 1
make[1]: *** [CMakeFiles/Makefile2:399: CMakeFiles/Island-Asterisks.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

build error VK_MAKE_API_VERSION not declared

Compiled with Debian Bullseye (vulkan version 1.2.162). the ninja command gives following error:
island/modules/le_backend_vk/le_instance_vk.cpp:448:30: error: ‘VK_MAKE_API_VERSION’ was not declared in this scope; did you mean ‘VK_MAKE_VERSION’? 448 | .setApplicationVersion( VK_MAKE_API_VERSION( 0, 0, 0, 0 ) ) | ^~~~~~~~~~~~~~~~~~~ | VK_MAKE_VERSION

Fix in #37

If you run into this on debian, you can install libvulkan-dev from backports like that:
sudo apt install libvulkan-dev -t bullseye-backports

Windows compilation

Hi
I want to look into windows compilation (https://github.com/mihaisebea/island)
Let me know if you have any thoughts/sugesstions.
The major issues that i see are

  • api_loader

  • file_watcher

  • job system

  • maybe swapchain since it's made to use x11 display

Other things that come to mind.

  • glfw - ideally this should be a submodule since there is no system one on windows
  • imgui should be added to the solution instead of cmake building it
  • glm should be used directly instead of creating links?
  • shader_compiler?

multiple windows and context sharing

do you have a few hints on how to setup a project with multiple windows? One or two for rendering some shared vertex buffers and another for an imgui context?

Failed to build for 18.04

After installing vulkan-sdk, ninja, glfw3, glfw3-build. Also checked that gcc is up to date

kyle:~$ cd Desktop/ && git clone https://github.com/tgfrerer/island.git && cd island
Cloning into 'island'...
remote: Enumerating objects: 61, done.
remote: Counting objects: 100% (61/61), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 12774 (delta 23), reused 47 (delta 21), pack-reused 12713
Receiving objects: 100% (12774/12774), 3.44 MiB | 3.79 MiB/s, done.
Resolving deltas: 100% (8972/8972), done.
kyle:~/Desktop/island$ git submodule init
Submodule '3rdparty/src/glm' (https://github.com/g-truc/glm) registered for path '3rdparty/src/glm'
Submodule '3rdparty/src/imgui' (https://github.com/ocornut/imgui) registered for path '3rdparty/src/imgui'
Submodule 'modules/le_gltf/3rdparty/cgltf' (https://github.com/jkuhlmann/cgltf.git) registered for path 'modules/le_gltf/3rdparty/cgltf'
Submodule 'modules/le_tessellator/3rdparty/earcut.hpp' (https://github.com/mapbox/earcut.hpp) registered for path 'modules/le_tessellator/3rdparty/earcut.hpp'
Submodule 'modules/le_tessellator/3rdparty/libtess2' (https://github.com/memononen/libtess2) registered for path 'modules/le_tessellator/3rdparty/libtess2'
kyle:~/Desktop/island$ git submodule update --depth=1
Cloning into '/home/kyle/Desktop/island/3rdparty/src/glm'...
Cloning into '/home/kyle/Desktop/island/3rdparty/src/imgui'...
Cloning into '/home/kyle/Desktop/island/modules/le_gltf/3rdparty/cgltf'...
Cloning into '/home/kyle/Desktop/island/modules/le_tessellator/3rdparty/earcut.hpp'...
Cloning into '/home/kyle/Desktop/island/modules/le_tessellator/3rdparty/libtess2'...
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Enumerating objects: 137, done.
remote: Counting objects: 100% (137/137), done.
remote: Compressing objects: 100% (52/52), done.
remote: Total 73 (delta 67), reused 23 (delta 21), pack-reused 0
Unpacking objects: 100% (73/73), done.
From https://github.com/g-truc/glm
 * branch            6bd53cc9e529cfb749f1badbbd23b1b8e6773651 -> FETCH_HEAD
Submodule path '3rdparty/src/glm': checked out '6bd53cc9e529cfb749f1badbbd23b1b8e6773651'
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Enumerating objects: 257, done.
remote: Counting objects: 100% (257/257), done.
remote: Compressing objects: 100% (129/129), done.
remote: Total 141 (delta 108), reused 31 (delta 10), pack-reused 0
Receiving objects: 100% (141/141), 169.86 KiB | 2.26 MiB/s, done.
Resolving deltas: 100% (108/108), completed with 90 local objects.
From https://github.com/ocornut/imgui
 * branch            c12da2a60798d2b71b3804063c4de4d0653ef1a0 -> FETCH_HEAD
Submodule path '3rdparty/src/imgui': checked out 'c12da2a60798d2b71b3804063c4de4d0653ef1a0'
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Enumerating objects: 19, done.
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 10 (delta 7), reused 2 (delta 0), pack-reused 0
Unpacking objects: 100% (10/10), done.
From https://github.com/jkuhlmann/cgltf
 * branch            8447a41831560bebfe6953f96266f551c6cbe999 -> FETCH_HEAD
Submodule path 'modules/le_gltf/3rdparty/cgltf': checked out '8447a41831560bebfe6953f96266f551c6cbe999'
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Enumerating objects: 17, done.
remote: Counting objects: 100% (17/17), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 9 (delta 6), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (9/9), done.
From https://github.com/mapbox/earcut.hpp
 * branch            ee3637f5c762e61fa96a9cec63b265148a1dc12d -> FETCH_HEAD
Submodule path 'modules/le_tessellator/3rdparty/earcut.hpp': checked out 'ee3637f5c762e61fa96a9cec63b265148a1dc12d'
Submodule path 'modules/le_tessellator/3rdparty/libtess2': checked out 'fc52516467dfa124bdd967c15c7cf9faf02a34ca'
kyle:~/Desktop/island$ cd apps/examples/hello_triangle/
kyle:~/Desktop/island/apps/examples/hello_triangle$ mkdir build && cd build
kyle:~/Desktop/island/apps/examples/hello_triangle/build$ cmake -G Ninja ..
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Build type:
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
Imgui Build: generator is set to Ninja
-- Configuring done
-- Generating done
-- Build files have been written to: /home/kyle/Desktop/island/3rdparty/src/imgui/build
[1/6] Building CXX object CMakeFiles/imgui.dir/imgui_demo.cpp.o
[2/6] Building CXX object CMakeFiles/imgui.dir/imgui_draw.cpp.o
[3/6] Building CXX object CMakeFiles/imgui.dir/imgui_widgets.cpp.o
[4/6] Building CXX object CMakeFiles/imgui.dir/imgui.cpp.o
[5/6] Linking CXX static library libimgui.a
[5/6] Install the project...
-- Install configuration: ""
-- Installing: /home/kyle/Desktop/island/3rdparty/libs/imgui/libimgui.a
-- Installing: /home/kyle/Desktop/island/3rdparty/include/imgui/imconfig.h
-- Installing: /home/kyle/Desktop/island/3rdparty/include/imgui/imgui.h
-- Loading module  : le_camera
-- Loading module  : le_file_watcher
-- Loading module  : le_core
-- Loading module  : le_pipeline_builder
-- Loading module  : le_window
-- Loading module  : le_backend_vk
-- Loading module  : le_swapchain_vk
-- Loading module  : le_renderer
-- Loading module  : le_jobs
-- Loading module  : le_shader_compiler
-- Static libraries: hello_triangle_app;le_camera;le_file_watcher;le_core;le_pipeline_builder;le_window;le_backend_vk;le_swapchain_vk;le_renderer;le_jobs;le_shader_compiler
-- Loaded modules  : le_camera;le_file_watcher;le_core;le_pipeline_builder;le_window;le_backend_vk;le_swapchain_vk;le_renderer;le_jobs;le_shader_compiler
-- Configuring done
-- Generating done
-- Build files have been written to: /home/kyle/Desktop/island/apps/examples/hello_triangle/build
kyle:~/Desktop/island/apps/examples/hello_triangle/build$ ninja
[1/27] Building CXX object le_file_watcher/CMakeFiles/le_file_watcher.dir/le_file_watcher.cpp.o
FAILED: le_file_watcher/CMakeFiles/le_file_watcher.dir/le_file_watcher.cpp.o
/home/kyle/anaconda3/lib/python3.7/site-packages/cmake/data/bin/cmake -E time /usr/bin/c++   -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include/glm -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../.. -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../modules -std=gnu++1z -MD -MT le_file_watcher/CMakeFiles/le_file_watcher.dir/le_file_watcher.cpp.o -MF le_file_watcher/CMakeFiles/le_file_watcher.dir/le_file_watcher.cpp.o.d -o le_file_watcher/CMakeFiles/le_file_watcher.dir/le_file_watcher.cpp.o -c /home/kyle/Desktop/island/modules/le_file_watcher/le_file_watcher.cpp
/home/kyle/Desktop/island/modules/le_file_watcher/le_file_watcher.cpp:11:10: fatal error: filesystem: No such file or directory
 #include <filesystem>
          ^~~~~~~~~~~~
compilation terminated.
Elapsed time: 0 s. (time), 0.00057 s. (clock)
[2/27] Linking CXX static library modules/lible_window.a
Elapsed time: 0 s. (time), 0.000536 s. (clock)
Elapsed time: 0 s. (time), 0.000391 s. (clock)
Elapsed time: 0 s. (time), 0.00033 s. (clock)
[3/27] Building CXX object le_renderer/CMakeFiles/le_renderer.dir/le_rendergraph.cpp.o
FAILED: le_renderer/CMakeFiles/le_renderer.dir/le_rendergraph.cpp.o
/home/kyle/anaconda3/lib/python3.7/site-packages/cmake/data/bin/cmake -E time /usr/bin/c++   -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include/glm -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../.. -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../modules -std=gnu++1z -MD -MT le_renderer/CMakeFiles/le_renderer.dir/le_rendergraph.cpp.o -MF le_renderer/CMakeFiles/le_renderer.dir/le_rendergraph.cpp.o.d -o le_renderer/CMakeFiles/le_renderer.dir/le_rendergraph.cpp.o -c /home/kyle/Desktop/island/modules/le_renderer/le_rendergraph.cpp
/home/kyle/Desktop/island/modules/le_renderer/le_rendergraph.cpp:12:10: fatal error: filesystem: No such file or directory
 #include <filesystem>
          ^~~~~~~~~~~~
compilation terminated.
Elapsed time: 0 s. (time), 0.000358 s. (clock)
[4/27] Building CXX object le_backend_vk/CMakeFiles/le_backend_vk.dir/le_pipeline.cpp.o
FAILED: le_backend_vk/CMakeFiles/le_backend_vk.dir/le_pipeline.cpp.o
/home/kyle/anaconda3/lib/python3.7/site-packages/cmake/data/bin/cmake -E time /usr/bin/c++  -DVK_ENABLE_BETA_EXTENSIONS=1 -DVMA_USE_STL_CONTAINERS=1 -DVULKAN_HPP_NO_SMART_HANDLE -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include/glm -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../.. -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../modules -std=gnu++1z -MD -MT le_backend_vk/CMakeFiles/le_backend_vk.dir/le_pipeline.cpp.o -MF le_backend_vk/CMakeFiles/le_backend_vk.dir/le_pipeline.cpp.o.d -o le_backend_vk/CMakeFiles/le_backend_vk.dir/le_pipeline.cpp.o -c /home/kyle/Desktop/island/modules/le_backend_vk/le_pipeline.cpp
/home/kyle/Desktop/island/modules/le_backend_vk/le_pipeline.cpp:10:10: fatal error: filesystem: No such file or directory
 #include <filesystem> // for parsing shader source file paths
          ^~~~~~~~~~~~
compilation terminated.
Elapsed time: 0 s. (time), 0.000564 s. (clock)
[5/27] Building CXX object le_renderer/CMakeFiles/le_renderer.dir/le_renderer.cpp.o
FAILED: le_renderer/CMakeFiles/le_renderer.dir/le_renderer.cpp.o
/home/kyle/anaconda3/lib/python3.7/site-packages/cmake/data/bin/cmake -E time /usr/bin/c++   -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include/glm -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../.. -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../modules -std=gnu++1z -MD -MT le_renderer/CMakeFiles/le_renderer.dir/le_renderer.cpp.o -MF le_renderer/CMakeFiles/le_renderer.dir/le_renderer.cpp.o.d -o le_renderer/CMakeFiles/le_renderer.dir/le_renderer.cpp.o -c /home/kyle/Desktop/island/modules/le_renderer/le_renderer.cpp
/home/kyle/Desktop/island/modules/le_renderer/le_renderer.cpp: In function ‘le_texture_handle_t* renderer_produce_texture_handle(const char*)’:
/home/kyle/Desktop/island/modules/le_renderer/le_renderer.cpp:115:24: error: ‘find_if’ is not a member of ‘std’
   auto found_el = std::find_if(
                        ^~~~~~~
/home/kyle/Desktop/island/modules/le_renderer/le_renderer.cpp:115:24: note: suggested alternative: ‘find’
   auto found_el = std::find_if(
                        ^~~~~~~
                        find
Elapsed time: 0 s. (time), 0.000388 s. (clock)
[6/27] Building CXX object le_renderer/CMakeFiles/le_renderer.dir/le_command_buffer_encoder.cpp.o
FAILED: le_renderer/CMakeFiles/le_renderer.dir/le_command_buffer_encoder.cpp.o
/home/kyle/anaconda3/lib/python3.7/site-packages/cmake/data/bin/cmake -E time /usr/bin/c++   -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include/glm -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../.. -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../modules -std=gnu++1z -MD -MT le_renderer/CMakeFiles/le_renderer.dir/le_command_buffer_encoder.cpp.o -MF le_renderer/CMakeFiles/le_renderer.dir/le_command_buffer_encoder.cpp.o.d -o le_renderer/CMakeFiles/le_renderer.dir/le_command_buffer_encoder.cpp.o -c /home/kyle/Desktop/island/modules/le_renderer/le_command_buffer_encoder.cpp
/home/kyle/Desktop/island/modules/le_renderer/le_command_buffer_encoder.cpp: In lambda function:
/home/kyle/Desktop/island/modules/le_renderer/le_command_buffer_encoder.cpp:544:25: error: ‘max_element’ is not a member of ‘std’
   return uint32_t( std::max_element( shader_vec.begin(), shader_vec.end(), compare_fun )->parameters.size() );
                         ^~~~~~~~~~~
/home/kyle/Desktop/island/modules/le_renderer/le_command_buffer_encoder.cpp:544:25: note: suggested alternative: ‘tuple_element’
   return uint32_t( std::max_element( shader_vec.begin(), shader_vec.end(), compare_fun )->parameters.size() );
                         ^~~~~~~~~~~
                         tuple_element
Elapsed time: 0 s. (time), 0.00041 s. (clock)
[7/27] Building CXX object le_swapchain_vk/CMakeFiles/le_swapchain_vk.dir/le_swapchain_img.cpp.o
FAILED: le_swapchain_vk/CMakeFiles/le_swapchain_vk.dir/le_swapchain_img.cpp.o
/home/kyle/anaconda3/lib/python3.7/site-packages/cmake/data/bin/cmake -E time /usr/bin/c++   -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include/glm -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../.. -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../modules -std=gnu++1z -MD -MT le_swapchain_vk/CMakeFiles/le_swapchain_vk.dir/le_swapchain_img.cpp.o -MF le_swapchain_vk/CMakeFiles/le_swapchain_vk.dir/le_swapchain_img.cpp.o.d -o le_swapchain_vk/CMakeFiles/le_swapchain_vk.dir/le_swapchain_img.cpp.o -c /home/kyle/Desktop/island/modules/le_swapchain_vk/le_swapchain_img.cpp
In file included from /home/kyle/Desktop/island/modules/le_swapchain_vk/le_swapchain_img.cpp:4:0:
/usr/include/vulkan/vulkan.hpp:13471:22: error: ‘UniqueHandle’ was not declared in this scope
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                      ^~~~~~~~~~~~
/usr/include/vulkan/vulkan.hpp:13471:40: error: wrong number of template arguments (2, should be 1)
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                                        ^~~~~~~~
/usr/include/vulkan/vulkan.hpp:13426:10: note: provided for ‘template<class T> struct vk::ResultValue’
   struct ResultValue
          ^~~~~~~~~~~
/usr/include/vulkan/vulkan.hpp:13471:48: error: expected unqualified-id before ‘>’ token
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                                                ^~
Elapsed time: 1 s. (time), 0.000727 s. (clock)
[8/27] Building CXX object le_swapchain_vk/CMakeFiles/le_swapchain_vk.dir/le_swapchain_khr.cpp.o
FAILED: le_swapchain_vk/CMakeFiles/le_swapchain_vk.dir/le_swapchain_khr.cpp.o
/home/kyle/anaconda3/lib/python3.7/site-packages/cmake/data/bin/cmake -E time /usr/bin/c++   -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include/glm -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../.. -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../modules -std=gnu++1z -MD -MT le_swapchain_vk/CMakeFiles/le_swapchain_vk.dir/le_swapchain_khr.cpp.o -MF le_swapchain_vk/CMakeFiles/le_swapchain_vk.dir/le_swapchain_khr.cpp.o.d -o le_swapchain_vk/CMakeFiles/le_swapchain_vk.dir/le_swapchain_khr.cpp.o -c /home/kyle/Desktop/island/modules/le_swapchain_vk/le_swapchain_khr.cpp
In file included from /home/kyle/Desktop/island/modules/le_swapchain_vk/le_swapchain_khr.cpp:6:0:
/usr/include/vulkan/vulkan.hpp:13471:22: error: ‘UniqueHandle’ was not declared in this scope
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                      ^~~~~~~~~~~~
/usr/include/vulkan/vulkan.hpp:13471:40: error: wrong number of template arguments (2, should be 1)
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                                        ^~~~~~~~
/usr/include/vulkan/vulkan.hpp:13426:10: note: provided for ‘template<class T> struct vk::ResultValue’
   struct ResultValue
          ^~~~~~~~~~~
/usr/include/vulkan/vulkan.hpp:13471:48: error: expected unqualified-id before ‘>’ token
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                                                ^~
Elapsed time: 1 s. (time), 0.000629 s. (clock)
[9/27] Building CXX object le_backend_vk/CMakeFiles/le_backend_vk.dir/le_instance_vk.cpp.o
FAILED: le_backend_vk/CMakeFiles/le_backend_vk.dir/le_instance_vk.cpp.o
/home/kyle/anaconda3/lib/python3.7/site-packages/cmake/data/bin/cmake -E time /usr/bin/c++  -DVK_ENABLE_BETA_EXTENSIONS=1 -DVMA_USE_STL_CONTAINERS=1 -DVULKAN_HPP_NO_SMART_HANDLE -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include/glm -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../.. -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../modules -std=gnu++1z -MD -MT le_backend_vk/CMakeFiles/le_backend_vk.dir/le_instance_vk.cpp.o -MF le_backend_vk/CMakeFiles/le_backend_vk.dir/le_instance_vk.cpp.o.d -o le_backend_vk/CMakeFiles/le_backend_vk.dir/le_instance_vk.cpp.o -c /home/kyle/Desktop/island/modules/le_backend_vk/le_instance_vk.cpp
In file included from /home/kyle/Desktop/island/modules/le_backend_vk/le_instance_vk.cpp:3:0:
/usr/include/vulkan/vulkan.hpp:13471:22: error: ‘UniqueHandle’ was not declared in this scope
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                      ^~~~~~~~~~~~
/usr/include/vulkan/vulkan.hpp:13471:40: error: wrong number of template arguments (2, should be 1)
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                                        ^~~~~~~~
/usr/include/vulkan/vulkan.hpp:13426:10: note: provided for ‘template<class T> struct vk::ResultValue’
   struct ResultValue
          ^~~~~~~~~~~
/usr/include/vulkan/vulkan.hpp:13471:48: error: expected unqualified-id before ‘>’ token
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                                                ^~
Elapsed time: 1 s. (time), 0.000627 s. (clock)
[10/27] Building CXX object le_backend_vk/CMakeFiles/le_backend_vk.dir/le_device_vk.cpp.o
FAILED: le_backend_vk/CMakeFiles/le_backend_vk.dir/le_device_vk.cpp.o
/home/kyle/anaconda3/lib/python3.7/site-packages/cmake/data/bin/cmake -E time /usr/bin/c++  -DVK_ENABLE_BETA_EXTENSIONS=1 -DVMA_USE_STL_CONTAINERS=1 -DVULKAN_HPP_NO_SMART_HANDLE -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include/glm -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../.. -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../modules -std=gnu++1z -MD -MT le_backend_vk/CMakeFiles/le_backend_vk.dir/le_device_vk.cpp.o -MF le_backend_vk/CMakeFiles/le_backend_vk.dir/le_device_vk.cpp.o.d -o le_backend_vk/CMakeFiles/le_backend_vk.dir/le_device_vk.cpp.o -c /home/kyle/Desktop/island/modules/le_backend_vk/le_device_vk.cpp
In file included from /home/kyle/Desktop/island/modules/le_backend_vk/le_backend_types_internal.h:7:0,
                 from /home/kyle/Desktop/island/modules/le_backend_vk/le_device_vk.cpp:2:
/usr/include/vulkan/vulkan.hpp:13471:22: error: ‘UniqueHandle’ was not declared in this scope
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                      ^~~~~~~~~~~~
/usr/include/vulkan/vulkan.hpp:13471:40: error: wrong number of template arguments (2, should be 1)
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                                        ^~~~~~~~
/usr/include/vulkan/vulkan.hpp:13426:10: note: provided for ‘template<class T> struct vk::ResultValue’
   struct ResultValue
          ^~~~~~~~~~~
/usr/include/vulkan/vulkan.hpp:13471:48: error: expected unqualified-id before ‘>’ token
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                                                ^~
Elapsed time: 2 s. (time), 0.00066 s. (clock)
[11/27] Building CXX object le_swapchain_vk/CMakeFiles/le_swapchain_vk.dir/le_swapchain_direct.cpp.o
FAILED: le_swapchain_vk/CMakeFiles/le_swapchain_vk.dir/le_swapchain_direct.cpp.o
/home/kyle/anaconda3/lib/python3.7/site-packages/cmake/data/bin/cmake -E time /usr/bin/c++   -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include/glm -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../.. -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../modules -std=gnu++1z -MD -MT le_swapchain_vk/CMakeFiles/le_swapchain_vk.dir/le_swapchain_direct.cpp.o -MF le_swapchain_vk/CMakeFiles/le_swapchain_vk.dir/le_swapchain_direct.cpp.o.d -o le_swapchain_vk/CMakeFiles/le_swapchain_vk.dir/le_swapchain_direct.cpp.o -c /home/kyle/Desktop/island/modules/le_swapchain_vk/le_swapchain_direct.cpp
In file included from /home/kyle/Desktop/island/modules/le_swapchain_vk/le_swapchain_direct.cpp:8:0:
/usr/include/vulkan/vulkan.hpp:13471:22: error: ‘UniqueHandle’ was not declared in this scope
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                      ^~~~~~~~~~~~
/usr/include/vulkan/vulkan.hpp:13471:40: error: wrong number of template arguments (2, should be 1)
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                                        ^~~~~~~~
/usr/include/vulkan/vulkan.hpp:13426:10: note: provided for ‘template<class T> struct vk::ResultValue’
   struct ResultValue
          ^~~~~~~~~~~
/usr/include/vulkan/vulkan.hpp:13471:48: error: expected unqualified-id before ‘>’ token
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                                                ^~
Elapsed time: 2 s. (time), 0.000701 s. (clock)
[12/27] Building CXX object le_backend_vk/CMakeFiles/le_backend_vk.dir/le_allocator.cpp.o
FAILED: le_backend_vk/CMakeFiles/le_backend_vk.dir/le_allocator.cpp.o
/home/kyle/anaconda3/lib/python3.7/site-packages/cmake/data/bin/cmake -E time /usr/bin/c++  -DVK_ENABLE_BETA_EXTENSIONS=1 -DVMA_USE_STL_CONTAINERS=1 -DVULKAN_HPP_NO_SMART_HANDLE -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include/glm -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../.. -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../modules -std=gnu++1z -MD -MT le_backend_vk/CMakeFiles/le_backend_vk.dir/le_allocator.cpp.o -MF le_backend_vk/CMakeFiles/le_backend_vk.dir/le_allocator.cpp.o.d -o le_backend_vk/CMakeFiles/le_backend_vk.dir/le_allocator.cpp.o -c /home/kyle/Desktop/island/modules/le_backend_vk/le_allocator.cpp
In file included from /home/kyle/Desktop/island/modules/le_backend_vk/le_allocator.cpp:7:0:
/usr/include/vulkan/vulkan.hpp:13471:22: error: ‘UniqueHandle’ was not declared in this scope
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                      ^~~~~~~~~~~~
/usr/include/vulkan/vulkan.hpp:13471:40: error: wrong number of template arguments (2, should be 1)
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                                        ^~~~~~~~
/usr/include/vulkan/vulkan.hpp:13426:10: note: provided for ‘template<class T> struct vk::ResultValue’
   struct ResultValue
          ^~~~~~~~~~~
/usr/include/vulkan/vulkan.hpp:13471:48: error: expected unqualified-id before ‘>’ token
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                                                ^~
Elapsed time: 2 s. (time), 0.000637 s. (clock)
[13/27] Building CXX object le_pipeline_builder/CMakeFiles/le_pipeline_builder.dir/le_pipeline_builder.cpp.o
FAILED: le_pipeline_builder/CMakeFiles/le_pipeline_builder.dir/le_pipeline_builder.cpp.o
/home/kyle/anaconda3/lib/python3.7/site-packages/cmake/data/bin/cmake -E time /usr/bin/c++  -DLE_FEATURE_RTX -DVK_ENABLE_BETA_EXTENSIONS=1 -DVULKAN_HPP_NO_SMART_HANDLE -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include/glm -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../.. -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../modules -std=gnu++1z -MD -MT le_pipeline_builder/CMakeFiles/le_pipeline_builder.dir/le_pipeline_builder.cpp.o -MF le_pipeline_builder/CMakeFiles/le_pipeline_builder.dir/le_pipeline_builder.cpp.o.d -o le_pipeline_builder/CMakeFiles/le_pipeline_builder.dir/le_pipeline_builder.cpp.o -c /home/kyle/Desktop/island/modules/le_pipeline_builder/le_pipeline_builder.cpp
In file included from /home/kyle/Desktop/island/apps/examples/hello_triangle/../../../modules/le_backend_vk/le_backend_types_internal.h:7:0,
                 from /home/kyle/Desktop/island/modules/le_pipeline_builder/le_pipeline_builder.cpp:9:
/usr/include/vulkan/vulkan.hpp:13471:22: error: ‘UniqueHandle’ was not declared in this scope
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                      ^~~~~~~~~~~~
/usr/include/vulkan/vulkan.hpp:13471:40: error: wrong number of template arguments (2, should be 1)
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                                        ^~~~~~~~
/usr/include/vulkan/vulkan.hpp:13426:10: note: provided for ‘template<class T> struct vk::ResultValue’
   struct ResultValue
          ^~~~~~~~~~~
/usr/include/vulkan/vulkan.hpp:13471:48: error: expected unqualified-id before ‘>’ token
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                                                ^~
Elapsed time: 2 s. (time), 0.00068 s. (clock)
[14/27] Building CXX object le_backend_vk/CMakeFiles/le_backend_vk.dir/le_backend_vk.cpp.o
FAILED: le_backend_vk/CMakeFiles/le_backend_vk.dir/le_backend_vk.cpp.o
/home/kyle/anaconda3/lib/python3.7/site-packages/cmake/data/bin/cmake -E time /usr/bin/c++  -DVK_ENABLE_BETA_EXTENSIONS=1 -DVMA_USE_STL_CONTAINERS=1 -DVULKAN_HPP_NO_SMART_HANDLE -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include/glm -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../3rdparty/include -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../.. -I/home/kyle/Desktop/island/apps/examples/hello_triangle/../../../modules -std=gnu++1z -MD -MT le_backend_vk/CMakeFiles/le_backend_vk.dir/le_backend_vk.cpp.o -MF le_backend_vk/CMakeFiles/le_backend_vk.dir/le_backend_vk.cpp.o.d -o le_backend_vk/CMakeFiles/le_backend_vk.dir/le_backend_vk.cpp.o -c /home/kyle/Desktop/island/modules/le_backend_vk/le_backend_vk.cpp
In file included from /home/kyle/Desktop/island/apps/examples/hello_triangle/../../../modules/le_backend_vk/le_backend_types_internal.h:7:0,
                 from /home/kyle/Desktop/island/modules/le_backend_vk/le_backend_vk.cpp:6:
/usr/include/vulkan/vulkan.hpp:13471:22: error: ‘UniqueHandle’ was not declared in this scope
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                      ^~~~~~~~~~~~
/usr/include/vulkan/vulkan.hpp:13471:40: error: wrong number of template arguments (2, should be 1)
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                                        ^~~~~~~~
/usr/include/vulkan/vulkan.hpp:13426:10: note: provided for ‘template<class T> struct vk::ResultValue’
   struct ResultValue
          ^~~~~~~~~~~
/usr/include/vulkan/vulkan.hpp:13471:48: error: expected unqualified-id before ‘>’ token
   struct ResultValue<UniqueHandle<Type,Dispatch>>
                                                ^~
/home/kyle/Desktop/island/modules/le_backend_vk/le_backend_vk.cpp: In function ‘void backend_create_descriptor_pools(BackendFrameData&, vk::Device&, size_t)’:
/home/kyle/Desktop/island/modules/le_backend_vk/le_backend_vk.cpp:2183:32: error: ‘VK_DESCRIPTOR_TYPE_RANGE_SIZE’ was not declared in this scope
   descriptorPoolSizes.reserve( VK_DESCRIPTOR_TYPE_RANGE_SIZE );
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/kyle/Desktop/island/modules/le_backend_vk/le_backend_vk.cpp:2183:32: note: suggested alternative: ‘VK_DESCRIPTOR_TYPE_MAX_ENUM’
   descriptorPoolSizes.reserve( VK_DESCRIPTOR_TYPE_RANGE_SIZE );
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                VK_DESCRIPTOR_TYPE_MAX_ENUM
/home/kyle/Desktop/island/modules/le_backend_vk/le_backend_vk.cpp:2185:20: error: ‘VK_DESCRIPTOR_TYPE_BEGIN_RANGE’ was not declared in this scope
   for ( size_t i = VK_DESCRIPTOR_TYPE_BEGIN_RANGE; i != VK_DESCRIPTOR_TYPE_BEGIN_RANGE + VK_DESCRIPTOR_TYPE_RANGE_SIZE; ++i ) {
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/kyle/Desktop/island/modules/le_backend_vk/le_backend_vk.cpp:2185:20: note: suggested alternative: ‘VK_DESCRIPTOR_TYPE_MAX_ENUM’
   for ( size_t i = VK_DESCRIPTOR_TYPE_BEGIN_RANGE; i != VK_DESCRIPTOR_TYPE_BEGIN_RANGE + VK_DESCRIPTOR_TYPE_RANGE_SIZE; ++i ) {
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    VK_DESCRIPTOR_TYPE_MAX_ENUM
Elapsed time: 2 s. (time), 0.000861 s. (clock)
ninja: build stopped: subcommand failed.

problem trying to compile examples

hi im trying to compile the examples but i get
433 | *properties = self->raytracingProperties;
| ^~~~~~~~~~~~~~~~~~~~
[68/74] Building CXX object le_backend_vk/CMakeFiles/le_backend_vk.dir/le_backend_vk.cpp.o
FAILED: le_backend_vk/CMakeFiles/le_backend_vk.dir/le_bac,

An error occurred while running example(hello world and ) on win10.

An error occurred while running example(hello world and ) on win10. Nothing show on window.

The console outputs :

[ le_instance_vk | INFO ] Debug instance layers added.
[ le_instance_vk | INFO ] Vulkan Validation Layers Active.
[ le_instance_vk | INFO ] Instance created.
[ le_backend | INFO ] Selected GPU: AMD Radeon R5 430
[ le_backend | INFO ] Found versatile queue matching: '{ Graphics }'
[ le_backend | ERROR ] No available queue matching requirement: '{ Compute }'
[ le_backend | INFO ] Enabled Device Extensions:
[ le_backend | INFO ] + VK_KHR_swapchain
[ le_instance_vk | INFO ] vk validation: { GENERAL | INFO} Inserted device layer VK_LAYER_KHRONOS_validation (C:\VulkanSDK\1.2.182.0\Bin.\VkLayer_khronos_validation.dll)
[ le_instance_vk | INFO ] vk validation: { GENERAL | INFO} Failed to find vkGetDeviceProcAddr in layer C:\WINDOWS\System32\DriverStore\FileRepository\u0364501.inf_amd64_9e2e01a9e583efcd\B364303.\amdvlk64.dll
[ le_instance_vk | ERROR ] vk validation: { GENERAL | ERROR} terminator_CreateDevice: Failed in ICD C:\WINDOWS\System32\DriverStore\FileRepository\u0364501.inf_amd64_9e2e01a9e583efcd\B364303.\amdvlk64.dll vkCreateDevicecall
[ le_instance_vk | ERROR ] vk validation: { GENERAL | ERROR} vkCreateDevice: Failed to create device chain.

Running on ubuntu

Hi, this is a pretty cool project =)

unfortunately after compiling and running the hello_triangle sample I get a crash:

X Error of failed request:  BadDrawable (invalid Pixmap or Window parameter)
  Major opcode of failed request:  149 ()
  Minor opcode of failed request:  4
  Resource id in failed request:  0x420000f
  Serial number of failed request:  217
  Current serial number in output stream:  223

also, not sure if this helps. Since this was a fresh Ubuntu I had to install this packages:

   27  sudo apt-get install Ninja
   37  sudo apt-get install xorg openbox
   52  sudo apt install libx11-dev
   63  sudo apt-get install libxrandr-dev
   67  sudo apt-get install libxinerama-dev
   71  sudo apt-get install libxcursor-dev
   75  sudo apt-get install libxi-dev
   77  sudo apt-get install libxi-dev
  193 sudo apt install mesa-common-dev

let me know if there's any other information that can help..

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.