A2flo Floor Versions Save

A C++ Compute/Graphics Library and Toolchain enabling same-source CUDA/Host/Metal/OpenCL/Vulkan C++ programming and execution.

v0.3.0-f1

1 month ago

libfloor v0.3.0

Based on https://github.com/a2flo/floor/tree/v0.3.0 (commit 04e7aab842be9b6cd523ef9bdc37353b020e2763).

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.

v0.2.2-f1

7 years ago

libfloor v0.2.2

changes since v0.2.1

  • upgraded to a Clang/LLVM/libc++ 3.8.1 toolchain (the default now), the 3.5.2 toolchain still exists as a fallback
    • NOTE: spir-encoder and applecl-encoder for writing LLVM 3.2 bitcode, a LLVM 3.5 bitcode writer for Metal, and the spir-verifier have been directly integrated into LLVM 3.8.1 (those are no longer separate binaries)
  • added initial and still experimental SPIR-V/OpenCL support, 3.8.1 toolchain only (using SPIRV-LLVM/spirv-3.6.1, SPIR/spirv-1.0, SPIRV-Tools/v2016.1)
    • NOTE: new toolchain binaries: spirv-as, spirv-dis and spirv-val (from SPIRV-Tools), and llvm-spirv (from SPIRV-LLVM)
  • added initial Metal graphics support (it is possible to write basic vertex and fragment shaders -> floor_examples for example code)
  • extended image support (added mip-mapping support with explicit lod and gradient sampling + write at explicit lod, added sampling with integer offsets, added depth compare sampling)
  • numerous vector lib and const_math improvements (there now is a math:: namespace to select between run-time and compile-time math functions)
  • added initial sub-group support (CUDA and OpenCL with extension)
  • added compute_algorithm header with generic work-group reduce, sub-group reduce, and work-group inclusive/exclusive scan functions
  • improved compilation process: this will now directly compile to bitcode and no longer to human-readable LLVM IR, and all IR fixes are now applied in the compiler
  • added support for MinGW/MSYS2 on Windows (x64/64-bit only)
  • added initial C++17 support (disabled by default, enable with "./build.sh c++17", requires Clang 3.9+)
  • countless bug fixes, performance improvements and misc new things (-> git log for all of them)

deprecation notes

  • this will be the last release to support AppleCL/OpenCL on OS X (OpenCL has been superseded by Metal on OS X/iOS and is in an utterly broken state since 10.11)
  • this will be the last release to support OS X 10.9/10.10 (going forward, only OS X 10.11+ will be supported)
  • this might be the last release to support sm_20/sm_21 (Fermi) on CUDA

Install Instructions (Linux / OS X)

  • copy this folder to /opt (-> /opt/floor)

Install Instructions (Windows)

  • copy this folder to "C:/Program Files/" or %ProgramFiles% (-> "C:/Program Files/floor")

Notes (Linux / OS X / iOS)

  • this has been compiled with the default configuration, i.e. all optional dependencies are enabled
  • when using libfloor in a project, you will thus have to have these libraries installed (-> Requirements)
  • this library comes in the form of 64-bit dynamic (Linux / OS X) and static (Linux / OS X / iOS) libraries
    • release mode libraries: libfloor_static.a and libfloor.so/libfloor.dylib
    • debug mode libraries: libfloord_static.a and libfloord.so/libfloord.dylib
  • Linux binaries have been built on Arch Linux (with clang/llvm/libc++ 3.8.0 and gcc 6.1.1), you will probably need to build from source on other Linux distributions (-> build instructions and requirements)

Notes (Windows with MSVC)

  • this has been compiled with the default configuration, i.e. only compute-related parts and dependencies are enabled, this includes CUDA, OpenCL and Host-Compute support
  • when using libfloor in a project, you will thus have to have an OpenCL SDK installed, in addition to SDL2 (-> Requirements)
  • this library comes in the form of a 32-bit static library on Windows
    • release mode library: floor.lib
    • debug mode library: floord.lib
  • binaries have been built with VS 2015 and LLVM 3.8 (http://llvm.org/builds), any project using libfloor will have to do the same (LLVM-vs2014 platform)

Notes (Windows with MinGW/MSYS2)

  • this has been compiled with the default configuration, i.e. all optional dependencies are enabled
  • when using libfloor in a project, you will thus have to have these libraries installed (-> Requirements)
  • this library comes in the form of a 64-bit static library on Windows with MinGW/MSYS2
    • release mode library: libfloor_static.a
    • debug mode library: libfloord_static.a
  • libfloor binaries have been built with clang/llvm 3.8.0 and libstdc++ 5.4.0, toolchains have been built with gcc 5.4.0

please consult the included README.textile for further information

v0.2.1-f1

8 years ago

libfloor v0.2.1

Install Instructions (Linux / OS X)

  • copy this folder to /opt (-> /opt/floor)

Install Instructions (Windows)

  • copy this folder to "C:/Program Files/" or %ProgramFiles% (-> "C:/Program Files/floor")

Notes (Linux / OS X / iOS)

  • this has been compiled with the default configuration, i.e. all optional dependencies are enabled
  • when using libfloor in a project, you will thus have to have these libraries installed (-> Requirements)
  • this library comes in the form of 64-bit dynamic (Linux / OS X) and static (Linux / OS X / iOS) libraries
    • release mode libraries: libfloor_static.a and libfloor.so/libfloor.dylib
    • debug mode libraries: libfloord_static.a and libfloord.so/libfloord.dylib
  • Linux binaries have been built on Arch Linux (with clang/llvm/libc++ 3.7.0 and gcc 5.3.0), you will probably need to build from source on other Linux distributions (-> build instructions and requirements below)

Notes (Windows)

  • this has been compiled with the default configuration, i.e. only compute-related parts and dependencies are enabled, this includes CUDA, OpenCL and Host-Compute support
  • when using libfloor in a project, you will thus have to have an OpenCL SDK installed, in addition to SDL2 (-> Requirements)
  • this library comes in the form of a 32-bit static library on Windows
    • release mode library: floor.lib
    • debug mode library: floord.lib
  • as mentioned below, binaries have been built with VS 2015 and LLVM 3.8 (http://llvm.org/builds), any project using libfloor will have to do the same (LLVM-vs2014 platform)

please consult the included README.textile for further information

v0.2.0-f2

8 years ago

Flo's Open libRary v0.2.0

Install Instructions (Linux / OS X)

  • copy this folder to /opt (-> /opt/floor)

Install Instructions (Windows)

  • copy this folder to "C:/Program Files/" or %ProgramFiles% (-> "C:/Program Files/floor")

Notes (Linux / OS X)

  • this has been compiled with the default configuration, i.e. all optional dependencies are enabled
  • when using floor in a project, you will thus have to have these libraries installed (-> README Requirements)
  • this library comes in the form of 64-bit dynamic (Linux / OS X) and static (Linux / OS X) libraries
    • release mode libraries: libfloor_static.a and libfloor.so/libfloor.dylib
    • debug mode libraries: libfloord_static.a and libfloord.so/libfloord.dylib
  • Linux binaries have been built on Arch Linux (with clang/llvm/libc++ 3.7.0 and gcc 5.2.0), you will probably need to build from source on other Linux distributions (-> README build instructions and requirements)

Notes (Windows)

  • this has been compiled with the default configuration, i.e. only compute-related parts and dependencies are enabled, this includes CUDA, OpenCL and Host-Compute support
  • when using floor in a project, you will thus have to have an OpenCL SDK installed, in addition to SDL2 (-> README Requirements)
  • this library comes in the form of a 32-bit static library on Windows
    • release mode library: floor.lib
    • debug mode library: floord.lib
  • as mentioned below, binaries have been built with VS 2015 and LLVM 3.8 (http://llvm.org/builds), any project using floor will have to do the same (LLVM-vs2014 platform)

please consult the included README.textile for further information

v0.2.0-f1

8 years ago

Flo's Open libRary v0.2.0

Install Instructions (Linux / OS X)

  • copy this folder to /opt (-> /opt/floor)

Install Instructions (Windows)

  • copy this folder to "C:/Program Files/" or %ProgramFiles% (-> "C:/Program Files/floor")

Notes (Linux / OS X / iOS)

  • this has been compiled with the default configuration, i.e. all optional dependencies are enabled
  • when using floor in a project, you will thus have to have these libraries installed (-> Requirements)
  • this library comes in the form of 64-bit dynamic (Linux / OS X) and static (Linux / OS X / iOS) libraries
    • release mode libraries: libfloor_static.a and libfloor.so/libfloor.dylib
    • debug mode libraries: libfloord_static.a and libfloord.so/libfloord.dylib
  • Linux binaries have been built on Arch Linux (with clang/llvm/libc++ 3.7.0 and gcc 5.2.0), you will probably need to build from source on other Linux distributions (-> build instructions and requirements below)

Notes (Windows)

  • this has been compiled with the default configuration, i.e. only compute-related parts and dependencies are enabled, this includes CUDA, OpenCL and Host-Compute support
  • when using floor in a project, you will thus have to have an OpenCL SDK installed, in addition to SDL2 (-> Requirements)
  • this library comes in the form of a 32-bit static library on Windows
    • release mode library: floor.lib
    • debug mode library: floord.lib
  • as mentioned below, binaries have been built with VS 2015 and LLVM 3.8 (http://llvm.org/builds), any project using floor will have to do the same (LLVM-vs2014 platform)

please consult the included README.textile for further information