GeeXLab 0.60 released for Windows, Linux and ARM64 (*** UPDATED: v0.60.2 for Windows ***)

GeeXLab, scriptable prototyping engine for graphics programming

1 – Downloads



Downloads

 

2 – Release Notes

GeeXLab 0.60.0 is available for Windows 32/64-bit, Linux 64-bit (GLIBC 2.31) and ARM64 (GLIBC 2.36).

This new version of GeeXLab brings many small changes, bug fixes and improvements.

Updated libraries

The following libraries have been updated to their latest versions:

Core libraries:
Lua engine: version 5.4.7 (all platforms)
Dear ImGui: version 1.91.1 (all platforms)
SQLite engine: version 3.46.1 (all platforms)
curl: version 8.10.0 (windows)
LuaSocket: version 3.1.0 (all platforms)

Plugin libraries:
FFmpeg: version 7.0.2 (windows – other platforms: 7.0)
ASSIMP: version 5.4.2 (all platforms)
PhysX 5: version 5.4.0 (windows)
Python 3: version 3.12.6 (windows)

 
GeeXLab 0.60.0 is behind all the following applications: FurMark 2.4, GPU Shark 2.4, ASUS FurMark 2 ROG Edition 2.4, YAFFplayer 0.10.0, h4shg3n 0.5.5, MSI Kombustor 4.1.30 and MadView3D 0.5.0! That’s why this release took me a bit time to finalize.

 

arm64 / aarch64 and Raspberry Pi platforms

A word about arm64 / aarch64 platform. Now GeeXLab is available in two flavors for arm64: one pure arm64 version and one arm64 version for Raspberry Pi. Both versions have been compiled on Raspberry Pi OS Bookworm on a RPi 5 hardware. The pure arm64 version should work on any Linux for arm64 with GLIBC 2.36 or higher. I don’t have a non-RPi arm64 platform, so if you, dear reader, have such a platform, please try to launch GeeXLab and let me know if it works. The second version is still for arm64 but specifically for Raspberry Pi hardware / OS: this version has dependencies with the RGBA Led Matrix support and GPIO support using WiringPi.

A second word about arm64 versions. GLIBC 2.36 is now required because GeeXLab is now compiled on the Raspberry Pi 5 board with Raspberry Pi OS Bookworm (Debian 12). It’s now a pleasure to work with the RPi 5, this board is fast and everything run smoothly (except Xwayland that still does not work). The latest iteration of Raspberry Pi OS Bookworm (July 4th 2024) seems to work on all Raspberry Pi hardware (RPi3, RPi4 and RPi5) that’s why Debian 12 Bookworm is now my new OS for RPi development.

GeeXLab running on a arm64 platform (Raspberry Pi)

 

NVIDIA Vulkan driver on Windows

Let’s quickly talk about the gh_renderer.bind_render_window() added to GeeXLab 0.60.1. This function is called in the startup demo of GeeXLab (in the startup-demo/ folder in init.lua). The call to bind_render_window() deserves an explanation.

Without this call, the startup demo crashes if there are two NVIDIA graphics cards in the system. In my development machine, I have a GeForce RTX 2070 + GeForce GT 1030 drove by R561.09. If I remove the GT 1030, the demo works fine. With both cards, the demo crashes. This is an OpenGL demo that in middle of the init script, initializes Vulkan and reads Vulkan information (see InitVkInfo()). Any OpenGL call after InitVkInfo() leads to a crash (OpenGL function pointers seem correct but crash when we called them). After few hours of debugging, I had the feeling that the crash happened as if the OpenGL context was lost or not properly restored after Vulkan calls. That’s why I tested with bind_render_window() and… YES, that fixed the crash! The bind_render_window() function is a wrapper around wglMakeCurrent.

However, it’s not a victory. The crash is still there in 32-bit. With bind_render_window() the crash disappears in 64-bit but not in 32-bit.

Duplicated Vulkan devices

The other thing is that with 2 graphics cards, the NVIDIA Vulkan driver duplicates all Vulkan physical devices. Instead of detecting
two physical devices (the RTX 2070 and the GT 1030), the NVIDIA Vulkan driver returns:
– GPU 0: NVIDIA GeForce RTX 2070
– GPU 1: NVIDIA GeForce RTX 2070
– GPU 2: NVIDIA GeForce GT 1030
– GPU 3: NVIDIA GeForce GT 1030

There is probably a bug in the NV VK driver. I tried to uninstall it (I used the latest DDU 18.0.8 for that), reinstalled it, but no change, any Vulkan utility (GPU Shark 2, GPU Caps Viewer, Vulkan Capability Viewer, vkinfo, GLview) still displayed 4 devices…

Modern graphics programming is blood, sweat and pain!


Angry JeGX programming

 

3 – Changelog

This changelog is intended for all versions of GeeXLab.

Full changelog from beginning of time is available HERE.

Version 0.60.2.0 - 2024.10.03
* (2024.10.03) (lua) fixed a memory leak in gh_sqlite3.db_column_get_text() 
  and gh_sqlite3.db_column_get_text_v2().
! (2024.10.02) added return value to gh_utils.clipboard_set_text().
* (2024.10.02) (windows) fixed a bug in gh_utils.clipboard_set_text().

Version 0.60.1.0 - 2024.09.30
+ (2024.09.30) (windows / lua) added bind_render_window() to gh_renderer. 

Version 0.60.0.0 - 2024.09.27
+ (2024.09.22) added get_gpu_type() to gh_gml lib. This function returns the 
  type of the GPU: integrated or discrete.
+ (2024.09.22) added get_content_region_available() to gh_imgui.
* (2024.09.22) fixed bug in gh_imgui.begin_child_v2(). 
! (2024.09.17) updated curl support with latest version 8.10.0
! (2024.09.17) updated Python 3.12 plugin with latest Python 3.12.6.
* (2024.09.12) fixed a crash in gh_imgui.input_text() / input_text_multiline() if 
  initial_text is not valid.
+ (2024.09.11) added file_browser_is_opened() to to gh_imgui lib.
! (2024.09.10) updated imgui-filebrowser support (set of gh_imgui.file_browser_xxxxx() functions) 
  with latest version. 
* (2024.09.06) fixed a bug in load_textures_from_zip() and load_textures_from_zip_v2()
  of gh_model lib. The textures_dir parameter was not used.
! (2024.09.04) updated Dear ImGui support with latest version 1.91.1.
+ (2024.08.15) added text_link() and text_link_open_url() to gh_imgui lib.
! (2024.08.15) updated SQLite 3 engine with version 3.46.1.
! (2024.08.15) updated ASSIMP plugin with version 5.4.2.
! (2024.08.15) (Windows) updated GPU monitoring plugin with latest NVAPI R560.
! (2024.08.08) (Windows) updated FFmpeg plugin with latest FFmpeg 7.0.2 SDK.
! (2024.07.02) updated constants in {GeeXLab folder}/libs/lua/imgui.lua and {GeeXLab folder}/libs/python/imgui.py.
! (2024.07.02) (Windows) updated PhysX 5 plugin with latest PhysX 5.4.0 SDK.
! (2024.07.01) updated Lua engine with version 5.4.7.
! (2024.05.30) improved the management of Python 3 plugins (terminate and immediate mode execution on Windows).  
! (2024.05.27) (Windows) improved Intel GPU monitoring. The GPU monitoring is now loaded and initialized earlier in GeeXLab startup phase.
! (2024.05.14) (Windows) the menu bar is now disabled by default.
+ (2024.05.13) added init_v2() to gh_imgui with the possibility to disable ImGui ini file.
+ (2024.05.13) added new functions (v2) to gh_sqlite3 lib to deal with multiple SQLite statements.
! (2024.04.28) updated LuaSocket with version 3.1.0
+ (2024.04.28) gh_utils lib in Lua: added widechar versions (suffixed by _w) of sys_exec(), shell_exe(), shell_exe_v2(), process_create(), open_url() and trace().
+ (2024.04.28) Lua: added wprint(), widechar version of global function print().
* (2024.04.28) fixed a memory leak in gh_utils.clipboard_set_text().
* (2024.04.28) fixed a memory leak in gh_utils.buffer_read_string().




Leave a Comment

Your email address will not be published. Required fields are marked *