Project

General

Profile

Bug #37

opengl differences between builds

Added by Kevin O'Dwyer 7 months ago. Updated 6 months ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
OpenGL
Target version:
-
Start date:
02/28/2021
Due date:
% Done:

0%

Estimated time:

Description

While comparing OpenGL functionality between x86 build and x64 build I came across the following differences.

The files are from OpenGL example programs circa 1995.
https://www.opengl.org/archives/resources/code/samples/glut_examples/progs.html

I have put the programs into a zip file attached to this bug report.
Along with glu.dll, glut.dll and OpenGL.dll

hello2rts.exe

x86
WARING: Unexpected feedback token 0x0 (0).
wine: Unhandled page fault on write access to 0x00000008 at address 0x403bbb (thread 0009), starting debugger...
Can't attach process 0008: error 5
Boxedwine shutdown

x64
Pixel Format: 32 bit (8888) accelerated:double buffered depth=0 stencil=8 accum=64
glInterleavedArrays no supported

shadowfun.exe

x86
ERROR: Unexpected feedback token 0x0 (0).

x64
works fine

trdemo.exe
the rendering of the spheres is different (but not necessary wrong) between x86 and x64

The following programs did not work in either build. It may be because they are not supported by the version of the driver used rather than due to a bug in boxedwine.

cube.exe
white screen displayed with x86 and x64

fogtst.exe
white screen displayed with x86 and x64

offset.exe
white screen displayed with x86 and x64


Files

differences.zip (567 KB) differences.zip Kevin O'Dwyer, 02/28/2021 04:40 PM

History

#1

Updated by James Bryant 6 months ago

"WARING: Unexpected feedback token 0x0 (0)."

The glFeedbackBuffer call sets the buffer that will be rendered into then glRenderMode needs to be called and it will return how much was written into it. Before the fix glFeedbackBuffer assumed the buffered was filled and it marshalled it right away. Now the feedback buffer will be marshalled during the glRenderMode call.

"glInterleavedArrays no supported"

This has now been implemented on all platforms.

"white screen displayed with x86 and x64"

I'm still not sure why this happens. Currently Boxedwine will create it's first Window with the SDL_WINDOW_HIDDEN flag set and will show the Window later once it looks like the app is using it or after a timeout. But these OpenGL demos do not work well if that first Window is hidden. I'm not sure if Boxedwine is doing something wrong or if this is just how things work. The fix for this was to implement a new command line argument, -showWindowImmediately, as well as a corresponding UI checkbox. This flag will prevent Boxedwine from using the SDL_WINDOW_HIDDEN flag when creating the Window. The reason I don't this by default is that it doesn't seem affect any games that I have seen, and a lot of Direct3D games which Wine will translate to OpenGL, create multiple Windows when starting in order to test the capabilities of OpenGL. This results in Windows being created and destroyed quickly when the apps starts and looks pretty bad.

With that new flag and the other fixes, all the demos attached to this issue now work for both x86 and x64.

#2

Updated by James Bryant 6 months ago

  • Status changed from New to Resolved

This has been checked into master.

Also available in: Atom PDF