btw, to rebind to right version of glXGetProcAddress(),
try
glXGetProcAddress("glXGetProcAddress")

:)

i do something similar to this for windows.

On 19 February 2012 14:57, Igor Stasenko <[email protected]> wrote:
> On 18 February 2012 04:15, Javier Pimás <[email protected]> wrote:
>> After one day of very low level debugging I found part of the problem. I'll
>> explain because maybe I'm doing something wrong.
>>
>> There seem to be a duplicated load of the opengl library, one for statically
>> linked calls and other dynamically loaded.
>>
>> I tried in gdb
>>
>> $> p listVisuals()
>> which calls directly to XGetVisualInfo and worked (found ~84 visuals).
>>
>> then I tried something more interesting, by manually calling
>> display_ioGLcreateContext from gdb, which calls glXChooseVisual. And it
>> worked again.
>>
>> After much debugging, I found that loading glXGetProcAddress dynamically
>> with dlsym from /usr/lib/libGL.so gave an address different to the one gdb
>> gives if directly doing
>>
>> $> p glXGetProcAddress("glXChooseVisual")
>>
>> so there are 2 glXGetProcAddress. This is because one is loaded with dlsym
>> (1) and the other is loaded automatically because the vm is linked against
>> libGL (2). Calling (1) to get addresses of gl functions gives different
>> addresses for all functions than calling (2).
>>
>> Calling glXChooseVisual with the address fetched by (1) fails, but if using
>> (2) it works. This is really strange to me. The way to fix it is to get
>> glXGetProcAddress from NativeBoost VMModule instead of '/usr/lib/libGL.so'.
>>
>> Now with this I have the opengl example almost working in linux (I hope).
>>
> I hoped that it is not so at least on Linux.
>
> But now , you see yourself, why i had to customize a "make call" and
> function lookup logic
> in OpenGL API. Exactly because of that.
> One should use glXGetProcAddress for fetching the function pointers,
> but in addition to that,
> depending on context which is currently active, a different
> function(s) can be available (or not).
> So, it is late bound (similar to per-class dictionary in smalltalk).
> This is why every instance of NBOpenGLAPI holds a list of function
> pointers and fills them dynamically.
>
>> On Sun, Feb 12, 2012 at 4:23 AM, Igor Stasenko <[email protected]> wrote:
>>>
>>> ok, so
>>>
>>> If no conforming visual exists, NULL is returned.
>>> It is hard to imagine, that these attributes not supported
>>>
>>>  {GLX_RGBA. GLX_DEPTH_SIZE.
>>>  24.
>>> GLX_DOUBLEBUFFER. 0}
>>>
>>> the code seems to be fine.
>>>
>>> This is what i found:
>>>
>>> -------
>>> http://www.opengl.org/wiki/Programming_OpenGL_in_Linux:_GLX_and_Xlib
>>>
>>> If glXChooseVisual returns with success, the visual's id will be
>>> output. If NULL is returned, there is no visual that fulfills your
>>> needs. In that case, check the output of glxinfo again. Maybe you have
>>> to use a different depth buffer size (GLX_DEPTH_SIZE, 16 instead of
>>> GLX_DEPTH_SIZE, 24), or you could even have to remove the
>>> GLX_DEPTH_SIZE (or the GLX_DOUBLEBUFFER) entry. This should be
>>> considered especially if you want to create programs not only for your
>>> computer, but for other ones: You should code your program in a way
>>> that it can check a list of different combinations of visual
>>> attributes, because the capabilities depend heavily on the hardware.
>>> -----
>>> They also using
>>> vi = glXChooseVisual(dpy, 0, att);
>>>
>>> second argument = 0. not #defaultScreen.
>>>
>>
>> yes, I tried all this. first with 0, then with defaultScreen, which returns
>> 0.
>>
>>>
>>> On 10 February 2012 19:59, Javier Pimás <[email protected]>
>>> wrote:
>>> > yes, notice that it is in a different
>>> > repo: http://www.squeaksource.com/NBXLib
>>> >
>>> >
>>> > On Fri, Feb 10, 2012 at 3:53 PM, Igor Stasenko <[email protected]>
>>> > wrote:
>>> >>
>>> >> On 10 February 2012 19:48, Javier Pimás <[email protected]>
>>> >> wrote:
>>> >> > To load NBOpenGL-X package you need to load NBXLib-core first
>>> >> >
>>> >> i don't see it. did you uploaded it?
>>> >>
>>> >> >
>>> >> > On Fri, Feb 10, 2012 at 3:39 PM, Igor Stasenko <[email protected]>
>>> >> > wrote:
>>> >> >>
>>> >> >> Btw, javier i cannot load your package to check what you did:
>>> >> >>
>>> >> >> This package depends on the following classes:
>>> >> >>  NBXLibConstants
>>> >> >> You must resolve these dependencies before you will be able to load
>>> >> >> these definitions:
>>> >> >>  NBGLXContextDriver
>>> >> >>  supportsCurrentPlatform
>>> >> >>  createContext:
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >> On 10 February 2012 19:34, Igor Stasenko <[email protected]> wrote:
>>> >> >> > On 10 February 2012 19:19, Lawson English <[email protected]>
>>> >> >> > wrote:
>>> >> >> >> Is that code even ready for consumption?
>>> >> >> >>
>>> >> >> >> I was told that until there is a new ConfigurationOfNBOpenGL
>>> >> >> >> ready,
>>> >> >> >> to
>>> >> >> >> not
>>> >> >> >> load the new packages.
>>> >> >> >>
>>> >> >> >
>>> >> >> > you could try :)
>>> >> >> >
>>> >> >> > but this is what i working on now (slowly integrating the parts of
>>> >> >> > Javier's code,
>>> >> >> > because not everything which he did i like ;)
>>> >> >> >
>>> >> >> >
>>> >> >> >> L.
>>> >> >> >>
>>> >> >> >>
>>> >> >> >> On 2/10/12 10:12 AM, Javier Pimás wrote:
>>> >> >> >>
>>> >> >> >> I'm trying to create an OpenGL context on linux but
>>> >> >> >> glxChooseVisual
>>> >> >> >> fails.
>>> >> >> >> Maybe there's someone there experienced with this that can help.
>>> >> >> >>
>>> >> >> >> The code I'm trying is:
>>> >> >> >>
>>> >> >> >> display := NBXLibDisplay open.
>>> >> >> >> window := display defaultRootWindow.
>>> >> >> >> visualInfo := NBXLibVisualInfo fromPointer: (gl chooseVisual:
>>> >> >> >> display
>>> >> >> >> screen: display defaultScreen attributes: {GLX_RGBA.
>>> >> >> >> GLX_DEPTH_SIZE.
>>> >> >> >> 24.
>>> >> >> >> GLX_DOUBLEBUFFER. 0} asWordArray).
>>> >> >> >> ...
>>> >> >> >>
>>> >> >> >> but chooseVisual returns a null pointer. I even tried putting an
>>> >> >> >> array
>>> >> >> >> with
>>> >> >> >> only 0 on attributes but didn't work either (and these attributes
>>> >> >> >> should be
>>> >> >> >> supported).
>>> >> >> >>
>>> >> >> >> Any idea of what could be wrong? The code is available to test in
>>> >> >> >> squeaksource, you need nativeboost+NBXLib to try
>>> >> >> >>
>>> >> >> >> Cheers,
>>> >> >> >> Javier
>>> >> >> >>
>>> >> >> >> --
>>> >> >> >> Lic. Javier Pimás
>>> >> >> >> Ciudad de Buenos Aires
>>> >> >> >>
>>> >> >> >>
>>> >> >> >
>>> >> >> >
>>> >> >> >
>>> >> >> > --
>>> >> >> > Best regards,
>>> >> >> > Igor Stasenko.
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >> --
>>> >> >> Best regards,
>>> >> >> Igor Stasenko.
>>> >> >>
>>> >> >
>>> >> >
>>> >> >
>>> >> > --
>>> >> > Lic. Javier Pimás
>>> >> > Ciudad de Buenos Aires
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> Best regards,
>>> >> Igor Stasenko.
>>> >>
>>> >
>>> >
>>> >
>>> > --
>>> > Lic. Javier Pimás
>>> > Ciudad de Buenos Aires
>>>
>>>
>>>
>>> --
>>> Best regards,
>>> Igor Stasenko.
>>>
>>
>>
>>
>> --
>> Lic. Javier Pimás
>> Ciudad de Buenos Aires
>
>
>
> --
> Best regards,
> Igor Stasenko.



-- 
Best regards,
Igor Stasenko.

Reply via email to