View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0007570 | FPC | Packages | public | 2006-10-08 16:30 | 2007-01-01 20:41 |
Reporter | Michalis Kamburelis | Assigned To | Florian | ||
Priority | normal | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | ||
OS | Linux | ||||
Fixed in Version | 2.2.0 | ||||
Summary | 0007570: gl unit needs Set8087CW under Linux too | ||||
Description | This is similar to issue 0005914 where I described why Set8087CW call is needed on Win32 at the initialization of GL unit. In short, that's because OpenGL libraries under Win32 may produce (under valid circumstances) some exceptions that should be ignored. As it comes out, under Linux some OpenGL implementations do it too. 1. With NVidia graphic card. I have GeForce FX 5200, using NVidia driver and OpenGL implementation version 1.0-8774. (But I realized that I already saw this bug on other NVidia cards and with older driver versions). If you try to create a context without depth buffer, then the first try to set this context as current will result in div by zero exception. This is reproducible on my system with opengl package examples. glxtest fails inside glXMakeCurrent call. bounce (the only GLUT test that doesn't request depth buffer) fails inside glutCreateWindow (this makes sense, since glutCreateWindow calls glXMakeCurrent internally). 2. Open-source Radeon drivers may also cause this --- I don't have any simple example to reproduce this, but it was experienced Daniel Mantione when running my game "The Castle". The graphic card was Radeon Mobility M7. Error occured as soon as "New Game" was chosen: EDivByZero was raised from inside of glCallList inside TVRMLFlatSceneGL.SSS_RenderShapeState. Disabling fp exceptions fixed the problem. Summary: we have to make Set8087CW call in the initialization of GL unit for Linux too. Probably FreeBSD also requires this (since NVidia OpenGL on FreeBSD probably also causes this problem). I think that the safest solution is to make Set8087CW($133F); just work on all systems (i.e., remove the "$IFDEF WIN32" around it). | ||||
Tags | No tags attached. | ||||
Fixed in Revision | 4834 | ||||
FPCOldBugId | |||||
FPCTarget | |||||
Attached Files |
|
Date Modified | Username | Field | Change |
---|---|---|---|
2006-10-08 16:30 | Michalis Kamburelis | New Issue | |
2006-10-08 18:36 | Florian | Fixed in Revision | => 4834 |
2006-10-08 18:36 | Florian | Status | new => resolved |
2006-10-08 18:36 | Florian | Fixed in Version | => 2.1.1 |
2006-10-08 18:36 | Florian | Resolution | open => fixed |
2006-10-08 18:36 | Florian | Assigned To | => Florian |
2007-01-01 20:41 | Florian | Status | resolved => closed |