Skip to content

[Feature request] Disclosing a bit of the underlying technology (driver, hardware…) #502

@illwieckz

Description

@illwieckz

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions