-
-
Notifications
You must be signed in to change notification settings - Fork 189
Description
Hi, I noticed that GL4ES just advertise itself, not the underlying technology. Example:
GL_VENDOR: ptitSeb
GL_RENDERER: GL4ES wrapper
GL_VERSION: 2.1 gl4es wrapper 1.1.7
Some other translation layers may disclose the underlying technology.
For example Parallels Desktop uses the Parallels and %s string as GL_VENDOR and the Parallels using %s string as GL_RENDERER.
Here are some examples:
GL_VENDOR: Parallels and ATI Technologies Inc.
GL_RENDERER: Parallels using AMD Radeon Pro 560 OpenGL Engine (Compat)
GL_VENDOR: Parallels and Intel Inc.
GL_RENDERER: Parallels using Intel(R) Iris(TM) Graphics 6100
GL_VENDOR: Parallels and NVIDIA Corporation
GL_RENDERER: Parallels using NVIDIA GeForce GT 750M OpenGL Engine
On the other hand, VirGL uses the Mesa/X.Org string as GL_VENDOR, but still discloses the original GL_RENDERER string in its own GL_RENDERER string using a virgl (%s) string..
Examples:
GL_VENDOR: Mesa/X.Org
GL_RENDERER: virgl (Mesa Intel(R) UHD Graphics 600 (GLK 2))
GL_VENDOR: Mesa/X.Org
GL_RENDERER: virgl (Adreno (TM) 740)
This is useful, because it makes possible to workaround specific hardware bugs, or to select faster code paths. On the later, an OpenGL driver may implement features to be conformant to a said OpenGL version, but such feature is not required to be fast and can be slowly emulated, only properly implemented.
For example the Dæmon game engine implements some specific configuration to avoid some hardware rendering bugs on current Intel GPUs, and disable half floats on some old ATI cards on which we know full floats are faster.
We are aware of what looks to be an hardware bug affecting PowerVR devices and derivated ones like Apple AGX and Moore Threads, and while we don't know yet if we can workaround that in engine, that makes me think it could be a good idea is GL4ES disclosed some of the underlying tech.
We also disable some GL extension on a specific Nvidia driver for specific hardware, because the driver lies about supporting a feature and makes the application crash as soon as the feature is used. In such situation, a translation layer like GL4ES would disclose to the application a feature being available because the underlying technology would lie about it, and the application would have no way to identify the underlying driver is buggy, and would use the feature and crash.
With that experience, I wonder if GL4ES could disclose a bit of the underlying hardware or the driver.
Of course, not everything can be disclosed, but maybe disclosing a bit can be useful.