Hi,
I have been unable to build a VM with working B3D acceleration from either SourceForge or Ian's sources.
With the SF sources, I wasn't able to build a VM at all. There were a ton of warnings about control reaching the end of a non-void function. The errors that stopped the build process were
B3DAcceleratorPlugin/sqUnixOpenGL.lo: In function `glGetIntProperty': /home/schwa/squeakvm/build/../platforms/unix/misc/../../../platforms/unix/plugins/B3DAcceleratorPlugin/sqUnixOpenGL.c:330: multiple definition of `glGetIntProperty' B3DAcceleratorPlugin/sqOpenGLRenderer.lo:/home/schwa/squeakvm/build/../platforms/unix/misc/../../../platforms/Cross/plugins/B3DAcceleratorPlugin/sqOpenGLRenderer.c:654: first defined here /usr/bin/ld: Warning: size of symbol `glGetIntProperty' changed from 909 to 547 in B3DAcceleratorPlugin/sqUnixOpenGL.lo B3DAcceleratorPlugin/sqUnixOpenGL.lo: In function `glSetIntProperty': /home/schwa/squeakvm/build/../platforms/unix/misc/../../../platforms/unix/plugins/B3DAcceleratorPlugin/sqUnixOpenGL.c:361: multiple definition of `glSetIntProperty' B3DAcceleratorPlugin/sqOpenGLRenderer.lo:/home/schwa/squeakvm/build/../platforms/unix/misc/../../../platforms/Cross/plugins/B3DAcceleratorPlugin/sqOpenGLRenderer.c:709: first defined here /usr/bin/ld: Warning: size of symbol `glSetIntProperty' changed from 1134 to 753 in B3DAcceleratorPlugin/sqUnixOpenGL.lo collect2: ld returned 1 exit status make: *** [B3DAcceleratorPlugin.la] Error 1
Giving up on that, I downloaded Ian's sources and gave them a try. I tried both using his tree as-is, and with a src/ directory generated by VMMaker. With VMMaker, I tried to build B3DAcceleratorPlugin as both an internal and an external plugin. In all 3 cases, the result was a working VM without B3D hardware acceleration.
The problem is the failure of the line p= interpreterProxy->ioLoadFunctionFrom("stDisplay", NULL); in sqUnixOpenGL.c
One confusing thing is that stDisplay doesn't seem to be a function. Is some initialization function supposed to stash stDisplay (the one from sqXWindow.c) in a primitive table so that the accelerator plugin can find it? If so, this isn't happening.
Help! Joshua
On Fri, 28 Jun 2002, Joshua 'Schwa' Gargus wrote:
The problem is the failure of the line p= interpreterProxy->ioLoadFunctionFrom("stDisplay", NULL); in sqUnixOpenGL.c
One confusing thing is that stDisplay doesn't seem to be a function. Is some initialization function supposed to stash stDisplay (the one from sqXWindow.c) in a primitive table so that the accelerator plugin can find it?
Now if I could remember what I did back then ... I guess I just added stDisplay to the platform.exports file. Nowadays that file is named differently, though.
Help!
Not much help, but maybe that points you in the right direction. In a real distribution, the B3DAcceleratorPlugin should be made external, otherwise the VM won't run if there are no GL libs.
-- Bert
This set of 3 patchfiles may be applied to Ian's 3.2-3devel tree in order to get hardware accelerated 3d rendering to work. The VM now exports the following two functions: primitiveGetSTDisplay() and primitiveGetSTWindow(). These are used by the B3DAcceleratorPlugin to get Squeak's window and display for OpenGL initialization.
I'm not a unix development guru, so I was unable to create a single patchfile that you can apply at the base of the tree. You'll have to change directory to platforms/unix/... in order to apply the patches.
Thanks Bert!
Joshua
On Sun, Jun 30, 2002 at 11:00:02PM +0200, Bert Freudenberg wrote:
On Fri, 28 Jun 2002, Joshua 'Schwa' Gargus wrote:
The problem is the failure of the line p= interpreterProxy->ioLoadFunctionFrom("stDisplay", NULL); in sqUnixOpenGL.c
One confusing thing is that stDisplay doesn't seem to be a function. Is some initialization function supposed to stash stDisplay (the one from sqXWindow.c) in a primitive table so that the accelerator plugin can find it?
Now if I could remember what I did back then ... I guess I just added stDisplay to the platform.exports file. Nowadays that file is named differently, though.
Help!
Not much help, but maybe that points you in the right direction. In a real distribution, the B3DAcceleratorPlugin should be made external, otherwise the VM won't run if there are no GL libs.
-- Bert
squeak-dev@lists.squeakfoundation.org