OpenGL software instead of WebGL hardware. What went wrong?

111 views (last 30 days)
I am on R2025a.
---
Test Case #1
If I enter these commands.
info = rendererinfo;
disp(info)
disp(info.Details)
Then, these are the outputs.
GraphicsRenderer: 'WebGL'
Vendor: ''
Version: ''
RendererDevice: ''
Details: [1×1 struct]
HardwareSupportLevel: 'Full'
SupportsDepthPeelTransparency: 1
SupportsAlignVertexCenters: 1
SupportsGraphicsSmoothing: 1
MaxTextureSize: 0
MaxFrameBufferSize: 0
---
Test Case #2
If I enter these commands.
figure
ax = gca;
info = rendererinfo(ax);
disp(info)
disp(info.Details)
Then, these are the outputs.
GraphicsRenderer: 'OpenGL Software'
Vendor: 'Microsoft Corporation'
Version: '1.1.0'
RendererDevice: 'GDI Generic'
Details: [1×1 struct]
HardwareSupportLevel: 'None'
SupportsDepthPeelTransparency: 0
SupportsAlignVertexCenters: 0
SupportsGraphicsSmoothing: 0
MaxTextureSize: 1024
MaxFrameBufferSize: 0
---
These are the system specs:
---
The CPU is Intel i3-2310M with its integrated GPU of Intel HD Graphics 3000.
The GPU supports OpenGL 3.1 and the CPU supports OpenCL 1.1 according to AIDA64.
Also with DirectX DDI 11.1, it suports Feature Level 10_1, Shader Model 4.1, and WDDM 1.2
---
From webglreport.com, it states that the system support both WebGL 1.0 and WebGL 2.0
---
Questions
  1. In Test Case #1, why are the values for Vendor, Version, RendererDevice, MaxTextureSize, and MaxFrameBufferSize missing from the rendererinfo output? What went wrong?
  2. In Test Case #2, If OpenGL has been completely removed in R2025a, why does it still use the OpenGL 1.1 software renderer instead of WebGL? What went wrong?
  3. How do I choose the WebGL version and its ANGLE backend (D3D9, D3D11, OpenGL, etc.) to compare the performance?
  7 Comments
James Richard
James Richard on 18 Jul 2025
Edited: James Richard on 18 Jul 2025
Your MacOS is using Radeon Pro 5700 GPU to render and not the integrated graphics. Perhaps try your VM or the Geekom.
It’s clearly strange that WebGL works in Chrome and Firefox, but not in MATLAB.
Walter Roberson
Walter Roberson on 18 Jul 2025
Edited: Walter Roberson on 18 Jul 2025
My test with my VM showed the same output for renderinfo() and renderinfo(ax)
... I had to search around a lot to even find out that my MacOS Intel apparently has UHD 630 built-in. That fact is not mentioned anywhere in the specifications or system report; I had to hunt around to third-party model reports of the CPU model number, and then look up the specifications for the CPU model number.

Sign in to comment.

Accepted Answer

James Richard
James Richard on 3 Oct 2025 at 8:53
Edited: James Richard on 3 Oct 2025 at 10:18
As we might have known, MATLAB R2025a is build on top of Chromium Embedded Framework (CEF) v118 to run WebGL 2.0 over ANGLE.
ANGLE is a translation layer that allows us to choose our rendering backend.
It provides translation from OpenGL ES 2.0, 3.0, and 3.1 to Vulkan, desktop OpenGL, OpenGL ES, Direct3D 9, and Direct3D 11. Read More.
For example, to use D3D11, run it with the switch of --use-angle=D3D11
And it is inaccurate to say that the switch from R2024b to R2025a is to completely ditch OpenGL.
WebGL 2.0 is based on OpenGL ES 3.0 and it is fully compatible with OpenGL 4.3 and later.
The ANGLE in CEF allows us to use hardware accelerated OpenGL backend with --use-angle=OpenGL if your GPU supports it.
---
In my system, if I run chrome://gpu on CEF/Chrome of version less than v138, the WebGL2 is unavailable.
Other backend doesn't work for Intel HD Graphics 3000. The support of OpenGL 3.1 is insufficient for WebGL 2.0
But fortunately, it could be run through D3D11 despite only supporting Feature Level 10_1
---
CEF and Chromium-based browser are quite symmetrical in terms of switches or flags.
And we need to bypass the block of use D3D11 of ANGLE in the older version.
To solve it, we need to use the MATLAB Startup Options, and it could be set within the terminal/system environtment variables.
For example, in the current terminal session:
set MW_CEF_STARTUP_OPTIONS=--disable_d3d11=0
---
With the startup options set, we could try these inputs.
info = rendererinfo;
disp(info)
disp(info.Details)
To get these outputs.
Vendor: 'Google Inc. (Intel)'
Version: 'WebGL 2.0 (OpenGL ES 3.0 Chromium)'
RendererDevice: 'ANGLE (Intel, Intel(R) HD Graphics 3000 (0x00000116) Direct3D11 vs_4_1 ps_4_1, D3D11)'
Details: [1×1 struct]
HardwareSupportLevel: 'Full'
SupportsDepthPeelTransparency: 1
SupportsAlignVertexCenters: 1
SupportsGraphicsSmoothing: 1
MaxTextureSize: 8192
MaxFrameBufferSize: 8192
---
Finally, I've got hardware accelerated WebGL 2.0 over ANGLE with D3D11 backend.
P.S. I've been contacted with the developer, and we've had a pleasant discussion to solve this issue. He also told me the way to run chrome://gpu within the MATLAB's CEF, which helps a lot in debugging but told me to not publish it. Anyways, thank you very much for helping me.
  1 Comment
James Richard
James Richard on 3 Oct 2025 at 11:58
Edited: James Richard on 3 Oct 2025 at 12:07
Hmm, the first use of ANGLE seems to be on R2014b and then the integration of CEF was a gradual process. I'm not sure whether we could choose the backend on older versions.
And I guess there are some points to take in R2025a.
Expansion of CEF, the role of the Chromium Embedded Framework (CEF) expanded dramatically. Instead of just running web-based tools like the Live Editor and App Designer, CEF is now the foundation for the entire MATLAB desktop interface.
Integral use of ANGLE, the WebGL-based graphics engine, which relies on ANGLE for rendering, is now used for both figures and the desktop GUI itself. This means ANGLE is no longer just for plot rendering, but for drawing a large portion of the user interface as well.
MATLAB R2025a officially retired the older OpenGL graphics pipeline. The opengl function and related startup options no longer have any effect. But the OpenGL itself could still be used to render WebGL through ANGLE, so it's a different pipeline with the potential of having the same end.

Sign in to comment.

More Answers (0)

Categories

Find more on Graphics Performance in Help Center and File Exchange

Products


Release

R2025a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!