Skip to content

io7m-com/jcoronado

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jcoronado

Maven Central Maven Central (snapshot) Codecov Java Version

com.io7m.jcoronado

JVM Platform Status
OpenJDK (Temurin) Current Linux Build (OpenJDK (Temurin) Current, Linux)
OpenJDK (Temurin) LTS Linux Build (OpenJDK (Temurin) LTS, Linux)
OpenJDK (Temurin) Current Windows Build (OpenJDK (Temurin) Current, Windows)
OpenJDK (Temurin) LTS Windows Build (OpenJDK (Temurin) LTS, Windows)

Background

The jcoronado package provides a very thin layer over the Vulkan API that intends to provide some degree of memory and type safety. The intention of the package is to make Vulkan feel like a Java API, without sacrificing performance. Internally, the package uses the excellent LWJGL3 Vulkan bindings, and adds a thin layer of immutable types and interfaces.

Features

  • Type-safe Vulkan frontend
  • Strong separation of API and implementation to allow for switching to different bindings at compile-time
  • Extensive use of try-with-resources to prevent resource leaks
  • Strongly-typed interfaces with a heavy emphasis on immutable value types
  • Type-safe extension mechanism
  • Fully documented (JavaDoc)
  • Example code included
  • OSGi ready.
  • JPMS ready.
  • ISC license

Requirements

The jcoronado package currently targets Vulkan 1.3 and up. Some optional device features are required by the package.

synchronization2

The package requires the synchronization2 feature to be available and enabled. This is necessary to avoid having a lot of branching code paths around queue submission and render passes.

At the time of writing, according to the Vulkan hardware database, this feature is available on 99.82% of hardware.

timelineSemaphore

The package requires the timelineSemaphore feature to be available and enabled. This is necessary because timeline semaphores are a mandatory part of the API exposed by the package.

At the time of writing, according to the Vulkan hardware database, this feature is available on 99.88% of hardware.

Building

Install a Vulkan SDK. On Linux, there will be almost certainly be distribution packages available with names such as vulkan-validationlayers, vulkan-tools, etc. On Windows, install the LunarG SDK. On Windows, ensure that you have the right vendor drivers installed for your graphics card; if you don't do this, the library (and the test suite) will raise exceptions with messages such as "Missing vulkan-1.dll".

Then run:

$ mvn clean package

If this step fails, it's a bug. Please report it!