JDK-8246204 : No 3D support for newer Intel graphics drivers on Linux
  • Type: Bug
  • Component: javafx
  • Sub-Component: graphics
  • Affected Version: 8,openjfx11,openjfx14
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: linux_ubuntu
  • CPU: x86
  • Submitted: 2020-05-31
  • Updated: 2021-10-29
  • Resolved: 2020-06-04
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 8 Other
8u271Fixed openjfx11.0.9Fixed
Related Reports
Relates :  
Description
I recently bought a new Intel NUC in order to be able to run Linux for building JavaFX apps.

When I run the application it tells me that the conditional feature 3D is not supported. However, if I run it with forceGPU true, it seems to work perfectly. The output of prism verbose is the following:

Prism pipeline init order: es2 sw 
Using Double Precision Marlin Rasterizer
Using dirty region optimizations
Not using texture mask for primitives
Not forcing power of 2 sizes for textures
Using hardware CLAMP_TO_ZERO mode
Opting in for HiDPI pixel scaling
Prism pipeline name = com.sun.prism.es2.ES2Pipeline
Loading ES2 native library ... prism_es2
	succeeded.
GLFactory using com.sun.prism.es2.X11GLFactory
(X) Got class = class com.sun.prism.es2.ES2Pipeline
Initialized prism pipeline: com.sun.prism.es2.ES2Pipeline
Maximum supported texture size: 16384
Maximum texture size clamped to 4096
Non power of two texture support = true
Maximum number of vertex attributes = 16
Maximum number of uniform vertex components = 16384
Maximum number of uniform fragment components = 16384
Maximum number of varying components = 128
Maximum number of texture units usable in a vertex shader = 32
Maximum number of texture units usable in a fragment shader = 32
Graphics Vendor: Intel
       Renderer: Mesa Intel(R) UHD Graphics (CML GT2)
        Version: 4.6 (Compatibility Profile) Mesa 20.0.4
 vsync: true vpipe: true
ES2ResourceFactory: Prism - createStockShader: FillPgram_Color.frag
ES2ResourceFactory: Prism - createStockShader: Solid_TextureFirstPassLCD.frag
ES2ResourceFactory: Prism - createStockShader: Solid_TextureSecondPassLCD.frag
ES2ResourceFactory: Prism - createStockShader: Solid_TextureRGB.frag
new alphas with length = 4096
ES2ResourceFactory: Prism - createStockShader: Texture_Color.frag
new alphas with length = 8192
ES2ResourceFactory: Prism - createStockShader: FillPgram_LinearGradient_PAD.frag
ES2ResourceFactory: Prism - createStockShader: Mask_TextureSuper.frag
PPSRenderer: scenario.effect - createShader: LinearConvolveShadow_4
ES2ResourceFactory: Prism - createStockShader: DrawPgram_Color.frag
ES2ResourceFactory: Prism - createStockShader: Texture_LinearGradient_PAD.frag
PPSRenderer: scenario.effect - createShader: LinearConvolveShadow_20
new alphas with length = 212992

The reason is that the vendor id changed from "Intel Open Source Technology Center" to just "Intel". So it would just be necessary to add "Intel" to the list of supported graphics vendors in the X11GLFactory class in order to get back the 3D support.


Comments
Changeset: 97499820 Author: Michael Paus <mpaus@openjdk.org> Committer: Kevin Rushforth <kcr@openjdk.org> Date: 2020-06-04 12:51:56 +0000 URL: https://git.openjdk.java.net/jfx/commit/97499820
04-06-2020

I have created a pull request for this bug. https://github.com/openjdk/jfx/pull/243
01-06-2020

[~mpaus] Are you willing to contribute a fix for this?
01-06-2020