libfloor v0.3.0
Based on https://github.com/a2flo/floor/tree/v0.3.0 (commit 04e7aab).
Release Notes
While I'm considering the master branch to always be stable, I am making this release now, because major changes are ahead (see Deprecation). This release should thus be considered a reference point rather than a release that can/should be built upon.
Changes
- upgraded to a clang/LLVM 14.0 toolchain, enabling use of C++20 on the device side
- implemented a fully usable Vulkan backend (host and device side)
- implemented full graphics support for Metal and Vulkan
- implemented support for device-like Host-Compute (pre-compiled ELF binaries via the clang/LLVM toolchain, usable on all platforms)
- major general improvements in the Metal, CUDA and Host-Compute backends
- support for unified binary archives (FUBAR), enabling easy support for pre-compiled binaries on all platforms
- argument buffers and array of buffers/images support on most backends
- indirect command pipelines for compute/graphics on Metal and Vulkan
- support for non-blocking and explicitly synchronized execution (wait/signal fences, various flags)
- extended sub-group support to Metal and Vulkan
- extended interop between backends: CUDA <-> Vulkan, Host-Compute <-> Metal/Vulkan
- implemented OpenXR and OpenVR VR support (rendering and controller/tracking support)
- tessellation shader support on Metal
- various compute algorithm improvements/enhancements (including sub-group algorithms)
- countless other minor improvements, fixes and features
Deprecation
Device backends:
- CUDA:
- CUDA 9.x - 11.x support is deprecated and will be removed in the next version
- sm_3x support is deprecated and will be removed in the next version
- Metal:
- Metal 2.x support is deprecated and will be removed in the next version
- GPUs not supporting Metal 3 (< A14) are deprecated and support will be removed in the next version
- OpenCL support is deprecated and may be removed at some point in the next version
- OpenGL support is deprecated and will be removed in the next version
OS:
- macOS/iOS: next version will require macOS 13.0 / iOS 16.0 or newer
- Windows: next version will require Windows 10 1809 or newer
Library:
- audio support will be removed
- networking support will be removed
- SDL2 will be replaced by SDL3 in the next version
Installation
This package contains the libfloor library and headers (-> lib and include), a clang/LLVM 14.0 compute/graphics toolchain (-> toolchain) and the offline compiler occ
(-> toolchain/bin) from floor_examples.
Linux / macOS:
- copy this folder to /opt (-> /opt/floor)
Windows:
- copy this folder to "C:/Program Files/" or %ProgramFiles% (-> "C:/Program Files/floor")
Requirements
OS:
- Windows: NT 6.1+ (Windows 7 or newer)
- macOS: 10.13+ (both x86-64 and ARM are supported)
- iOS: 12.0+
- Linux: any current x86-64 distribution
Backends:
- CUDA: sm_30/Kepler or newer GPU, and CUDA 9.0 or newer drivers
- Host-Compute: x86-64: Nehalem or newer (SSE 4.2 + popcount support), ARM: any 64-bit Apple platform
- Metal: macOS: macOS 10.13+ and a Metal 2.0 capable GPU, iOS: iOS 12.0+ and a Metal 2.1 capable GPU
- OpenCL: any OpenCL 1.2 CPU/GPU with support for either SPIR 1.2 or 2.0, or SPIR-V 1.0 support
- Vulkan: any NVIDIA or AMD GPU with support for Vulkan 1.3.231+
Notes
Please consult the included README for further information.