Class TGLVersion

DescriptionHierarchyFieldsMethodsProperties

Unit

Declaration

type TGLVersion = class(TGenericGLVersion)

Description

no description available, TGenericGLVersion description follows

OpenGL libraries (core OpenGL or GLU) version information.

As obtained from glGetString(GL_VERSION) or gluGetString(GLU_VERSION), also by glGetString(GL_VENDOR).

This is usually created by CastleGLUtils.LoadAllExtensions.

Hierarchy

Overview

Methods

Public constructor Create(const VersionString, AVendor, ARenderer: string);

Properties

Public property Vendor: string read FVendor;
Public property Renderer: string read FRenderer;
Public property Mesa: boolean read FMesa;
Public property MesaMajor: Integer read FMesaMajor;
Public property MesaMinor: Integer read FMesaMinor;
Public property MesaRelease: Integer read FMesaRelease;
Public property VendorATI: boolean read FVendorATI;
Public property Fglrx: boolean read FFglrx;
Public property VendorNVidia: boolean read FVendorNVidia;
Public property VendorIntel: boolean read FVendorIntel;
Public property BuggyPointSetAttrib: boolean read FBuggyPointSetAttrib;
Public property BuggyDrawOddWidth: boolean read FBuggyDrawOddWidth;
Public property BuggyGenerateMipmap: boolean read FBuggyGenerateMipmap;
Public property BuggyFBOCubeMap: boolean read FBuggyFBOCubeMap;
Public property BuggyGenerateCubeMap: boolean read FBuggyGenerateCubeMap;
Public property BuggyLightModelTwoSide: boolean read FBuggyLightModelTwoSide;
Public property BuggyLightModelTwoSideMessage: string read FBuggyLightModelTwoSideMessage;
Public property BuggyVBO: boolean read FBuggyVBO;
Public property BuggyShaderShadowMap: boolean read FBuggyShaderShadowMap;
Public property BuggyGLSLConstStruct: boolean read FBuggyGLSLConstStruct;
Public property BuggyFBOMultiSampling: boolean read FBuggyFBOMultiSampling;
Public property BuggySwapNonStandardViewport: boolean read FBuggySwapNonStandardViewport;
Public property BuggyDepth32: boolean read FBuggyDepth32;

Description

Methods

Public constructor Create(const VersionString, AVendor, ARenderer: string);
 

Properties

Public property Vendor: string read FVendor;

Vendor that created the OpenGL implemenetation. This is just glGetString(GL_VENDOR).

Public property Renderer: string read FRenderer;

Renderer (GPU model, or software method used for rendering) of the OpenGL. This is just glGetString(GL_RENDERER).

Public property Mesa: boolean read FMesa;

Are we using Mesa (http://mesa3d.org/). Detected using VendorSpecific information (extracted by base TGenericGLVersion), this allows us to also detect Mesa version.

Public property MesaMajor: Integer read FMesaMajor;
 
Public property MesaMinor: Integer read FMesaMinor;
 
Public property MesaRelease: Integer read FMesaRelease;
 
Public property VendorATI: boolean read FVendorATI;

ATI GPU with ATI drivers.

Public property Fglrx: boolean read FFglrx;

ATI GPU with ATI drivers on Linux.

Public property VendorNVidia: boolean read FVendorNVidia;

NVidia GPU with NVidia drivers.

Public property VendorIntel: boolean read FVendorIntel;

Intel GPU with Intel drivers.

Public property BuggyPointSetAttrib: boolean read FBuggyPointSetAttrib;

Buggy GL_POINT_BIT flag for glPushAttrib (Mesa DRI Intel bug).

Observed on Ubuntu 8.10 on computer "domek". It seems a bug in upstream Mesa 7.2, as it's reproducible with version from http://mesa3d.org/. Seemingly reproducible only with "DRI Intel" (not reproducible on "chantal" with upstream Mesa 7.2).

Reported to Ubuntu as https://bugs.launchpad.net/ubuntu/+source/mesa/+bug/312830, let them report upstream if needed. Not observed with Mesa 7.6 in Ubuntu 10.4.

Public property BuggyDrawOddWidth: boolean read FBuggyDrawOddWidth;

Buggy drawing of images with odd width (fglrx (ATI on Linux) bug).

I observe this under Debian testing after upgrading fglrx from 8-12-4 to 9-2-2. I know the bug wasn't present in 8-12-4 (and some other < 8-12-4 that I previously used), and it is in 9-2-2.

I also see this on Mac OS X with the same GPU (driver GL_VERSION: 2.0 ATI-1.4.56, GL_RENDERER: ATI Radeon X1600 OpenGL Engine). Although it's less common on Mac OS X, but can be seen with demo_models/x3d/rendered_texture.x3dv: open it, then make some operation that saves screen, e.g. open dialog by Ctrl+O.

Precisely, the problem is for images with size like 819 x 614. Drawing them by glDrawPixels (including the case when you put this in display list) requires glPixelStorei(GL_UNPACK_ALIGNMENT, 1) (as our TRGBImage is not aligned). And on GPUs with BuggyDrawOddWidth, such glDrawPixels will simply draw a random mess of colors on the screen, like some memory garbage. (Note that the image is actually correct, even capturing it by glReadPixels works Ok; only drawing of it fails.)

As far as I tested, this doesn't seem related to actual GL_UNPACK_ALIGNMENT (glPixelStorei(GL_UNPACK_ALIGNMENT, 4) may also produce the bug, e.g. when used with ImageDrawPart trying to draw subimage with odd width).

Public property BuggyGenerateMipmap: boolean read FBuggyGenerateMipmap;

Buggy glGenerateMipmapEXT (Mesa and Intel(Windows) bug).

This was observed with software (no direct) rendering with 7.0.2 (segfaults) and 7.2.? (makes X crashing; sweet). With Mesa 7.5.1 (but tested only with radeon and radeonhd, so possibly it's not really related to Mesa version! Reports welcome) no problems.

Public property BuggyFBOCubeMap: boolean read FBuggyFBOCubeMap;

Buggy generation of cube maps on FBO (Intel(Windows) bug).

Symptoms: Parts of the cube map texture are uninitialized (left magenta). Reproducible with view3dscene on demo_models/cube_environment_mapping/cubemap_generated_in_dynamic_world.x3dv . Using separate FBO for each cube map face doesn't help (actually, makes it worse, there's more magenta), so it's not about being unable to do RenderToTexture.SetTexture multiple times.

Observed, and this workaround is needed, at least on:

  • Version string: 2.1.0 - Build 8.15.10.2104

  • Vendor: Intel

  • Renderer: Intel(R) HD Graphics

Public property BuggyGenerateCubeMap: boolean read FBuggyGenerateCubeMap;

Buggy generation of cube maps at all (Intel(Windows) bug).

Symptoms: Parts of the cube map texture are uninitialized (left magenta). Reproducible with view3dscene on demo_models/cube_environment_mapping/cubemap_generated_in_dynamic_world.x3dv . This is worse then BuggyFBOCubeMap, magenta is always seen at positiveX part of the cube map.

Observed, and this workaround is needed, at least on:

  • Version string: 3.3.0 - Build 8.15.10.2778

  • Vendor: Intel

  • Renderer: Intel(R) HD Graphics 4000

Public property BuggyLightModelTwoSide: boolean read FBuggyLightModelTwoSide;

Buggy GL_LIGHT_MODEL_TWO_SIDE = GL_TRUE behavior (ATI(Linux) bug). See [https://sourceforge.net/apps/phpbb/vrmlengine/viewtopic.php?f=3&t=14]

Public property BuggyLightModelTwoSideMessage: string read FBuggyLightModelTwoSideMessage;
 
Public property BuggyVBO: boolean read FBuggyVBO;

Buggy VBO (Intel(Windows) bug).

Public property BuggyShaderShadowMap: boolean read FBuggyShaderShadowMap;

Buggy shadow2DProj in some situations (ATI(Linux) bug).

Public property BuggyGLSLConstStruct: boolean read FBuggyGLSLConstStruct;

Buggy GLSL "const in gl_Xxx" (NVidia bug). Segfaults at glCompileShader[ARB] on GLSL declarations like "const in gl_MaterialParameters material". Affects some NVidia drivers on Linux (like version 295.49 in Debian testing on 2012-06-02).

Public property BuggyFBOMultiSampling: boolean read FBuggyFBOMultiSampling;

Buggy (looks like wireframe) FBO rendering to the multi-sampling texture (ATI(Windows) and Intel(Windows) bug). This makes our screen effects broken on multi-sampled contexts.

Public property BuggySwapNonStandardViewport: boolean read FBuggySwapNonStandardViewport;

Buggy swap buffers when glViewport does not contain whole window (ATI(Linux) bug).

Public property BuggyDepth32: boolean read FBuggyDepth32;

Buggy 32-bit depth buffer, 24-bit depth buffer works Ok (Mesa on ATI (Linux) bug).


Generated by PasDoc 0.13.0 on 2013-08-17 21:27:12