LWJGL 3.2.1
Changes since 3.2.0
:
Bindings
- Added CUDA bindings.
- Only the Driver API & NVRTC are supported in this release.
- Bindings to more CUDA Toolkit libraries will be added in the future.
- Added libdivide bindings.
- Added LLVM/Clang bindings.
- LLVM binaries are not included in this release. They must be separately downloaded or built for each platform.
- Added Meow hash bindings.
- Added Opus bindings.
- bgfx: Updated to API version 90 (up from 76)
- dyncall: Updated to 1.0 (up from 1.0-RC)
- glfw: Updated to pre-release 3.3.0 version (up from 3.3.0 pre-release):
- Added
GLFW_SCALE_TO_MONITOR
. - Added
glfwAttachWin32Window
. (experimental)
- Added
- jemalloc: Updated to pre-release 5.2.0 (up from 5.1.0)
- When available, it is again the default memory allocator on Windows.
- LibOVR: Updated to 1.30.0 (up from 1.26.0)
- lz4: Updated to 1.8.3 (up from 1.8.2)
- Nuklear: Updated to 4.00.2 (up from 4.00.1)
- OpenAL Soft: Updated to 1.19.1 (up from 1.18.2)
- Added
ALC_SOFT_device_clock
extension.
- Added
- OpenGL(ES): Added latest extensions:
NV_memory_attachment
NV_compute_shader_derivatives
NV_fragment_shader_barycentric
NV_mesh_shader
NV_representative_fragment_test
NV_scissor_exclusive
NV_shader_texture_footprint
NV_shading_rate_image
QCOM_shader_framebuffer_fetch_rate
QCOM_texture_foveated_subsampled_layout
- OpenVR: Updated to 1.1.3b (up from 1.0.16)
- rpmalloc: Updated to 1.3.2 (up from 1.3.1)
- tinyfiledialogs: Updated to 3.3.8 (up from 3.3.6)
- vma: Updated to 2.1.0 (up from 2.0.0)
- Vulkan: Updated to 1.1.95 (up from 1.0.82)
- Includes MoltenVK 1.0.27 (up from 1.0.16)
- Yoga: Updated to 1.10.0 (up from 1.9.0)
- Zstd: Updated to 1.3.7 (up from 1.3.5)
Improvements
- perf(core): Refactored LWJGL internals to make call stacks shallower.
- Makes it harder to cross Hotspot's default
MaxInlineLevel
threshold, which can disable important optimizations.
- Makes it harder to cross Hotspot's default
- perf(core): Added
memDuplicate
and refactoredmemSlice
with implementations that useUnsafe
to construct buffer instances, similar tomem-X-Buffer
.- Compared to the default JDK implementations, these methods are faster and enable Scalar Replacement via EA on Hotspot.
- The
memSlice
with offset method is also thread-safe now.
- perf(core): Implemented workarounds to make struct buffer iteration garbage free on Hotspot.
- perf(core): Re-tuned string codecs and
memCopy
/memSet
for Java versions 8 to 11. - perf(core): Added thread-local array cache to minimize allocations while decoding text.
- bgfx: Builds of bgfx tools (
geometryc
,shaderc
,texturec
,texturev
) are now available.- Use the file browser in the LWJGL website to download the executables.
- For example, the latest Windows x64 build of
shaderc
can be found undernightly/windows/x64/bgfx-tools/
.
- vma:
VmaVulkanFunctions.set(VkInstance, VkDevice)
will now use Vulkan 1.1 functions instead ofKHR_get_memory_requirements2
functions, if available. - Generator: The template DSL has been simplified considerably.
- Generator: Added the
LWJGL Template Extraction Tool
. It uses the new Clang bindings to parse native headers and extract LWJGL template declarations.- Extracts both declarations and associated documentation.
- Written in Kotlin. The source can be found in the
extract
module.
Fixes
- Core: Fixed text decoding from buffer with
.position() > 0
.- Affected all decoders on Java 9+, only UTF-16 on Java 8.
- Core: Fixed the bounds check in
memCopy
. (#414) - OpenAL: Fixed signature of
alListener3i
. (#427) - OpenVR: The
pGamePoseArray
parameter ofVRCompositor_WaitGetPoses
is now nullable. (#418) - OpenVR: Fixed returned type of
VRRenderModels_GetComponentStateForDevicePath
. - OpenVR: Renamed
VRInput_UncompressSkeletalActionData
toVRInput_DecompressSkeletalBoneData
. - OpenVR: Fixed wrong modifiers in
VRInput
functions:VRInput_GetDigitalActionData
VRInput_GetAnalogActionData
VRInput_GetPoseActionData
VRInput_GetSkeletalActionData
VRInput_GetOriginTrackedDeviceInfo
- vma: The native library is now initialized automatically.
- vma: Optional
KHR_get_memory_requirements2
addresses inVmaVulkanFunctions
are now nullable. - vma: Nullability of
VmaAllocationCreateInfo
&VmaAllocationInfo
members.
Breaking Changes
(B): binary incompatible change
(S): source incompatible change
- Core:
sun.misc.Unsafe
is now required, there is no JNI fallback. - vma: The
VmaVulkanFunctions.set
helper method now returnsVmaVulkanFunctions
. (B)
Known Issues
- Core: LWJGL 3.2.1 is incompatible with Java 12 or higher. (#491)
- This issue is fixed in LWJGL 3.2.3.