Jogamp Versioning and Releases and SW Tracking Report Feature Objectives Overview: Difference between pages

From JogampWiki
(Difference between pages)
Jump to navigation Jump to search
 
 
Line 1: Line 1:
__TOC__
This list exposes building blocks
for potential use and business case scenarios
using Java & JogAmp on Desktop and Embedded Devices.


== Semantic Version Numbers ==
Notably [[#Graph|Graph & Graph UI]] as well as [[#NEWT_+_Wayland|Wayland]] & [[#Vulkan|Vulkan]] support could be of interest here?


Given a version number MAJOR.MINOR.PATCH, increment the:
Also see [[Completed Features Objectives]] ...


* MAJOR version indicates major incompatible API changes,
= Graph =
* MINOR version indicates minor incompatible API changes, and
[https://jausoft.com/blog/tag/graph_type_rendering/ Graph/GraphUI Progress Blog Entries]
* PATCH version indicates backwards-compatible bug fixes or added backwards-compatible functionality, i.e. these versions are binary compatible and a drop-in replacement.


Above semantics describe binary compatibility,
== Desired Work Items ==
i.e. whether a new version can be used without recompilation (PATCH increment only).


Above semantics differ from [http://semver.org/ Semantic Versioning] since our MINOR
This is an ad-hoc list of desired features and fixes,
change allows minor incompatible API changes.
which shall result in proper bug-reports soon.


An example of a MAJOR incompatible API increment is JOGL 1.y.z -> 2.y.z,
After having reached [https://jausoft.com/blog/2024/01/21/graphui-frustum-culling-clipping-modelview-space/ UI usability with widgets and clipping],
where we thoroughly change the OO model, packaging, implementation or overall semantics.
the following items are becoming more interesting


Upgrading to a MINOR incompatible API increment of JogAmp
* Fix general issues with current implementation and API, if any
shall assure users that the model has not changed and the differences are indeed minor.
* Fix Graph rendering bugs (Tessellation)
** [https://jausoft.com/blog/2024/02/13/fixing-jogamps-graph-delaunay-tessellation-of-complex-non-convex-shapes/ First round done]
* Use of super-sized triangles to render Graph lines & curves to allow
** Using a one-pass smooth AA Graph renderer to save resources otherwise used in our pass-2 FBO supersampling renderer
** Generate outlines, i.e. outlined fonts
** Generate special effects like glowing/pumping outlines indicating selection etc
* Allow passing or better attaching per-vertex color to Graph Outline (API)
* <s>Add subtitles in MediaPlayer GraphUI widget</s> ''([https://jausoft.com/blog/2024/02/07/graphui-mediaplayer-feature-complete/ done])''
* Add video encoding in our FFmpeg binding, i.e. an FFMPEGMediaRecorder (Encoding + Multiplexing)


Hence a PATCH increment not only allows bugfixes but also  
Further more, if so desired, a C++ implementation of our Graph + GraphUI framework
additional functionality, both backwards-compatible.
may also be of interest.


Note that manual test results showed that <i>none</i> of our 2.1 PATCH incrementing releases
In case any company or organization is interested and likes to support
were satisfying above semantics and hence incompatibilities could appear.
this work and may also like to receive support in adopting this framework,
While this might be unlikely, the tests exposed at least removed protected fields or methods
please contact [[Maintainer_and_Contacts#Commercial_Support|Göthel Software e.K.]]
at some uncommon places and hence compatibility was broken.


From version 2.2.0 on, we incorporate [https://github.com/jeluard/semantic-versioning semver]
== OpenJDK Compatibility / Integration ==
in our JogAmp junit tests to guarantee automated validation and proper version increments.


See [{{SERVER}}/bugzilla/show_bug.cgi?id=1008 Bug 1008].
Objectives should be to allow seamless integration into
OpenJDK's deployment and JVM launch methods.


== Releases ==
A dual JAR file to be used with and without modules is desired,
however it seems that certain JAR options are not available with this
configuration if our classes are not build as modules itself.


* [[Release 2.5.0|2.5.0]], [[Release 2.4.0|2.4.0]]
An optional [https://jogamp.org/bugzilla/show_bug.cgi?id=1505#c0 JVM Launch Pad (JLP)] might be helpful,
* [[Release 2.3.2|2.3.2]], [[Release 2.3.1|2.3.1]], [[Release 2.3.0|2.3.0]]
even though it instructs further complexity and is not helping
* [[Release 2.2.4|2.2.4]], [[Release 2.2.3|2.2.3]], [[Release 2.2.2|2.2.2]], [[Release 2.2.1|2.2.1]], [[Release 2.2.0|2.2.0]]
with a vanilla OpenJDK deployment.
* [[Release 2.1.5|2.1.5]], [[Release 2.1.4|2.1.4]], [[Release 2.1.3|2.1.3]], [[Release 2.1.2|2.1.2]], [[Release 2.1.1|2.1.1]], [[Release 2.1.0|2.1.0]]
* [[Release 2.0.2|2.0.2]]
** [[Release 2.0.2-rc12|2.0.2-rc12]],[[Release 2.0-rc11|2.0-rc11]],[[Release 2.0-rc10|2.0-rc10]], [[Release 2.0-rc9|2.0-rc9]], [[Release 2.0-rc8|2.0-rc8]], [[Release 2.0-rc7|2.0-rc7]], [[Release 2.0-rc6|2.0-rc6]], [[Release 2.0-rc5|2.0-rc5]], [[Release 2.0-rc4|2.0-rc4]], [[Release 2.0-rc3|2.0-rc3]], [[Release 2.0-rc2|2.0-rc2]], [[Release 2.0-rc1|2.0-rc1]]


[[Android Packages]]
=== OpenJDK >= 11 ===


=== Current Aliases ===
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1404 Bug 1404]


* [http://jogamp.org/deployment/jogamp-current/ jogamp-current] -> [http://jogamp.org/deployment/v2.5.0/ v2.5.0]
'''JVM Commandline Parameter'''
* [http://jogamp.org/deployment/jogamp-next/ jogamp-next] -> [http://jogamp.org/deployment/v2.5.0/ v2.5.0]
* [http://jogamp.org/deployment/webstart/ webstart] -> [http://jogamp.org/deployment/v2.5.0/ v2.5.0]
* [http://jogamp.org/deployment/webstart-next/ webstart-next] -> [http://jogamp.org/deployment/v2.5.0/ v2.5.0]


== Release Classification ==
Current used 'add-opens' in my JogAmp test scripts for Java >= 11,
covering all AWT utilization including background erase is:


Releases follow the above mentioned [[#Version_Classification|versioning]] scheme.
<pre>
--add-opens java.desktop/sun.awt=ALL-UNNAMED
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED
--add-opens java.desktop/sun.java2d=ALL-UNNAMED
</pre>
 
=== OpenJDK >= 2x ===
 
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1505 Bug 1505]
 
'''JVM Commandline Parameter'''
 
Current used 'add-opens' in my JogAmp test scripts for Java >= 23,
covering all AWT utilization including background erase is:
 
<pre>
--add-opens java.desktop/sun.awt=ALL-UNNAMED
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED
--add-opens java.desktop/sun.java2d=ALL-UNNAMED
--TO_BE_DETERMINED
</pre>
 
== Graph UI ==
 
[https://jausoft.com/blog/2023/02/22/reimagine-java-on-desktop-bare-metal-devices/ ''Graph UI'' will enable an immersive UI within the 3D scene] on the desktop, mobile and on bare-metal embedded systems without a windowing system.
 
Graph UI utilizes [https://jausoft.com/blog/2011/10/05/jogljogamp-red-square-moscow-nurbs-graphicon2011/ Resolution Independent NURBS Curves Rendering using Programmable Graphics Pipeline], i.e. rendering curves directly on the GPU, resolution independent [ [https://jogamp.org/doc/gpunurbs2011/p70-santina.pdf paper], [https://jogamp.org/doc/gpunurbs2011/graphicon2011-slides.pdf slides] ].
 
This method allows us to have an ultimate fast font and UI rendering engine, suitable for all devices and applications. No CPU based curve nor font pre-rendering (matching a target resolution) is required.
 
Think of an integrated QT or OpenJFX in your 2D/3D application
working on desktop and embedded devices even w/o any windowing system on top
of a plain console [{{SERVER}}/bugzilla/show_bug.cgi?id=1156  DRM/GBM as support by JOGL(EGL) and NEWT]
as demonstrated [https://ict.zafena.se/improved-graphical-information-technology/ by Xerxes on a Raspberry Pi4].
 
[https://jausoft.com/blog/2023/02/22/reimagine-java-on-desktop-bare-metal-devices/ Reimagine Java on Desktop & Bare-Metal Devices]
demonstrates the updated Graph Curve Rendering and UI, while [https://jausoft.com/blog/2024/01/21/graphui-frustum-culling-clipping-modelview-space/ this update shows clipping and widgets]. [https://jausoft.com/blog/tag/graph_type_rendering/ Further updates will be posted here...].


The following list is ordered from <i>stable and oldest</i> to <i>experimental and newest</i>.
Notably the ''Graph Curve Rendering'' is almost feature complete, as well as our own user input including gesture detection within NEWT.


=== [{{SERVER}}/deployment/jogamp-current/ Signed Release] ===
;Parent Main Node
* This is our current signed release, IE a manual promoted and signed autobuild.
: [{{SERVER}}/bugzilla/showdependencytree.cgi?id=803&hide_resolved=0 Dependency Tree]
* It is suitable for JNLP and Applets (with or without JNLP).
: [{{SERVER}}/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=IN_PROGRESS&bug_status=RESOLVED&bug_status=VERIFIED&columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cversion%2Cshort_desc%2Cchangeddate&component=core&component=Plugin&list_id=2265&product=GraphUI&query_format=advanced&resolution=---&resolution=FIXED&resolution=INVALID&resolution=WONTFIX&resolution=DUPLICATE&resolution=WORKSFORME&resolution=MOVED All GraphUI]
* This is the <b>most stable and recommended</b> version.
* [{{SERVER}}/deployment/jogamp-current/archive/ Archive folder] containing [[#Release_and_Archived_Files|platform ZIP files]] for manual installation.
* [[Downloading and installing JOGL#Downloading the latest aggregated autobuild|this section]]
* See instructions for  [[Downloading and installing JOGL#Downloading the latest stable version|downloading and installing]].


=== [{{SERVER}}/deployment/jogamp-next/ Signed Release Candidate] ===
;Open Items ''graphui''
* This is our signed release candidate, IE a manual promoted and signed autobuild.
<bugzilla>
* It is suitable for JNLP and Applets (with or without JNLP).
    {
* [{{SERVER}}/deployment/jogamp-next/archive/ Platform ZIP archive's URL] for manual installation.
        "status":["IN_PROGRESS","CONFIRMED", "UNCONFIRMED"],
* [{{SERVER}}/deployment/jogamp-next/archive/ Archive folder] containing [[#Release_and_Archived_Files|platform ZIP files]] for manual installation.
        "product":"graphui",
* See instructions for  [[Downloading and installing JOGL#Downloading the latest stable version|downloading and installing]].
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>


=== [{{SERVER}}/deployment/v2.0-rc3/ Signed Release Specific Version] ===
;Completed Items ''graphui''
* This is a specific signed release, IE a manual promoted autobuild.
<bugzilla>
* It is suitable for JNLP and Applets (with or without JNLP).
    {
* [{{SERVER}}/deployment/v2.0-rc3/archive/ Archive folder] containing [[#Release_and_Archived_Files|platform ZIP files]] for manual installation.
        "status":["RESOLVED","VERIFIED"],
* See instructions for  [[Downloading and installing JOGL#Downloading the latest stable version|downloading and installing]].
        "product":"graphui",
        "include_fields":"id,version,product,component,status,resolution,summary"
    }
</bugzilla>


===  [{{SERVER}}/deployment/archive/master/?C=M;O=D Latest Aggregated Autobuild] ===
== Jogl / Graph ==
* This is our latest aggregated autobuild, which we seem fit for broad testing and submitting a [[Jogl FAQ#Bugreports & Testing|bugreport]].
* It is not signed and hence not suitable for JNLP and Applets.
* See instructions for  [[Downloading and installing JOGL#Downloading the latest aggregated autobuild|downloading and installing]].


=== [{{SERVER}}/deployment/autobuilds/ Autobuilds] ===
[{{SERVER}}/bugzilla/showdependencytree.cgi?id=1064&hide_resolved=0 Dependency Tree Graph Font Issues]
What others call <i>nightlies</i>, we call it autobuild.
Autobuilds are provided by our [{{SERVER}}/chuck/job/jogl/ Jenkins build server]:
* For [{{SERVER}}/chuck/job/jogl/ each project build reports] are available:
** [{{SERVER}}/chuck/job/jogl/lastSuccessfulBuild/ Last Successful JOGL Build]
** [{{SERVER}}/chuck/job/jogl/476/ JOGL Build 476]
* They are [{{SERVER}}/chuck/job/jogl/476/changes#detail0 triggered by git commits]
* Here is a [{{SERVER}}/chuck/job/jogl/changes list of all JOGL changes].
* These builds are also tested on all supported platforms automatically with junit, see a [{{SERVER}}/chuck/job/jogl/label=win7-x86_64-nvida/lastCompletedBuild/testReport/ complete test report from one platform].
* [{{SERVER}}/deployment/autobuilds/master/jogl-b485-2011-09-20_08-30-36/ Autobuild URL] containing [[#Autobuild_Files|platform ZIP files]] for manual installation.


=== [{{SERVER}}/deployment/archive/ Archived builds] ===
[{{SERVER}}/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=IN_PROGRESS&bug_status=RESOLVED&bug_status=VERIFIED&columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cversion%2Cshort_desc%2Cchangeddate&component=graph&list_id=2264&product=Jogl&query_format=advanced&resolution=---&resolution=FIXED&resolution=INVALID&resolution=WONTFIX&resolution=DUPLICATE&resolution=WORKSFORME&resolution=MOVED All Jogl Graph]
* Contains archived builds and releases.
* May be signed.
* [{{SERVER}}/deployment/archive/rc/gluegen_28-joal_17-jogl_41-jocl_25/archive/ archive URL] containing [[#Release_and_Archived_Files|platform ZIP files]] for manual installation.


== Version Classification ==
;Open Items ''Jogl / graph''
<bugzilla>
    {
        "status":["IN_PROGRESS","CONFIRMED", "UNCONFIRMED"],
        "product":"jogl",
        "component":"graph",
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>


=== Version Fingerprint ===
;Completed Items ''Jogl / graph''
<bugzilla>
    {
        "status":["RESOLVED","VERIFIED"],
        "product":"jogl",
        "component":"graph",
        "include_fields":"id,version,product,component,status,resolution,summary"
    }
</bugzilla>


You can get the [[Jogl FAQ#Get the Source Code|get the source code]] via git,
= WebAssembly (wasm) Target Platform =
hence all references of a JogAmp module version boils down to:


* module base version
== Overview ==
* git commit sha1 hash
See [https://jogamp.org/bugzilla//show_bug.cgi?id=1506 Bug 1506] describing this feature.
* build number
* module OS and ARCH


We construct a full version string as follows:
Since Java Applets are not more supported within browser or by OpenJDK for years,
<pre>
it may seems feasible to evaluate the WebAssembly target running within e.g. web browser nowadays.
  <module>-<base_version>-b<build_number>-<yyyymmdd>
 
</pre>
An initial evaluation on small C++ projects using the emscripten front-end for LLVM's clang++ to wasm compiler, which supports many ported system libraries like SDL, OpenGL, .. has been undertaken successfully with variable results.
* [https://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2 C++/wasm evaluation]
* [https://emscripten.org/ emscripten]
* [https://webassembly.org/ WebAssembly]


=== artifact.properties ===
== Java Support ==
Java support for the WebAssembly target are claimed to be supported by
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm]
** with the help of emscripten
** [https://www.graalvm.org/22.0/reference-manual/native-image/JNI/ GraalVM + JNI]
* [https://github.com/i-net-software/JWebAssembly JWebAssembly]
* [https://github.com/konsoletyper/teavm TeaVM]


The version fingerprint is available in the
== Initial C++/wasm Evaluation ==
[{{SERVER}}/deployment/autobuilds/master/jogl-b485-2011-09-20_08-30-36/artifact.properties artifact.properties] file:
For once, the wasm target is comparable to Java bytecode but the virtual machine might not be as performant, efficient or flexible. The lack of hassle free native threads and performance may remind one of the first JVM steps. The wasm code runs within a virtual machine like the JVM and additionally lacks of native binding capabilities, besides aforementioned limitations.
<pre>
gluegen.build.branch=origin/master
gluegen.build.commit=3fec08a69de571cf2939e6028487faea8a23ccaa
gluegen.build.id=2013-11-01_05-57-23
gluegen.build.number=741
gluegen.build.version=2.1.2
jogl.build.branch=origin/master
jogl.build.commit=3ed74abaddb90cb537897b9928e923be50f7f99f
jogl.build.id=2013-11-01_19-08-47
jogl.build.number=1135
jogl.build.version=2.1.2
</pre>


We deploy artifacts.properties in the online [{{SERVER}}/deployment/autobuilds/master/jogl-b485-2011-09-20_08-30-36/ build folder]
Some limitations may be overcome, others are likely by design as it usually runs on the same browser virtual machine as the JavaScript companion.
and within the platform ZIP archives.


=== JAR Manifest ===
So far the only question arises why reinventing the wheel once again? Dropping utilization of a well working JVM for the web had not technical reasoning.


The version fingerprint is also included within each JAR Manifest file,
GraalVM seems to support the wasm target, hence one might want to evaluate this Java target platform as well before recoding the whole application.
where the Specification-Version equals the module base version
Opening the door for any language to be compiled to a platform independent intermediate representation (IR) like Java’s bytecode suitable for a versatile runtime environment including its virtual machine is surely still desirable.
and the Implementation-Version equals the above mentioned full version string
Hopefully this technology will mature and be maintained for the years to come.
<pre>
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.7.0_45-b18 (Oracle Corporation)
Application-Name: Java Bindings for OpenGL
Specification-Title: Java Bindings for OpenGL API Specification
Specification-Version: 2.1
Specification-Vendor: JogAmp Community
Implementation-Title: Java Bindings for OpenGL Runtime Environment
Implementation-Version: 2.1.2
Implementation-Build: 2.1-b1135-20131101
Implementation-Branch: origin/master
Implementation-Commit: 3ed74abaddb90cb537897b9928e923be50f7f99f
Implementation-Vendor: JogAmp Community
Implementation-URL: http://jogamp.org/
Extension-Name: javax.media.opengl
Implementation-Vendor-Id: com.jogamp
Trusted-Library: true
Permissions: all-permissions
Codebase: *.jogamp.org
</pre>


Each module has also a base version, like major and minor, ie 2.0,
which we may change to emphasize major feature and API changes.


==== Runtime Version Check ====
= NEWT =


Each module has a build in [http://jogamp.org/deployment/jogamp-next/javadoc/gluegen/javadoc/com/jogamp/common/util/JogampVersion.html JogampVersion] specialization with a static <code>getInstance()</code> method to access the singleton instance,
* [{{SERVER}}/bugzilla/showdependencytree.cgi?id=807&hide_resolved=0 Dependency Tree NEWT Input Devices]
eg. for the [http://jogamp.org/deployment/jogamp-next/javadoc/gluegen/javadoc/com/jogamp/common/GlueGenVersion.html#getInstance%28%29 GlueGenVersion] or [http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/JoglVersion.html#getInstance%28%29 JoglVersion]. You may utilize the version information from within your application in a programmatic manner. For the latter you may find the [http://jogamp.org/deployment/jogamp-next/javadoc/gluegen/javadoc/com/jogamp/common/os/Platform.html Platform] information useful as well.
* [{{SERVER}}/bugzilla/showdependencytree.cgi?id=814&hide_resolved=0 Dependency Tree NEWT Pointer Event]


Each module's [http://jogamp.org/deployment/jogamp-next/javadoc/gluegen/javadoc/com/jogamp/common/util/JogampVersion.html JogampVersion] specialization also contain a static main entry allowing you to retrieve the version information at runtime as described below.
<bugzilla>
    {
        "product":["newt","jinput"],
        "version":["2.5.0","3.0.0","tbd"],
        "cf_type":"FEATURE",
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>


When invoked, ie via JOGL's platform ZIP file:
= NEWT + Wayland =
* sh etc/test.sh (Unixoid), or
Currently NEWT supports the X11/Xorg windowing server on Unix alike platforms.
* etc\test.bat (Windows)
you will see the full dump of the runtime platform and the above mentioned version footprint.


<pre>
It might be desired to add direct support to Wayland, as we already added support for
-----------------------------------------------------------------------------------------------------
[https://jogamp.org/bugzilla/show_bug.cgi?id=1156 bare metal devices w/o a windowing system via the Linux DRM/GBM console mode]
Platform: LINUX / Linux 3.11.6-x64-k10-nlb-jau01 (3.11.6), amd64 (arch), GENERIC_ABI, 8 cores
throughout JOGL + NEWT.
MachineDescription: runtimeValidated true, littleEndian true, 32Bit false, primitive size / alignment:
  int8    1 / 1, int16  2 / 2
  int    4 / 4, long    8 / 8
  int32  4 / 4, int64  8 / 8
  float  4 / 4, double  8 / 8, ldouble 16 / 16
  pointer 8 / 8, page    4096
Platform: Java Version: 1.7.0_45 (1.7.0u45), VM: Java HotSpot(TM) 64-Bit Server VM, Runtime: Java(TM) SE Runtime Environment
Platform: Java Vendor: Oracle Corporation, http://java.oracle.com/, JavaSE: true, Java6: true, AWT enabled: true
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
Package: com.jogamp.common
Extension Name: com.jogamp.common
Specification Title: GlueGen Java Bindings Generator
Specification Vendor: JogAmp Community
Specification Version: 2.1
Implementation Title: GlueGen Run-Time
Implementation Vendor: JogAmp Community
Implementation Vendor ID: com.jogamp
Implementation URL: http://jogamp.org/
Implementation Version: 2.1.2
Implementation Build: 2.1-b741-20131101
Implementation Branch: origin/master
Implementation Commit: 3fec08a69de571cf2939e6028487faea8a23ccaa
-----------------------------------------------------------------------------------------------------
Package: javax.media.opengl
Extension Name: javax.media.opengl
Specification Title: Java Bindings for OpenGL API Specification
Specification Vendor: JogAmp Community
Specification Version: 2.1
Implementation Title: Java Bindings for OpenGL Runtime Environment
Implementation Vendor: JogAmp Community
Implementation Vendor ID: com.jogamp
Implementation URL: http://jogamp.org/
Implementation Version: 2.1.2
Implementation Build: 2.1-b1135-20131101
Implementation Branch: origin/master
Implementation Commit: 3ed74abaddb90cb537897b9928e923be50f7f99f
-----------------------------------------------------------------------------------------------------


GLProfiles on device X11GraphicsDevice[type .x11, connection :0, unitID 0, handle 0x0, owner false, ResourceToolkitLock[obj 0x207fd4ec, isOwner false, <2873e29f, 50234978>[count 0, qsz 0, owner <NULL>]]]
= Vulkan =
    Natives
        GL4bc  true [4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware)]
        GL4 true [4.4 (Core profile, arb, ES2 compat, ES3 compat, FBO, hardware)]
        GLES3  false
        GL3bc  true [4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware)]
        GL3 true [4.4 (Core profile, arb, ES2 compat, ES3 compat, FBO, hardware)]
        GL2 true [4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware)]
        GLES2  true [2.0 (ES profile, ES2 compat, FBO, software)]
        GLES1  true [1.0 (ES profile, FP32 compat, software)]
        Count  7 / 8
    Common
        GL4ES3 true
        GL2GL3  true
        GL2ES2  true
        GL2ES1  true
    Mappings
        GL2ES2  GLProfile[GL2ES2/GL4.hw]
        GL2ES1  GLProfile[GL2ES1/GL4bc.hw]
        GL2 GLProfile[GL2/GL4bc.hw]
        GL4 GLProfile[GL4/GL4.hw]
        GL3 GLProfile[GL3/GL4.hw]
        GL4bc  GLProfile[GL4bc/GL4bc.hw]
        GLES2  GLProfile[GLES2/GLES2.sw]
        GLES1  GLProfile[GLES1/GLES1.sw]
        GL4ES3  GLProfile[GL4ES3/GL4.hw]
        GL2GL3  GLProfile[GL2GL3/GL4bc.hw]
        GL3bc  GLProfile[GL3bc/GL4bc.hw]
        default GLProfile[GL4bc/GL4bc.hw]
        Count  11 / 12


<bugzilla>
    {
        "component":"vulkan",
        "cf_type":"FEATURE",
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>


Desktop Capabilities:
= Video Encoding/Decoding & Player =
    GLCaps[glx vid 0x21, fbc 0x105: rgba 8/8/8/0, opaque, accum-rgba 16/16/16/16, dp/st/ms 24/8/0, dbl, mono  , hw, GLProfile[GL4bc/GL4bc.hw], on-scr[fbo, pbuffer, bitmap]]
    .....


Requesting: GLCaps[rgba 8/8/8/0, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/0, dbl, mono  , hw, GLProfile[GL4bc/GL4bc.hw], on-scr[.]]
Across our releases, we supported video encoding and decoding (with a player)
-----------------------------------------------------------------------------------------------------
based on either FFmpeg or Android's library as [https://youtu.be/4gWStKCioi8?t=132 shown in this clip at 2:12 min mark].
X11GraphicsDevice[type .x11, connection :0]:
    Natives
        GL4bc  true [4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware)]
        GL4 true [4.4 (Core profile, arb, ES2 compat, ES3 compat, FBO, hardware)]
        GLES3  false
        GL3bc  true [4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware)]
        GL3 true [4.4 (Core profile, arb, ES2 compat, ES3 compat, FBO, hardware)]
        GL2 true [4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware)]
        GLES2  true [2.0 (ES profile, ES2 compat, FBO, software)]
        GLES1  true [1.0 (ES profile, FP32 compat, software)]
        Count  7 / 8
    Common
        GL4ES3  true
        GL2GL3  true
        GL2ES2  true
        GL2ES1  true
    Mappings
        GL2ES2  GLProfile[GL2ES2/GL4.hw]
        GL2ES1  GLProfile[GL2ES1/GL4bc.hw]
        GL2 GLProfile[GL2/GL4bc.hw]
        GL4 GLProfile[GL4/GL4.hw]
        GL3 GLProfile[GL3/GL4.hw]
        GL4bc  GLProfile[GL4bc/GL4bc.hw]
        GLES2  GLProfile[GLES2/GLES2.sw]
        GLES1  GLProfile[GLES1/GLES1.sw]
        GL4ES3  GLProfile[GL4ES3/GL4.hw]
        GL2GL3  GLProfile[GL2GL3/GL4bc.hw]
        GL3bc  GLProfile[GL3bc/GL4bc.hw]
        default GLProfile[GL4bc/GL4bc.hw]
        Count  11 / 12


GL Profile    GLProfile[GL4bc/GL4bc.hw]
Goal would be to
GL Version    4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware) - 4.4.0 NVIDIA 331.13 [GL 4.4.0, vendor 331.13.0 (NVIDIA 331.13)]
* Update general ffmpeg video decoding support
Quirks        []
* Enhance ffmpeg video encoding support
Impl. class    jogamp.opengl.gl4.GL4bcImpl
* Potentially add better control about video-frame to framebuffer control for editing software
GL_VENDOR      NVIDIA Corporation
GL_RENDERER    GeForce GTX 660/PCIe/SSE2
GL_VERSION    4.4.0 NVIDIA 331.13
GLSL          true, has-compiler-func: true, version: 4.40 NVIDIA via Cg compiler / 4.40.0
GL FBO: basic true, full true
GL_EXTENSIONS  292
GLX_EXTENSIONS 28
-----------------------------------------------------------------------------------------------------
Requested: GLCaps[rgba 8/8/8/0, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/0, dbl, mono  , hw, GLProfile[GL4bc/GL4bc.hw], on-scr[.]]
Chosen  : GLCaps[glx vid 0x27, fbc 0x10d: rgba 8/8/8/0, opaque, accum-rgba 16/16/16/16, dp/st/ms 24/0/0, dbl, mono  , hw, GLProfile[GL4bc/GL4bc.hw], on-scr[.]]
GL impl. class jogamp.opengl.gl4.GL4bcImpl
GL4ES3 retrieved, impl. class jogamp.opengl.gl4.GL4bcImpl
GL3 retrieved, impl. class jogamp.opengl.gl4.GL4bcImpl


</pre>
See [https://jogamp.org/bugzilla//buglist.cgi?bug_status=__open__&component=video&list_id=3053&product=Jogl related buglist]
The dump is hold in the file <pre>test.log</pre> which you should send to us in case of a bugreport.


===== Runtime Debug Logs =====
<bugzilla>
    {
        "component":"video",
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>


You may also like to send us the debug version:
= iOS Enhancements =
* sh etc/test_dbg.sh (Unixoid), or
* etc\test_dbg.bat (Windows)
which produces the file <pre>test_dbg.log</pre> and should be send to us to complete the bugreport as well.


==== Retrieve Release Version Tag from GIT Hash ====
Early iOS support has been demonstrated in 2019
* [https://jausoft.com/blog/2019/06/17/jogamp-ios-arm64-bring-up/ iOS Arm64 bring-up]
* [https://jausoft.com/blog/2019/06/23/jogamp-ios-arm64-port-first-visuals/ iOS Arm64 Port: First Visuals]
* [https://jausoft.com/blog/2019/07/08/jogamp-ios-arm64-port-newt/ iOS Arm64 Port: NEWT]


git-show-tags-of-commit.sh
Enhancing this port would allow to use JogAmp in a similar fashion as on Android,
<pre>
but using an OpenJDK iOS build.
#! /bin/sh


sha1=$1
= [[SCC Overview|Source Certification Contract (SCC)]] =
shift


git show-ref --tags -d | grep ^$sha1 | sed -e 's,.* refs/tags/,,' -e 's/\^{}//'
[{{SERVER}}/bugzilla/showdependencytree.cgi?id=1368&hide_resolved=0 Dependency Tree]
</pre>


JOGL example:
[{{SERVER}}/bugzilla/show_bug.cgi?id=1368 Root Parent Entry]
<pre>
> git-show-tags-of-commit.sh 9ff0b0dafea2a03a915c97eb1513c39c27b6a7ae
v2.0-rc8
</pre>


GlueGen example:
<bugzilla>
<pre>
    {
> git-show-tags-of-commit.sh 4ce601b38ca8418eddbe8cca4d531e6161fae26b
        "id":["1368", "1369"],
v2.0-rc7
        "include_fields":"id,version,product,component,priority,severity,status,summary"
v2.0-rc8
    }
</pre>
</bugzilla>


== Maven ==
= OpenJFX =
See the [[Setting_up_a_JogAmp_project_in_your_favorite_IDE#Maven|maven instructions]] for a guide to using Jogamp in
Maven projects.


== Autobuild Files ==
[https://jogamp.org/bugzilla//show_bug.cgi?id=607#c20 Bug report 607] describes different ways to either
[{{SERVER}}/deployment/autobuilds/master/jogl-b485-2011-09-20_08-30-36/ Autobuild Platform ZIP files] for each module
* enhance external rendering via JOGL into an OpenJFX UI elements, or
follow the [[#Version_Classification|versioning]] scheme plus contain the platform identifier [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NativeJARFileNameConvention OS and ARCH]:
* to replace OpenJFX's Glass w/ NEWT and Prism's OpenGL coding with JOGL
<pre> 
  jogl-2.0-b210-20101110-linux-amd64.zip
</pre>


== Release and Archived Files ==
= Misc =
The [{{SERVER}}/deployment/jogamp-current/archive/ release archive folder]
contains 7z archive files for each platform containing all modules, ie. ''jogamp-linux-'''os.and.arch'''.7z''.
The '''os.and.arch''' refers to the
[{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NativeJARFileNameConvention native file naming convention].


For example:
<!-- bugzilla>
* <tt>jogamp-linux-amd64.7z</tt>
    {
* <tt>jogamp-linux-i586.7z</tt>
        "product"!=["graphui","newt"],
* <tt>jogamp-windows-amd64.7z</tt>
        "component"!=["graph","vulkan"],
* <tt>jogamp-windows-i586.7z</tt>
        "version":["2.5.0","3.0.0","tbd"],
        "cf_type":"FEATURE",
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla-->


The folder also contains the Java API document ZIP files:
<bugzilla>
* <tt>gluegen-javadoc.zip</tt>
    {
* <tt>jogl-javadoc.zip</tt>
        "version":["2.5.0","3.0.0","tbd"],
* <tt>jocl-javadoc.zip</tt>
        "cf_type":"FEATURE",
* <tt>joal-javadoc.zip</tt>
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>

Revision as of 10:11, 2 April 2024

This list exposes building blocks for potential use and business case scenarios using Java & JogAmp on Desktop and Embedded Devices.

Notably Graph & Graph UI as well as Wayland & Vulkan support could be of interest here?

Also see Completed Features Objectives ...

Graph

Graph/GraphUI Progress Blog Entries

Desired Work Items

This is an ad-hoc list of desired features and fixes, which shall result in proper bug-reports soon.

After having reached UI usability with widgets and clipping, the following items are becoming more interesting

  • Fix general issues with current implementation and API, if any
  • Fix Graph rendering bugs (Tessellation)
  • Use of super-sized triangles to render Graph lines & curves to allow
    • Using a one-pass smooth AA Graph renderer to save resources otherwise used in our pass-2 FBO supersampling renderer
    • Generate outlines, i.e. outlined fonts
    • Generate special effects like glowing/pumping outlines indicating selection etc
  • Allow passing or better attaching per-vertex color to Graph Outline (API)
  • Add subtitles in MediaPlayer GraphUI widget (done)
  • Add video encoding in our FFmpeg binding, i.e. an FFMPEGMediaRecorder (Encoding + Multiplexing)

Further more, if so desired, a C++ implementation of our Graph + GraphUI framework may also be of interest.

In case any company or organization is interested and likes to support this work and may also like to receive support in adopting this framework, please contact Göthel Software e.K.

OpenJDK Compatibility / Integration

Objectives should be to allow seamless integration into OpenJDK's deployment and JVM launch methods.

A dual JAR file to be used with and without modules is desired, however it seems that certain JAR options are not available with this configuration if our classes are not build as modules itself.

An optional JVM Launch Pad (JLP) might be helpful, even though it instructs further complexity and is not helping with a vanilla OpenJDK deployment.

OpenJDK >= 11

See Bug 1404

JVM Commandline Parameter

Current used 'add-opens' in my JogAmp test scripts for Java >= 11, covering all AWT utilization including background erase is:

--add-opens java.desktop/sun.awt=ALL-UNNAMED 
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED 
--add-opens java.desktop/sun.java2d=ALL-UNNAMED

OpenJDK >= 2x

See Bug 1505

JVM Commandline Parameter

Current used 'add-opens' in my JogAmp test scripts for Java >= 23, covering all AWT utilization including background erase is:

--add-opens java.desktop/sun.awt=ALL-UNNAMED 
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED 
--add-opens java.desktop/sun.java2d=ALL-UNNAMED
--TO_BE_DETERMINED

Graph UI

Graph UI will enable an immersive UI within the 3D scene on the desktop, mobile and on bare-metal embedded systems without a windowing system.

Graph UI utilizes Resolution Independent NURBS Curves Rendering using Programmable Graphics Pipeline, i.e. rendering curves directly on the GPU, resolution independent [ paper, slides ].

This method allows us to have an ultimate fast font and UI rendering engine, suitable for all devices and applications. No CPU based curve nor font pre-rendering (matching a target resolution) is required.

Think of an integrated QT or OpenJFX in your 2D/3D application working on desktop and embedded devices even w/o any windowing system on top of a plain console DRM/GBM as support by JOGL(EGL) and NEWT as demonstrated by Xerxes on a Raspberry Pi4.

Reimagine Java on Desktop & Bare-Metal Devices demonstrates the updated Graph Curve Rendering and UI, while this update shows clipping and widgets. Further updates will be posted here....

Notably the Graph Curve Rendering is almost feature complete, as well as our own user input including gesture detection within NEWT.

Parent Main Node
Dependency Tree
All GraphUI
Open Items graphui
Full Query
ID Version Product Component Priority Severity Status Summary
544 tbd GraphUI Core P3 enhancement UNCONFIRMED RFE for UI part of the graph package
804 tbd GraphUI Plugin --- enhancement UNCONFIRMED Add SVG Input Specification (Curved Geometry, Object Interaction) to Graph-UI
805 2.6.0 GraphUI Core --- enhancement IN_PROGRESS Basic Graph-UI Widgets - I
1483 tbd GraphUI Plugin P4 normal CONFIRMED Enhanced Graph-UI Elements - II

4 Total; 4 Open (100%); 0 Resolved (0%); 0 Verified (0%);


Completed Items graphui
Full Query
ID Version Product Component Status Resolution Summary
803 2.5.0 GraphUI Core RESOLVED FIXED Establish Graph-UI Core ..
1454 2.6.0 GraphUI Core RESOLVED FIXED GraphUI Scene: Elevate active (selected) shape (add z-offset) and select (pick) in Z descending order
1456 2.6.0 GraphUI Core RESOLVED FIXED GraphUI: Add CSS alike Layout for Group: GridLayout and BoxLayout
1457 2.6.0 GraphUI Core RESOLVED FIXED GraphUI: Add AnimGroup, providing sets of custom animated Shapes
1458 2.6.0 GraphUI Core RESOLVED FIXED GraphUI Z-Epsilon Support: Expose Z-Epsilon API in Scene and utilization in Button
1459 2.6.0 GraphUI Core RESOLVED FIXED GraphUI Shape: Add active (pointer over/left) state and callback Listener
1460 2.6.0 GraphUI Core RESOLVED FIXED GraphUI Shape: Allow keeping aspect-ratio at resize
1464 2.6.0 GraphUI Core RESOLVED FIXED GraphUI Scene: Resolve Data Race Modding Z Position activating a shape and Arrays.sort(..)
1467 2.6.0 GraphUI Core RESOLVED FIXED GraphUI: Don't de-activate a Shape if became active via 'mouseOver' (mouseDragged)
1489 2.6.0 GraphUI Core RESOLVED FIXED GraphUI Group: Resolve Performance Regression in Scene.pickShape(): Drop invisible and clipped shapes
1490 2.6.0 GraphUI Core RESOLVED FIXED GraphUI Group: Resolve Performance Issues with Shape Mv Transform -> PMVMatrix4f; Group/Scene's temp sorted arrays
1495 2.6.0 GraphUI Core RESOLVED FIXED GraphUI Shape: Only updateMat() if marked dirty once in applyMatToMv() and getMat(*)
1496 2.6.0 GraphUI Core RESOLVED FIXED GraphUI Shape: Allow markShapeDirty() and markStateDirty() to be lock free
1498 2.6.0 GraphUI Core RESOLVED FIXED GraphUI: Fix Picking Traversal throughout Groups in Z-Descending Order, testing Children and fallback to Group if positive
1499 2.6.0 GraphUI Core RESOLVED FIXED GraphUI MediaPlayer: Add Time-Code & optional Still-Images as mouse-over on time RangeSlider

15 Total; 0 Open (0%); 15 Resolved (100%); 0 Verified (0%);


Jogl / Graph

Dependency Tree Graph Font Issues

All Jogl Graph

Open Items Jogl / graph
Full Query
ID Version Product Component Priority Severity Status Summary
1064 tbd Jogl graph P1 major IN_PROGRESS Fix Graph Font Rendering (group for related bugs)
1502 2.6.0 Jogl graph P4 normal IN_PROGRESS Graph: Improve Performance of Non-Convex/Intersection Classification and/or Intersection-Test itself (Bug 1501)
1503 2.6.0 Jogl graph P4 normal IN_PROGRESS Graph: Resolve Tessellation Bugs (Delaunay Triangulation) - Part II

3 Total; 3 Open (100%); 0 Resolved (0%); 0 Verified (0%);


Completed Items Jogl / graph
Full Query
ID Version Product Component Status Resolution Summary
492 2 Jogl graph VERIFIED FIXED New TextRenderer on Win7-64bit-NV-QuadroFX5800 Java-32bit - FBObject produces GL_OUT_OF_MEMORY
636 2 Jogl graph RESOLVED FIXED Quaternion multiplication unexpected behavior
703 2 Jogl graph RESOLVED FIXED Quaternion SLERP not working jumping and returning incorrect interpolation
754 2 Jogl graph RESOLVED FIXED Remove Ubuntu fonts from jogl-all.jar, provide it separately to reduce footprint for the masses.
801 2 Jogl graph RESOLVED FIXED Cleanup Graph API, Remove Redundancies.
802 2 Jogl graph RESOLVED FIXED Enhance Graph Performance w/ Text Rendering
1040 2.5.0 Jogl graph RESOLVED FIXED Font space character width problem (GPU renderer)
1041 2.6.0 Jogl graph RESOLVED FIXED GPU Font rendering bugs on bold fonts
1061 tbd Jogl graph RESOLVED WONTFIX Make possibility to draw antialiased text to different frame buffer
1091 2.3.0 Jogl graph RESOLVED FIXED Graph FontFactory: Add method allowing Font loading via InputStream
1131 tbd Jogl graph RESOLVED FIXED Some TTF fonts not working in the new Graph API renderer
1132 tbd Jogl graph RESOLVED WONTFIX OTF fonts can't be loaded in Graph API renderer
1133 2.6.0 Jogl graph RESOLVED FIXED Some TTF fonts producing squares instead of characters
1162 tbd Jogl graph RESOLVED INVALID Using TextRegionUtil (RegionRenderer and RenderState) with user GL code
1228 tbd Jogl graph RESOLVED WONTFIX Allow setting other glBlendFunc in GLRegion renderer
1229 2.6.0 Jogl graph RESOLVED FIXED Some TextRenderer tests not giving expected results
1230 tbd Jogl graph RESOLVED WONTFIX Two-pass TextRenderer doesn't work if culling is enabled
1262 tbd Jogl graph RESOLVED WONTFIX Allow multi-pass font rendering to choose FBO to render to
1272 tbd Jogl graph RESOLVED FIXED Two-pass TextRenderer color changing during runtime doesn't work if glyph caching is enabled
1355 tbd Jogl graph RESOLVED FIXED buggy text rendering in GPUTextNewtDemo
1461 2.6.0 Jogl graph RESOLVED FIXED Graph Fonts: Add 'Material Icons Round-Regular' (APL-2 license)
1462 2.6.0 Jogl graph RESOLVED FIXED Graph Font: Add name + codepoint to ID and Glyph mapping plus traversing through all Glyphs
1463 2.6.0 Jogl graph RESOLVED FIXED Graph Font: Whitespace or undefined Glyphs shall not cover (any) height exceeding overall CharSequence
1465 2.6.0 Jogl graph RESOLVED FIXED Graph / GraphUI: Render a Region's ColorTexture in proper aspect-ratio, letter-boxed or zoomed (config)
1466 2.6.0 Jogl graph RESOLVED FIXED Graph / GraphUI: Fix color mixing in Region shader with texture, colorStatic and colorChannel
1485 2.6.0 Jogl graph RESOLVED FIXED Graph: Support AABBox Clipping to [GL]Region
1486 2.6.0 Jogl graph RESOLVED FIXED Graph/GraphUI AA-Quality + SampleCount Params: Push 'em down to RegionRenderer's RenderState usually rarely set from top of user API, reducing complexity
1487 2.6.0 Jogl graph RESOLVED FIXED Graph: Use Frustum Clipping instead of AABBox + GraphUI Support
1488 2.6.0 Jogl graph RESOLVED FIXED Graph: Resolve Performance Regression in RegionRenderer's ShaderKey Utilization
1493 2.6.0 Jogl graph RESOLVED FIXED GLMediaPlayer/GraphUI: Support Displaying Text/ASS Subtitles
1494 2.6.0 Jogl graph RESOLVED FIXED GLMediaPlayer/GraphUI: Support Displaying Bitmap'ed Subtitles (PGS ..)
1497 2.6.0 Jogl graph RESOLVED FIXED Merge Bernhard Haumacher's typecast work, providing documentation as well as Cmap table fix
1501 2.6.0 Jogl graph RESOLVED FIXED Graph: Resolve Tessellation Bugs (Delaunay Triangulation)

33 Total; 0 Open (0%); 32 Resolved (96.97%); 1 Verified (3.03%);


WebAssembly (wasm) Target Platform

Overview

See Bug 1506 describing this feature.

Since Java Applets are not more supported within browser or by OpenJDK for years, it may seems feasible to evaluate the WebAssembly target running within e.g. web browser nowadays.

An initial evaluation on small C++ projects using the emscripten front-end for LLVM's clang++ to wasm compiler, which supports many ported system libraries like SDL, OpenGL, .. has been undertaken successfully with variable results.

Java Support

Java support for the WebAssembly target are claimed to be supported by

Initial C++/wasm Evaluation

For once, the wasm target is comparable to Java bytecode but the virtual machine might not be as performant, efficient or flexible. The lack of hassle free native threads and performance may remind one of the first JVM steps. The wasm code runs within a virtual machine like the JVM and additionally lacks of native binding capabilities, besides aforementioned limitations.

Some limitations may be overcome, others are likely by design as it usually runs on the same browser virtual machine as the JavaScript companion.

So far the only question arises why reinventing the wheel once again? Dropping utilization of a well working JVM for the web had not technical reasoning.

GraalVM seems to support the wasm target, hence one might want to evaluate this Java target platform as well before recoding the whole application. Opening the door for any language to be compiled to a platform independent intermediate representation (IR) like Java’s bytecode suitable for a versatile runtime environment including its virtual machine is surely still desirable. Hopefully this technology will mature and be maintained for the years to come.


NEWT

Full Query
ID Version Product Component Priority Severity Status Summary
592 tbd Jinput core P5 enhancement IN_PROGRESS Migrate Jinput to JogAmp
595 tbd Newt core P5 enhancement CONFIRMED NEWT event propagation to Jinput
795 tbd Newt wayland --- enhancement CONFIRMED Add native Wayland Backend for NEWT
807 tbd Newt core --- enhancement UNCONFIRMED NEWT Input: Add support for more devices a.k.a (Accelerometer, GPS, Compass, Joystick ..)
808 tbd Newt core --- enhancement UNCONFIRMED NEWT Input: Add support for Gyroscope / Accelerometer Devices
809 tbd Newt core --- enhancement UNCONFIRMED NEWT Input: Add support for Compass Devices
812 tbd Newt core --- enhancement CONFIRMED Add USB Topology / Graph to query device location etc.
813 tbd Newt core --- enhancement CONFIRMED Allow InputDevice to be auto-assigned, e.g. via USB Topology (Monitor - Mouse/Keyboard)
814 tbd Newt core --- enhancement CONFIRMED Enhance PointerEvent / Deprecate MouseEvent
1178 tbd Newt embedded --- enhancement IN_PROGRESS Prevent dual mousepointers and improve raspberry pi xorg experience when using NEWT BCM VC IV on Raspberry Pi
1361 3.0.0 Newt core P4 normal CONFIRMED Remove Flickering when resizing a Newt Window

11 Total; 11 Open (100%); 0 Resolved (0%); 0 Verified (0%);


NEWT + Wayland

Currently NEWT supports the X11/Xorg windowing server on Unix alike platforms.

It might be desired to add direct support to Wayland, as we already added support for bare metal devices w/o a windowing system via the Linux DRM/GBM console mode throughout JOGL + NEWT.

Vulkan

Full Query
ID Version Product Component Priority Severity Status Summary
1137 tbd Jogl vulkan --- enhancement CONFIRMED Add Support for Vulkan (group)
1138 tbd Jogl vulkan --- enhancement UNCONFIRMED Common Subset of OpenCL >= 2.1 / Vulkan Command API (Queue, Buffer) and Context
1139 tbd Jogl vulkan --- enhancement UNCONFIRMED Generalize high-level API GLContext, GLDrawable, GLAutoDrawable for Vulkan and OpenGL
1140 tbd Jogl vulkan --- enhancement UNCONFIRMED Add Support for SPIR-V >= 2.0 (group)

4 Total; 4 Open (100%); 0 Resolved (0%); 0 Verified (0%);


Video Encoding/Decoding & Player

Across our releases, we supported video encoding and decoding (with a player) based on either FFmpeg or Android's library as shown in this clip at 2:12 min mark.

Goal would be to

  • Update general ffmpeg video decoding support
  • Enhance ffmpeg video encoding support
  • Potentially add better control about video-frame to framebuffer control for editing software

See related buglist

Full Query
ID Version Product Component Priority Severity Status Summary
686 tbd Jogl video P3 enhancement CONFIRMED Add native Libraries for GLMediaPlayer fallback w/ patent free Codecs like WebM or AV1
933 3.0.0 Jogl video P4 enhancement CONFIRMED Force GLMediaPlayer not to depend on machine time
1173 2.5.0 Jogl video --- major RESOLVED GLMediaPlayer: EOS not reported for FFMPEG video
1216 2.5.0 Jogl video --- major RESOLVED GLMediaPlayer: MP3 Playback Issues (duration and EOS)
1260 3.0.0 Jogl video P4 minor CONFIRMED Allow the change of MAXIMUM_VIDEO_ASYNC of GLMediaPlayer
1286 2.5.0 Jogl video P4 major RESOLVED Multiple GLMediaPlayers init stream deadlock
1297 2.5.0 Jogl video P4 normal RESOLVED Native crash while destroying GLMediaPlayer
1356 2.4.0 Jogl video P4 normal RESOLVED "Future proof" ffmpeg libraries loading prevents using legit libraries
1420 2.5.0 Jogl video P4 major RESOLVED Enable FFmpeg 4, 5 and 6 in FFMPEGMediaPlayer and allow loading provided libs (option)
1455 2.6.0 Jogl video P4 normal RESOLVED GLMediaPlayer: Add isAutioMuted() query on volume and earmark audio-volume if not initialized and set it when AudioSink becomes available
1469 2.6.0 Jogl video P4 normal RESOLVED FFmpeg binding uses ReleaseStringChars instead of ReleaseStringUTFChars for GetStringUTFChars() acquired UTF
1472 2.6.0 Jogl video P4 major RESOLVED GLMediaPlayer Enhance AV Synchronization
1491 2.6.0 Jogl video P4 normal RESOLVED GLMediaPlayer: Remove resource restrictions and locking with shared GLContext (*GraphicsDevice)
1492 2.6.0 Jogl video P4 normal RESOLVED GLMediaPlayer: Support Tracking, Showing and Switching of Audio & Subtitle Tracks

14 Total; 3 Open (21.43%); 11 Resolved (78.57%); 0 Verified (0%);


iOS Enhancements

Early iOS support has been demonstrated in 2019

Enhancing this port would allow to use JogAmp in a similar fashion as on Android, but using an OpenJDK iOS build.

Source Certification Contract (SCC)

Dependency Tree

Root Parent Entry

Full Query
ID Version Product Component Priority Severity Status Summary
1368 tbd General builds P4 normal IN_PROGRESS Source Certification Contract (SCC)
1369 2.4.0 Gluegen core P4 normal RESOLVED SCC: Implement basic Secure Hash (SHA256) build time signatures & runtime validation

2 Total; 1 Open (50%); 1 Resolved (50%); 0 Verified (0%);


OpenJFX

Bug report 607 describes different ways to either

  • enhance external rendering via JOGL into an OpenJFX UI elements, or
  • to replace OpenJFX's Glass w/ NEWT and Prism's OpenGL coding with JOGL

Misc

Full Query
ID Version Product Component Priority Severity Status Summary
544 tbd GraphUI Core P3 enhancement UNCONFIRMED RFE for UI part of the graph package
592 tbd Jinput core P5 enhancement IN_PROGRESS Migrate Jinput to JogAmp
595 tbd Newt core P5 enhancement CONFIRMED NEWT event propagation to Jinput
607 tbd Jogl javafx P5 enhancement IN_PROGRESS JavaFX 2+ and JOGL should work together
674 3.0.0 Jogl swt P4 major IN_PROGRESS JOGL/SWT Windowing/Surface Interoperability
686 tbd Jogl video P3 enhancement CONFIRMED Add native Libraries for GLMediaPlayer fallback w/ patent free Codecs like WebM or AV1
794 tbd Jogl wayland --- enhancement CONFIRMED Add Wayland Windowing/Surface Interoperability
795 tbd Newt wayland --- enhancement CONFIRMED Add native Wayland Backend for NEWT
803 2.5.0 GraphUI Core --- enhancement RESOLVED Establish Graph-UI Core ..
804 tbd GraphUI Plugin --- enhancement UNCONFIRMED Add SVG Input Specification (Curved Geometry, Object Interaction) to Graph-UI
807 tbd Newt core --- enhancement UNCONFIRMED NEWT Input: Add support for more devices a.k.a (Accelerometer, GPS, Compass, Joystick ..)
808 tbd Newt core --- enhancement UNCONFIRMED NEWT Input: Add support for Gyroscope / Accelerometer Devices
809 tbd Newt core --- enhancement UNCONFIRMED NEWT Input: Add support for Compass Devices
811 tbd Jogl util P5 enhancement UNCONFIRMED The legacy text renderer doesn't support GL3
812 tbd Newt core --- enhancement CONFIRMED Add USB Topology / Graph to query device location etc.
813 tbd Newt core --- enhancement CONFIRMED Allow InputDevice to be auto-assigned, e.g. via USB Topology (Monitor - Mouse/Keyboard)
814 tbd Newt core --- enhancement CONFIRMED Enhance PointerEvent / Deprecate MouseEvent
933 3.0.0 Jogl video P4 enhancement CONFIRMED Force GLMediaPlayer not to depend on machine time
953 3.0.0 Jogl awt P5 enhancement CONFIRMED Allow the creation of a BufferedImage from a TextureData
973 tbd Jogl core --- enhancement UNCONFIRMED NativeWindowFactory: Needs service provider interface (SPI) for TK specific implementations (Scaling)
1008 tbd General builds --- enhancement IN_PROGRESS Adopt Automated Validation of Version Semantics
1040 2.5.0 Jogl graph --- enhancement RESOLVED Font space character width problem (GPU renderer)
1045 tbd Jogl opengl --- enhancement UNCONFIRMED Implement GLUgles2
1061 tbd Jogl graph --- enhancement RESOLVED Make possibility to draw antialiased text to different frame buffer
1064 tbd Jogl graph P1 major IN_PROGRESS Fix Graph Font Rendering (group for related bugs)
1095 tbd General infrastructure P3 enhancement CONFIRMED Establish self hosted forum/mailinglist on jogamp.org
1115 tbd Jogl core --- enhancement UNCONFIRMED SRGB implementation
1131 tbd Jogl graph --- major RESOLVED Some TTF fonts not working in the new Graph API renderer
1132 tbd Jogl graph --- major RESOLVED OTF fonts can't be loaded in Graph API renderer
1137 tbd Jogl vulkan --- enhancement CONFIRMED Add Support for Vulkan (group)
1138 tbd Jogl vulkan --- enhancement UNCONFIRMED Common Subset of OpenCL >= 2.1 / Vulkan Command API (Queue, Buffer) and Context
1139 tbd Jogl vulkan --- enhancement UNCONFIRMED Generalize high-level API GLContext, GLDrawable, GLAutoDrawable for Vulkan and OpenGL
1140 tbd Jogl vulkan --- enhancement UNCONFIRMED Add Support for SPIR-V >= 2.0 (group)
1152 tbd Jogl util --- enhancement UNCONFIRMED StereoDevice: Add HSW Display (Health and Safety Warning) at least in combination w/ OculusVR
1162 tbd Jogl graph --- normal RESOLVED Using TextRegionUtil (RegionRenderer and RenderState) with user GL code
1178 tbd Newt embedded --- enhancement IN_PROGRESS Prevent dual mousepointers and improve raspberry pi xorg experience when using NEWT BCM VC IV on Raspberry Pi
1179 tbd Jogl windows --- enhancement UNCONFIRMED Provide fallback OpenGL ES 2 & 3 implementation using lib ANGLE on Windows
1197 tbd Jogl util P5 enhancement UNCONFIRMED Texture and image API revamping
1228 tbd Jogl graph --- enhancement RESOLVED Allow setting other glBlendFunc in GLRegion renderer
1230 tbd Jogl graph --- normal RESOLVED Two-pass TextRenderer doesn't work if culling is enabled
1242 3.0.0 Jogl util --- enhancement CONFIRMED Fix 'Texture.updateImage(...)' API and Implementation
1256 tbd Gluegen core P3 enhancement IN_PROGRESS Provide General GlueGen Annotation Processor (Replacing specialized CStruct)
1258 tbd Gluegen core P4 enhancement CONFIRMED Add Multiple JNI/Native to Java Callback Generation Techniques
1260 3.0.0 Jogl video P4 minor CONFIRMED Allow the change of MAXIMUM_VIDEO_ASYNC of GLMediaPlayer
1261 tbd Jogl opengl P4 enhancement UNCONFIRMED Allow changing of texture sampler type for multisampled FBO
1262 tbd Jogl graph P4 major RESOLVED Allow multi-pass font rendering to choose FBO to render to
1264 tbd Jogl util P5 normal UNCONFIRMED Methods to access (read, write) to pixels in TextureData
1266 tbd Jogl awt P5 normal UNCONFIRMED Per canvas GLSL vertical flip skip method
1303 tbd Jocl opencl P4 enhancement CONFIRMED Add ability to use clRetainMemObject() on CLBuffers instead of automatically releasing
1321 tbd Jogl util P4 enhancement UNCONFIRMED JPEG encoder
1323 tbd Jogl opengl P4 minor UNCONFIRMED Enhance the math utilities to support more operations on vectors, matrices and quaternions
1328 tbd Java3D core P4 minor UNCONFIRMED Support for Compressed Texture formats DDS, ASTC, ETC2(container KTX)
1335 tbd Java3D core P4 normal UNCONFIRMED Requesting a 24 depth bit cap can return an 8bit depth buffer if 16bit is the max
1336 tbd Java3D core P4 normal UNCONFIRMED New property to default disable picking and collision testing
1340 tbd Java3D core P4 normal UNCONFIRMED Vecmath uses import java.awt.Color which is poor design
1341 tbd Java3D core P4 normal UNCONFIRMED MasterControl.stencilClear defaults to false, however true would be simpler
1342 tbd Java3D core P4 normal UNCONFIRMED Add a SparseArray into Java3D for performance
1343 tbd Java3D core P4 normal UNCONFIRMED New property j3d.autocompile
1344 tbd Java3D core P4 normal UNCONFIRMED GL2ES2Pipeline fix texturemapping and inittexturemapping
1345 tbd Java3D core P4 normal UNCONFIRMED GL2ES2Pipeline fix textureFillBackground
1346 tbd Java3D core P4 normal UNCONFIRMED GL2ES2Pipeline fix decalling methods
1349 tbd Java3D core P4 normal UNCONFIRMED Remove deprecated methods, use try with resource, generics and return type refinement in Java3D 1.7
1352 tbd Jogl util P4 minor UNCONFIRMED Identify if the pressed CTRL button was the right or left
1361 3.0.0 Newt core P4 normal CONFIRMED Remove Flickering when resizing a Newt Window
1368 tbd General builds P4 normal IN_PROGRESS Source Certification Contract (SCC)
1373 2.5.0 General generic P4 major VERIFIED Support High-DPI across Platforms and Modules
1404 tbd General generic P4 enhancement CONFIRMED Support Java 11+ Features (Module Encapsulation, jlink, ..)
1427 3.0.0 Default default P5 enhancement UNCONFIRMED Move JMonkeyEngine's JogAmp backend into JogAmp repositories
1434 2.5.0 Gluegen core P4 normal RESOLVED GlueGen: Revise Struct Mapping (No native code, support all pointer-pointer, func-pointer and pointer to const-type)
1435 2.5.0 Gluegen core P4 normal RESOLVED GlueGen: Add support for JavaCallback
1436 2.5.0 General builds P4 normal RESOLVED Build for older MacOS 17 (High Sierra), 18 Mojave and 19 (Catalina) support
1437 2.5.0 Joal core P4 normal RESOLVED Use openal-soft to v1.23.1 buildin for GNU/Linux, MacOS and Windows
1438 2.5.0 Joal core P4 normal RESOLVED Consolidate Sound3D / ALAudioSink w/ matching AudioSink + GLMediaPlayer
1439 2.5.0 Joal core P4 normal RESOLVED Add AL_SOFT_events support via GlueGen JavaCallback and using extension in ALAudioSink
1440 2.5.0 Joal core P4 normal RESOLVED Add SimpleSineSynth and add JOAL backend to jsynth
1442 2.5.0 Gluegen core P4 normal RESOLVED GlueGen: Parse inner classes & interfaces of Java source files
1443 2.5.0 Gluegen core P4 normal RESOLVED GlueGen: Parse Java annotations in source files
1445 3.0.0 Gluegen core P4 normal UNCONFIRMED Add (Khronos) XML frontend parallel to existing C-Header frontend
1448 2.5.0 Gluegen core P4 normal RESOLVED Merge upstream JCPP v1.4.14 and drop our PCPP
1451 tbd Gluegen core P4 normal IN_PROGRESS Synchronize GlueGen Documentation
1483 tbd GraphUI Plugin P4 normal CONFIRMED Enhanced Graph-UI Elements - II
1506 tbd General generic P4 normal UNCONFIRMED Support WebAssembly (wasm) Target Platform (browser/web)

82 Total; 62 Open (75.61%); 19 Resolved (23.17%); 1 Verified (1.22%);