Re: 64 bit FFI (was: porting Croquet to Squeak6.0 alpha...)

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Re: 64 bit FFI (was: porting Croquet to Squeak6.0 alpha...)

Bert Freudenberg
 
What's the actual error in 32 bits?

Also, make sure that FFI works at all - I think there are test examples in the FFI package.

- Bert -

On Tue, Mar 24, 2020 at 11:59 AM gettimothy <[hidden email]> wrote:
Hi Bert,

I got the latest 5.3 32 bit installed on the old laptop.

on linux, glxgears works.

OpenGL example does not work.

Same error as on the 64 bit box:


glPixelStorei: pname with: param
"This method was automatically generated."
"void glPixelStorei(GLenum pname, GLint param);"
<apicall: void 'glPixelStorei' (ulong long) module: '#openGLLibraryName'>
^self externalCallFailed

cheers,

tty

---- On Wed, 11 Mar 2020 18:57:39 -0400 Bert Freudenberg <[hidden email]> wrote ----

I'd suggest to get OpenGL working outside of Croquet first:


Step 1: Verify this works in 32 bits. (assuming you are doing this on Linux, you can run 32 bit Squeak side-by-side with the 64 bit one)
Step 2: Make it work in 64 bits.

The second step requires that you understand how FFI works, and how it handles e.g. pointers and integer sizes.
I am assuming we do have a working 64 bit FFI, at least for x86_64 machines.

E.g. the OGLUnix>>glExtGetProcAddress: method returns a pointer. On a 32 bit system, that fits into a 'ulong' which is 32 bits. On a 64 bit system, a pointer is 64 bits wide so it would not fit into a 32 bit word. Now I don't know how many bits 'ulong' has in our 64 bit FFI, but that declaration may have to change. Etc. pp.

If you have questions about FFI then those are best directed at the vm-dev list since it is dealing with VM-level interfaces. CC'ing, please follow up there.

- Bert -

On Wed, Mar 11, 2020 at 2:54 PM gettimothy via Squeak-dev <[hidden email]> wrote:

Okey dokey,

Poking along, there is a stray glyph in OGLUnix openGLLibraryName after
openGLLibraryName
^Smalltalk osVersion = 'linux'
ifTrue: ['libGL.so.1']
ifFalse: ['GL']
I removed it in my install and got past that error.

Working exclusively with Croquet(Master)...



My next error is in OGLUnixX11LE(OpenGL)>>glMatrixMode: 
glMatrixMode: mode
"This method was automatically generated."
"void glMatrixMode(GLenum mode);"
<apicall: void 'glMatrixMode' (ulong) module: '#openGLLibraryName'>
^self externalCallFailed
The <apicall:...> fails

How to think about this?

Is Croquet behind OpenGL latest?
Would teaching myself OpenGL programming be of use to the Croquet project?

cheers,

tty