Xpra: Ticket #226: opengl rendering on osx

split from #147

I thought that buiding (py)gtkgl on osx would be a good stepping stone for eventually getting it to work/build on win32...

All these instructions are from within a gtk-osx jhbuild shell (tested with xcode 3.2 on osx 10.5):


gtkglext

Some good info on libtool issues can be found here.
So then end up with:

export CXX=/usr/bin/c++-4.2
export CC=/usr/bin/gcc-4.2
export OBJC=/usr/bin/gcc-4.2
gtkdocize
autoreconf -is
./configure --prefix ${JHBUILD_PREFIX} \
            --libdir ${JHBUILD_PREFIX}/lib \
            --with-gdktarget=quartz \
            --build=i386-darwin
make
make install

(may sound simple but this was anything but)



pygtkglext The real problems start with pygtkglext. There are two ways of building it: distutils and autotools based, none of which work. Again, we use the more up to date version from git (not that the 1.1 makes any difference..):

git clone git://git.gnome.org/pygtkglext
cd pygtkglext

pygtkglext distutils

we remove the broken pkgconfig check by commenting out the two lines:

if not pkgc_version_check('pygtk-2.0', 'PyGTK', PYGTK_REQUIRED_VERSION):
    raise SystemExit, "Aborting"

(you should really check that you do have pygtk-2.0 correctly installed at this point and that you have the pkgconfig file it would normally check against, ie: $JHBUILD_PREFIX/lib/pkgconfig/pygtk-2.0.pc)

Which means that it doesn't find codegen... (really not obvious). So we tell it where to find it:

PYTHONPATH=$JHBUILD_PREFIX/share/pygobject/2.0/:$PYTHONPATH python2.7 ./setup.py install \
        --prefix=$JHBUILD_PREFIX

And those values only get mentioned in the gdkglversion section of gtkglext/docs/reference/gtkglext/gtkglext-sections.txt, and in gtkglext/gdk/gdkglversion.c we can find functions that look like they would almost match: gdk_gl_get_major_version, gdk_gl_get_minor_version and gdk_gl_get_micro_version. So we replace the code in gtk/gdkgl/gdkglmodule.c like so:

    tuple = Py_BuildValue("(iii)",
                          gdk_gl_get_major_version(),   /* gdkglext_major_version */
                          gdk_gl_get_minor_version(),   /* gdkglext_minor_version */
                          gdk_gl_get_micro_version());  /* gdkglext_micro_version */

Which can be fixed by adding /usr/X11/include to the include path in setup.py:

GLOBAL_INC.append("/usr/X11/include")

I give up...

pygtkglext autotools It's a mess - don't go there. Missing macros, out of date docs, etc.



Sat, 22 Dec 2012 07:03:15 GMT - Antoine Martin: status, description changed


Sat, 22 Dec 2012 07:26:08 GMT - Antoine Martin: description changed


Sat, 22 Dec 2012 09:45:17 GMT - Antoine Martin: description changed


Mon, 11 Feb 2013 16:36:01 GMT - Antoine Martin: status changed; resolution set

OSX is really unpleasant to deal with, GL should be the last of our worries. Not going to bother.


Sun, 07 Jul 2013 13:15:55 GMT - Antoine Martin:

Another attempt using autotools: gtkglext:

by doing this:

sed -i -e 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/g' configure.ac

And ignore errors in examples (missing pangoft2) - or remove "examples" from top-level Makefile

Notes: on 10.6.x, we were getting these errors:

Undefined symbols:
  "_objc_msgSend", referenced from:
    (... lots of places ...)

This was solved by adding:

to GL_LIBS in the gdk/quartz/Makefile (there probably is a better/more correct way, but this worked). (note: you may need to make clean && make)


pygtkglext from git:

Which is very odd because this symbol exists:

$ nm /Users/MacAdmin/gtk/inst/lib/libgdkglext-quartz-1.0.0.dylib | grep __gdk_gl_context_destroy
000478ca t __gdk_gl_context_destroy

And our _gdkgk.so references this library:

$ otool  -L /Users/MacAdmin/gtk/inst/lib/python2.7/site-packages/gtk-2.0/gtk/gdkgl/_gdkgl.so | grep gl
/Users/MacAdmin/gtk/inst/lib/python2.7/site-packages/gtk-2.0/gtk/gdkgl/_gdkgl.so:
	/Users/MacAdmin/gtk/inst/lib/libgtkglext-quartz-1.0.0.dylib (compatibility version 201.0.0, current version 201.0.0)
	/Users/MacAdmin/gtk/inst/lib/libgdkglext-quartz-1.0.0.dylib (compatibility version 201.0.0, current version 201.0.0)
	/Users/MacAdmin/gtk/inst/lib/libglib-2.0.0.dylib (compatibility version 3401.0.0, current version 3401.3.0)

Sun, 07 Jul 2013 14:04:31 GMT - Antoine Martin:

If at first you don't succeed, try again.. and again, and again.

Eventually, got it to build and load, use the attached files to replace the ones shipped with pygtkglext (in gtk/gdkgl). We remove lots of stuff that does not build (either because pygtkglext has not kept up with gtkglext or because they are missing from the quartz backend).

The resulting shared object loads, though we are missing a bunch of constants so we still have to patch a few places to get it to run..

Here is the result:

$ python xpra//client/gl/gl_check.py
2013-07-07 14:57:25,510 pygdkglext version=(1, 1, 0)
2013-07-07 14:57:25,510 pygdkglext OpenGL version=(1, 0)
2013-07-07 14:57:25,552 using display mode: []
2013-07-07 14:57:25,678 OpenGL_accelerate module loaded
2013-07-07 14:57:26,295 OpenGL Version: 2.1 APPLE
2013-07-07 14:57:26,442 GL Extension GL_ARB_shader_objects available
2013-07-07 14:57:26,500 GL Extension GL_ARB_vertex_array_object unavailable
2013-07-07 14:57:26,513 GL Extension GL_ARB_texture_buffer_object unavailable
2013-07-07 14:57:26,524 GL Extension GL_ARB_framebuffer_object unavailable
2013-07-07 14:57:26,535 GL Extension GL_ARB_map_buffer_range unavailable
2013-07-07 14:57:26,539 GL Extension GL_ARB_copy_buffer unavailable
2013-07-07 14:57:26,541 GL Extension GL_ARB_uniform_buffer_object unavailable
2013-07-07 14:57:26,545 GL Extension GL_ARB_draw_elements_base_vertex unavailable
2013-07-07 14:57:26,547 GL Extension GL_ARB_provoking_vertex unavailable
2013-07-07 14:57:26,550 GL Extension GL_ARB_sync unavailable
2013-07-07 14:57:26,552 GL Extension GL_ARB_texture_multisample unavailable
2013-07-07 14:57:26,557 GL Extension GL_ARB_blend_func_extended unavailable
2013-07-07 14:57:26,559 GL Extension GL_ARB_sampler_objects unavailable
2013-07-07 14:57:26,567 GL Extension GL_ARB_timer_query unavailable
2013-07-07 14:57:26,570 GL Extension GL_ARB_vertex_type_2_10_10_10_rev unavailable
2013-07-07 14:57:26,577 GL Extension GL_ARB_draw_indirect unavailable
2013-07-07 14:57:26,581 GL Extension GL_ARB_gpu_shader_fp64 unavailable
2013-07-07 14:57:26,584 GL Extension GL_ARB_shader_subroutine unavailable
2013-07-07 14:57:26,586 GL Extension GL_ARB_tessellation_shader unavailable
2013-07-07 14:57:26,593 GL Extension GL_ARB_transform_feedback2 unavailable
2013-07-07 14:57:26,595 GL Extension GL_ARB_transform_feedback3 unavailable
2013-07-07 14:57:26,599 GL Extension GL_ARB_ES2_compatibility unavailable
2013-07-07 14:57:26,601 GL Extension GL_ARB_get_program_binary unavailable
2013-07-07 14:57:26,603 GL Extension GL_ARB_separate_shader_objects unavailable
2013-07-07 14:57:26,610 GL Extension GL_ARB_vertex_attrib_64bit unavailable
2013-07-07 14:57:26,613 GL Extension GL_ARB_viewport_array unavailable
2013-07-07 14:57:26,616 GL Extension GL_ARB_base_instance unavailable
2013-07-07 14:57:26,620 GL Extension GL_ARB_transform_feedback_instanced unavailable
2013-07-07 14:57:26,626 GL Extension GL_ARB_internalformat_query unavailable
2013-07-07 14:57:26,629 GL Extension GL_ARB_shader_atomic_counters unavailable
2013-07-07 14:57:26,632 GL Extension GL_ARB_shader_image_load_store unavailable
2013-07-07 14:57:26,635 GL Extension GL_ARB_texture_storage unavailable
2013-07-07 14:57:26,642 GL Extension GL_ARB_clear_buffer_object unavailable
2013-07-07 14:57:26,644 GL Extension GL_ARB_compute_shader unavailable
2013-07-07 14:57:26,646 GL Extension GL_ARB_copy_image unavailable
2013-07-07 14:57:26,661 GL Extension GL_KHR_debug unavailable
2013-07-07 14:57:26,677 GL Extension GL_ARB_framebuffer_no_attachments unavailable
2013-07-07 14:57:26,680 GL Extension GL_ARB_internalformat_query2 unavailable
2013-07-07 14:57:26,681 GL Extension GL_ARB_invalidate_subdata unavailable
2013-07-07 14:57:26,683 GL Extension GL_ARB_multi_draw_indirect unavailable
2013-07-07 14:57:26,686 GL Extension GL_ARB_program_interface_query unavailable
2013-07-07 14:57:26,689 GL Extension GL_ARB_shader_storage_buffer_object unavailable
2013-07-07 14:57:26,692 GL Extension GL_ARB_texture_buffer_range unavailable
2013-07-07 14:57:26,696 GL Extension GL_ARB_texture_storage_multisample unavailable
2013-07-07 14:57:26,698 GL Extension GL_ARB_texture_view unavailable
2013-07-07 14:57:26,699 GL Extension GL_ARB_vertex_attrib_binding unavailable
2013-07-07 14:57:26,701 found valid OpenGL version: 2.1
2013-07-07 14:57:26,701 OpenGL extensions found: GL_ARB_transpose_matrix, GL_ARB_vertex_program, GL_ARB_vertex_blend, \
 GL_ARB_window_pos, GL_ARB_shader_objects, GL_ARB_vertex_shader, GL_ARB_shading_language_100, GL_EXT_multi_draw_arrays, \
 GL_EXT_clip_volume_hint, GL_EXT_rescale_normal, GL_EXT_draw_range_elements, GL_EXT_fog_coord,  \
 GL_EXT_gpu_program_parameters, GL_EXT_geometry_shader4, GL_EXT_transform_feedback, GL_APPLE_client_storage, \
 GL_APPLE_specular_vector, GL_APPLE_transform_hint, GL_APPLE_packed_pixels, GL_APPLE_fence, \
 GL_APPLE_vertex_array_object, GL_APPLE_vertex_program_evaluators, GL_APPLE_element_array, GL_APPLE_flush_render, \
 GL_APPLE_aux_depth_stencil, GL_NV_texgen_reflection, GL_NV_light_max_exponent, GL_IBM_rasterpos_clip, \
 GL_SGIS_generate_mipmap, GL_ARB_imaging, GL_ARB_point_parameters, GL_ARB_texture_env_crossbar, \
 GL_ARB_texture_border_clamp, GL_ARB_multitexture, GL_ARB_texture_env_add, GL_ARB_texture_cube_map, \
 GL_ARB_texture_env_dot3, GL_ARB_multisample, GL_ARB_texture_env_combine, GL_ARB_texture_compression, \
 GL_ARB_texture_mirrored_repeat, GL_ARB_shadow, GL_ARB_depth_texture, GL_ARB_shadow_ambient, GL_ARB_fragment_program, \
 GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader, GL_ARB_occlusion_query, GL_ARB_point_sprite, \
 GL_ARB_texture_non_power_of_two, GL_ARB_vertex_buffer_object, GL_ARB_pixel_buffer_object, GL_ARB_draw_buffers, \
 GL_ARB_shader_texture_lod, GL_EXT_framebuffer_object, GL_EXT_texture_rectangle, GL_ARB_texture_rectangle, \
 GL_EXT_texture_env_add, GL_EXT_blend_color, GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_texture_lod_bias, \
 GL_EXT_abgr, GL_EXT_bgra, GL_EXT_stencil_wrap, GL_EXT_secondary_color, GL_EXT_blend_func_separate, GL_EXT_shadow_funcs, \
 GL_EXT_stencil_two_side, GL_EXT_texture_compression_s3tc, GL_EXT_texture_compression_dxt1, GL_EXT_texture_sRGB, \
 GL_EXT_blend_equation_separate, GL_EXT_texture_mirror_clamp, GL_EXT_bindable_uniform, GL_EXT_texture_integer, \
 GL_EXT_gpu_shader4, GL_EXT_draw_buffers2, GL_APPLE_flush_buffer_range, GL_APPLE_ycbcr_422, GL_APPLE_float_pixels, \
 GL_ATI_texture_float, GL_ARB_texture_float, GL_ARB_half_float_pixel, GL_APPLE_pixel_buffer, GL_NV_blend_square, \
 GL_ATI_texture_mirror_once, GL_ATI_texture_env_combine3, GL_ATI_separate_stencil, GL_SGIS_texture_edge_clamp, \
 GL_SGIS_texture_lod,
2013-07-07 14:57:26,702 shading language version: 1.20
2013-07-07 14:57:26,702 vendor: Apple Computer, Inc.
2013-07-07 14:57:26,702 renderer: Apple Software Renderer
2013-07-07 14:57:26,764 GLU extensions:
2013-07-07 14:57:26,764 GLU version: 1.3 MacOSX
2013-07-07 14:57:26,765 All the required OpenGL functions are available: glActiveTexture, glTexSubImage2D, glTexCoord2i,  \
 glViewport, glMatrixMode, glLoadIdentity, glOrtho, glEnableClientState, glGenTextures, glDisable, glBindTexture, \
 glPixelStorei, glEnable, glBegin, glFlush, glTexParameteri, glTexImage2D, glMultiTexCoord2i, glVertex2i, glEnd
2013-07-07 14:57:26,765 ERROR: some required OpenGL functions are not available: glGenFramebuffers, glBindFramebuffer, glFramebufferTexture2D
2013-07-07 14:57:26,765 Extension GL_ARB_texture_rectangle is present
2013-07-07 14:57:26,765 Extension GL_ARB_vertex_program is present
2013-07-07 14:57:26,767 GL Extension GL_ARB_fragment_program available
2013-07-07 14:57:26,767 glInitFragmentProgramARB works
2013-07-07 14:57:26,769 GL Extension GL_ARB_texture_rectangle available
2013-07-07 14:57:26,769 glInitTextureRectangleARB works
2013-07-07 14:57:26,772 GL Extension GL_ARB_vertex_program available
2013-07-07 14:57:26,791 All the required OpenGL functions are available: glGenProgramsARB, glDeleteProgramsARB, glBindProgramARB, glProgramStringARB
2013-07-07 14:57:26,791 Texture size GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB=16384

Sun, 07 Jul 2013 14:05:24 GMT - Antoine Martin: attachment set

fixed gdkglext definition file for building on osx


Sun, 07 Jul 2013 14:05:39 GMT - Antoine Martin: attachment set

fixed gdkglext-types definition file for building on osx


Sun, 07 Jul 2013 14:05:51 GMT - Antoine Martin: attachment set

fixed gdkglext override file for building on osx


Mon, 08 Jul 2013 06:20:10 GMT - Antoine Martin: attachment set

our hacked build is missing all the constants - this hardcodes them


Mon, 08 Jul 2013 14:03:16 GMT - Antoine Martin: status, milestone changed; keywords set; resolution deleted


Mon, 08 Jul 2013 14:04:22 GMT - Antoine Martin: owner, status changed

Please let me know if:


Thu, 11 Jul 2013 01:33:56 GMT - Antoine Martin:

From a mac client running with gl (originally recorded in #249):

OpenGL setup failure:
	Traceback (most recent call last):
	  File "xpra/client/gtk2/client.pyc", line 365, in init_opengl
	  File "xpra/client/gl/gl_check.pyc", line 201, in check_support
	  File "gtk/gtkgl/__init__.pyc", line 22, in <module>
	  File "gtk/gtkgl/widget.pyc", line 25, in <module>
	  File "gtk/gtkgl/widget.pyc", line 33, in Widget
	AttributeError: 'module' object has no attribute 'RGBA_TYPE'

Thu, 11 Jul 2013 05:53:20 GMT - Antoine Martin:

(hack): rather than hardcoding each value that is missing when we hit a problem, this hacks all the values from gdkgltokens directly into the python code:

grep "  GDK_GL" ~/gtkglext/gdk/gdkgltokens.h  | \
    sed 's+  GDK_GL_++g' | sed 's+,.*++g' | sed 's+\/\*.*++g' \
    >> ~/pygtkglext/gtk/gdkgl/__init__.py

Fri, 12 Jul 2013 03:01:23 GMT - alas: attachment set

starting osx session with rgb encoding- GL Extensions unavailable


Fri, 12 Jul 2013 03:02:27 GMT - alas:

It looks like the osx client logs GL extensions as unavailable. Attached client logs from starting a session.


Fri, 12 Jul 2013 03:09:18 GMT - Antoine Martin: owner changed

What makes you think it is not available? Looks ok from what I am seeing, no warnings and no errors.

With r3832, we now include all the accelerator functions (optional but useful), so these warnings should now be all gone:

Unable to load ArrayDatatype accelerator from OpenGL_accelerate
Unable to load converters accelerators (wrapper, arraydatatype) from OpenGL_accelerate
Unable to load arrayhelpers accelerator from OpenGL_accelerate
Unable to load nones_formathandler accelerator from OpenGL_accelerate
Unable to load numpy_formathandler accelerator from OpenGL_accelerate

If they are still present in newer builds, please post the output of:

Xpra.app/Contents/Helpers/Python -c \
   "from OpenGL_accelerate.arraydatatype import AsArrayTypedSizeChecked;
from OpenGL_accelerate.wrapper import returnPyArgumentIndex;
from OpenGL_accelerate.arraydatatype import (AsArrayOfType,AsArrayTyped,AsArrayTypedSize)"

(should be empty)


(btw, please don't use RTF unless absolutely necessary, text/plain is better as it is machine parseable, grepable, etc)


Fri, 12 Jul 2013 22:01:42 GMT - alas:

Sorry, I thought the unavailable extensions was NOT expected.

With osx 0.10 r3830 I am still getting a lot of GL Extension GL_blahBlah unavailable messages on start, but I am not getting any of the Unable to load blahBlah from OpenGL_accelerate ... and just to be sure I ran the command you suggested and did indeed get no output.

(and my Mac's TextEdit, for some idiotic reason, doesn't give .txt as a save format option, at least not a readily available option... didn't realize it was a hassle, a spot of extra work and I can make .txt in future)


Sat, 13 Jul 2013 02:47:58 GMT - Antoine Martin:

So, was GL enabled or not? What does session-info show? Any GL windows? GL renderer info?

FYI: you can create plain text files without trouble with just "cat > file.txt" when pasting log samples.


Mon, 15 Jul 2013 21:53:05 GMT - alas:

Without a tray, I'm not aware of a way to get the session info, so I'm not sure how else to check for GL enabling- except from those logs that show when the client is started from the command line.

Many of the extensions show as unavailable, but there does seem to be an OpenGL module available, namely: 2013-07-11 19:31:26,972 OpenGL Version: 2.1 APPLE

From that RTF file:

2013-07-11 19:31:25,685 OpenGL_accelerate module loaded
2013-07-11 19:31:25,803 Unable to load ArrayDatatype accelerator from OpenGL_accelerate
2013-07-11 19:31:25,825 Unable to load converters accelerators (wrapper, arraydatatype) from OpenGL_accelerate
2013-07-11 19:31:25,829 Unable to load arrayhelpers accelerator from OpenGL_accelerate
2013-07-11 19:31:25,840 Unable to load nones_formathandler accelerator from OpenGL_accelerate
2013-07-11 19:31:26,773 Unable to load numpy_formathandler accelerator from OpenGL_accelerate
2013-07-11 19:31:26,972 OpenGL Version: 2.1 APPLE
2013-07-11 19:31:27,089 GL Extension GL_ARB_shader_objects available
2013-07-11 19:31:27,109 GL Extension GL_ARB_vertex_array_object unavailable
2013-07-11 19:31:27,112 GL Extension GL_ARB_texture_buffer_object unavailable
2013-07-11 19:31:27,115 GL Extension GL_ARB_framebuffer_object available
2013-07-11 19:31:27,122 GL Extension GL_ARB_map_buffer_range unavailable
2013-07-11 19:31:27,126 GL Extension GL_ARB_copy_buffer unavailable
2013-07-11 19:31:27,128 GL Extension GL_ARB_uniform_buffer_object unavailable
2013-07-11 19:31:27,132 GL Extension GL_ARB_draw_elements_base_vertex unavailable
2013-07-11 19:31:27,134 GL Extension GL_ARB_provoking_vertex unavailable
2013-07-11 19:31:27,137 GL Extension GL_ARB_sync unavailable
2013-07-11 19:31:27,140 GL Extension GL_ARB_texture_multisample unavailable
2013-07-11 19:31:27,144 GL Extension GL_ARB_blend_func_extended unavailable
2013-07-11 19:31:27,146 GL Extension GL_ARB_sampler_objects unavailable
2013-07-11 19:31:27,158 GL Extension GL_ARB_timer_query unavailable
2013-07-11 19:31:27,160 GL Extension GL_ARB_vertex_type_2_10_10_10_rev unavailable
2013-07-11 19:31:27,168 GL Extension GL_ARB_draw_indirect unavailable
2013-07-11 19:31:27,173 GL Extension GL_ARB_gpu_shader_fp64 unavailable
2013-07-11 19:31:27,176 GL Extension GL_ARB_shader_subroutine unavailable
2013-07-11 19:31:27,180 GL Extension GL_ARB_tessellation_shader unavailable
2013-07-11 19:31:27,187 GL Extension GL_ARB_transform_feedback2 unavailable
2013-07-11 19:31:27,190 GL Extension GL_ARB_transform_feedback3 unavailable
2013-07-11 19:31:27,194 GL Extension GL_ARB_ES2_compatibility unavailable
2013-07-11 19:31:27,196 GL Extension GL_ARB_get_program_binary unavailable
2013-07-11 19:31:27,199 GL Extension GL_ARB_separate_shader_objects unavailable
2013-07-11 19:31:27,206 GL Extension GL_ARB_vertex_attrib_64bit unavailable
2013-07-11 19:31:27,210 GL Extension GL_ARB_viewport_array unavailable
2013-07-11 19:31:27,213 GL Extension GL_ARB_base_instance unavailable
2013-07-11 19:31:27,217 GL Extension GL_ARB_transform_feedback_instanced unavailable
2013-07-11 19:31:27,222 GL Extension GL_ARB_internalformat_query unavailable
2013-07-11 19:31:27,227 GL Extension GL_ARB_shader_atomic_counters unavailable
2013-07-11 19:31:27,230 GL Extension GL_ARB_shader_image_load_store unavailable
2013-07-11 19:31:27,234 GL Extension GL_ARB_texture_storage unavailable
2013-07-11 19:31:27,243 GL Extension GL_ARB_clear_buffer_object unavailable
2013-07-11 19:31:27,245 GL Extension GL_ARB_compute_shader unavailable
2013-07-11 19:31:27,248 GL Extension GL_ARB_copy_image unavailable
2013-07-11 19:31:27,331 GL Extension GL_KHR_debug unavailable
2013-07-11 19:31:27,338 GL Extension GL_ARB_framebuffer_no_attachments unavailable
2013-07-11 19:31:27,343 GL Extension GL_ARB_internalformat_query2 unavailable
2013-07-11 19:31:27,345 GL Extension GL_ARB_invalidate_subdata unavailable
2013-07-11 19:31:27,347 GL Extension GL_ARB_multi_draw_indirect unavailable
2013-07-11 19:31:27,350 GL Extension GL_ARB_program_interface_query unavailable
2013-07-11 19:31:27,354 GL Extension GL_ARB_shader_storage_buffer_object unavailable
2013-07-11 19:31:27,358 GL Extension GL_ARB_texture_buffer_range unavailable
2013-07-11 19:31:27,362 GL Extension GL_ARB_texture_storage_multisample unavailable
2013-07-11 19:31:27,365 GL Extension GL_ARB_texture_view unavailable
2013-07-11 19:31:27,366 GL Extension GL_ARB_vertex_attrib_binding unavailable
2013-07-11 19:31:27,410 GL Extension GL_ARB_fragment_program available
2013-07-11 19:31:27,412 GL Extension GL_ARB_texture_rectangle available
2013-07-11 19:31:27,416 GL Extension GL_ARB_vertex_program available
2013-07-11 19:31:28,069 Attached to tcp:10.0.32.196:1201 (press Control-C to detach)

From the x264 encoding client logs posted in #379: 2013-07-15 12:33:40,460 All the required OpenGL functions are available: glGenProgramsARB, glDeleteProgramsARB, glBindProgramARB, glProgramStringARB

So yes, looks like required OpenGL functions are available.

Complete loading logs:

** Message: pygobject_register_sinkfunc is deprecated (GstObject)
xpra client version 0.10.0
2013-07-15 12:33:39,855 found rencode version 1.0.2
2013-07-15 12:33:39,868 importing ('Keyboard',) from xpra.platform.darwin.keyboard (required=True)
2013-07-15 12:33:39,869 Keyboard=<class 'xpra.platform.darwin.keyboard.Keyboard'>
2013-07-15 12:33:39,876 importing ('do_init', 'make_tray_menu', 'make_native_tray', 'system_bell') from xpra.platform.darwin.gui (required=False)
2013-07-15 12:33:39,888 do_init=<function do_init at 0x3fb07b0>
2013-07-15 12:33:39,888 make_tray_menu=<function make_tray_menu at 0x3fb07f0>
2013-07-15 12:33:39,888 make_native_tray=<function make_native_tray at 0x3fb0830>
2013-07-15 12:33:39,888 system_bell=<function system_bell at 0x3fb0870>
2013-07-15 12:33:39,891 cyxor loaded
2013-07-15 12:33:39,904 get_core_encodings() encs=((True, ['vpx']), (True, ['x264']), (True, ['webp']), (True, ['png', 'png/L', 'png/P', 'jpeg']))
2013-07-15 12:33:39,905 get_core_encodings() encs=((True, ['vpx']), (True, ['x264']), (True, ['webp']), (True, ['png', 'png/L', 'png/P', 'jpeg']))
2013-07-15 12:33:39,907 setup_connection(SocketConnection(('10.0.11.78', 52851) - ('10.0.32.196', 1200)))
** (Xpra:2188): WARNING **: Trying to register gtype '(null)' as flags when in fact it is of type '(null)'
** (Xpra:2188): WARNING **: Trying to register gtype 'glong' as enum when in fact it is of type 'glong'
** (Xpra:2188): WARNING **: Trying to register gtype '(null)' as flags when in fact it is of type '(null)'
** (Xpra:2188): WARNING **: Trying to register gtype '(null)' as enum when in fact it is of type '(null)'
2013-07-15 12:33:39,914 pygdkglext version=(1, 1, 0)
2013-07-15 12:33:39,914 pygdkglext OpenGL version=(1, 0)
2013-07-15 12:33:39,920 using display mode: ['SINGLE']
2013-07-15 12:33:39,951 OpenGL_accelerate module loaded
2013-07-15 12:33:39,956 Using accelerated ArrayDatatype
2013-07-15 12:33:40,212 OpenGL Version: 2.1 APPLE
2013-07-15 12:33:40,300 GL Extension GL_ARB_shader_objects available
2013-07-15 12:33:40,314 GL Extension GL_ARB_vertex_array_object unavailable
2013-07-15 12:33:40,316 GL Extension GL_ARB_texture_buffer_object unavailable
2013-07-15 12:33:40,318 GL Extension GL_ARB_framebuffer_object available
2013-07-15 12:33:40,323 GL Extension GL_ARB_map_buffer_range unavailable
2013-07-15 12:33:40,326 GL Extension GL_ARB_copy_buffer unavailable
2013-07-15 12:33:40,327 GL Extension GL_ARB_uniform_buffer_object unavailable
2013-07-15 12:33:40,330 GL Extension GL_ARB_draw_elements_base_vertex unavailable
2013-07-15 12:33:40,331 GL Extension GL_ARB_provoking_vertex unavailable
2013-07-15 12:33:40,332 GL Extension GL_ARB_sync unavailable
2013-07-15 12:33:40,334 GL Extension GL_ARB_texture_multisample unavailable
2013-07-15 12:33:40,336 GL Extension GL_ARB_blend_func_extended unavailable
2013-07-15 12:33:40,337 GL Extension GL_ARB_sampler_objects unavailable
2013-07-15 12:33:40,342 GL Extension GL_ARB_timer_query unavailable
2013-07-15 12:33:40,343 GL Extension GL_ARB_vertex_type_2_10_10_10_rev unavailable
2013-07-15 12:33:40,349 GL Extension GL_ARB_draw_indirect unavailable
2013-07-15 12:33:40,350 GL Extension GL_ARB_gpu_shader_fp64 unavailable
2013-07-15 12:33:40,353 GL Extension GL_ARB_shader_subroutine unavailable
2013-07-15 12:33:40,355 GL Extension GL_ARB_tessellation_shader unavailable
2013-07-15 12:33:40,358 GL Extension GL_ARB_transform_feedback2 unavailable
2013-07-15 12:33:40,360 GL Extension GL_ARB_transform_feedback3 unavailable
2013-07-15 12:33:40,361 GL Extension GL_ARB_ES2_compatibility unavailable
2013-07-15 12:33:40,363 GL Extension GL_ARB_get_program_binary unavailable
2013-07-15 12:33:40,364 GL Extension GL_ARB_separate_shader_objects unavailable
2013-07-15 12:33:40,371 GL Extension GL_ARB_vertex_attrib_64bit unavailable
2013-07-15 12:33:40,372 GL Extension GL_ARB_viewport_array unavailable
2013-07-15 12:33:40,374 GL Extension GL_ARB_base_instance unavailable
2013-07-15 12:33:40,376 GL Extension GL_ARB_transform_feedback_instanced unavailable
2013-07-15 12:33:40,378 GL Extension GL_ARB_internalformat_query unavailable
2013-07-15 12:33:40,380 GL Extension GL_ARB_shader_atomic_counters unavailable
2013-07-15 12:33:40,382 GL Extension GL_ARB_shader_image_load_store unavailable
2013-07-15 12:33:40,384 GL Extension GL_ARB_texture_storage unavailable
2013-07-15 12:33:40,388 GL Extension GL_ARB_clear_buffer_object unavailable
2013-07-15 12:33:40,389 GL Extension GL_ARB_compute_shader unavailable
2013-07-15 12:33:40,390 GL Extension GL_ARB_copy_image unavailable
2013-07-15 12:33:40,393 GL Extension GL_KHR_debug unavailable
2013-07-15 12:33:40,396 GL Extension GL_ARB_framebuffer_no_attachments unavailable
2013-07-15 12:33:40,398 GL Extension GL_ARB_internalformat_query2 unavailable
2013-07-15 12:33:40,399 GL Extension GL_ARB_invalidate_subdata unavailable
2013-07-15 12:33:40,400 GL Extension GL_ARB_multi_draw_indirect unavailable
2013-07-15 12:33:40,402 GL Extension GL_ARB_program_interface_query unavailable
2013-07-15 12:33:40,404 GL Extension GL_ARB_shader_storage_buffer_object unavailable
2013-07-15 12:33:40,406 GL Extension GL_ARB_texture_buffer_range unavailable
2013-07-15 12:33:40,407 GL Extension GL_ARB_texture_storage_multisample unavailable
2013-07-15 12:33:40,409 GL Extension GL_ARB_texture_view unavailable
2013-07-15 12:33:40,410 GL Extension GL_ARB_vertex_attrib_binding unavailable
2013-07-15 12:33:40,411 found valid OpenGL version: 2.1
2013-07-15 12:33:40,411 OpenGL extensions found: GL_ARB_transpose_matrix, GL_ARB_vertex_program, GL_ARB_vertex_blend, GL_ARB_window_pos, GL_ARB_shader_objects, GL_ARB_vertex_shader, GL_ARB_shading_language_100, GL_EXT_multi_draw_arrays, GL_EXT_clip_volume_hint, GL_EXT_rescale_normal, GL_EXT_draw_range_elements, GL_EXT_fog_coord, GL_EXT_gpu_program_parameters, GL_EXT_geometry_shader4, GL_EXT_transform_feedback, GL_APPLE_client_storage, GL_APPLE_specular_vector, GL_APPLE_transform_hint, GL_APPLE_packed_pixels, GL_APPLE_fence, GL_APPLE_vertex_array_object, GL_APPLE_vertex_program_evaluators, GL_APPLE_element_array, GL_APPLE_flush_render, GL_APPLE_aux_depth_stencil, GL_NV_texgen_reflection, GL_NV_light_max_exponent, GL_IBM_rasterpos_clip, GL_SGIS_generate_mipmap, GL_ARB_imaging, GL_ARB_point_parameters, GL_ARB_texture_env_crossbar, GL_ARB_texture_border_clamp, GL_ARB_multitexture, GL_ARB_texture_env_add, GL_ARB_texture_cube_map, GL_ARB_texture_env_dot3, GL_ARB_multisample, GL_ARB_texture_env_combine, GL_ARB_texture_compression, GL_ARB_texture_mirrored_repeat, GL_ARB_shadow, GL_ARB_depth_texture, GL_ARB_shadow_ambient, GL_ARB_fragment_program, GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader, GL_ARB_occlusion_query, GL_ARB_point_sprite, GL_ARB_texture_non_power_of_two, GL_ARB_vertex_buffer_object, GL_ARB_pixel_buffer_object, GL_ARB_draw_buffers, GL_ARB_shader_texture_lod, GL_ARB_color_buffer_float, GL_ARB_half_float_vertex, GL_ARB_texture_rg, GL_ARB_texture_compression_rgtc, GL_ARB_framebuffer_object, GL_EXT_draw_buffers2, GL_EXT_framebuffer_object, GL_EXT_framebuffer_blit, GL_EXT_texture_rectangle, GL_ARB_texture_rectangle, GL_EXT_texture_env_add, GL_EXT_blend_color, GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_texture_lod_bias, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_stencil_wrap, GL_EXT_texture_filter_anisotropic, GL_EXT_separate_specular_color, GL_EXT_secondary_color, GL_EXT_blend_func_separate, GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, GL_EXT_texture_compression_s3tc, GL_EXT_texture_compression_dxt1, GL_EXT_texture_sRGB, GL_EXT_blend_equation_separate, GL_EXT_texture_mirror_clamp, GL_EXT_bindable_uniform, GL_EXT_texture_integer, GL_EXT_gpu_shader4, GL_EXT_framebuffer_sRGB, GL_EXT_provoking_vertex, GL_APPLE_flush_buffer_range, GL_APPLE_ycbcr_422, GL_APPLE_rgb_422, GL_APPLE_float_pixels, GL_ATI_texture_float, GL_ARB_texture_float, GL_ARB_half_float_pixel, GL_APPLE_pixel_buffer, GL_NV_blend_square, GL_NV_fog_distance, GL_NV_conditional_render, GL_ATI_texture_mirror_once, GL_ATI_texture_env_combine3, GL_ATI_separate_stencil, GL_ATI_texture_compression_3dc, GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_EXT_texture_array, GL_EXT_vertex_array_bgra, GL_ARB_instanced_arrays, GL_EXT_packed_float, GL_EXT_texture_shared_exponent,
2013-07-15 12:33:40,412 vendor: Apple Computer, Inc.
2013-07-15 12:33:40,412 renderer: Apple Software Renderer
2013-07-15 12:33:40,412 shading language version: 1.20
2013-07-15 12:33:40,442 GLU extensions:
2013-07-15 12:33:40,442 GLU version: 1.3 MacOSX
2013-07-15 12:33:40,442 All the required OpenGL functions are available: glActiveTexture, glTexSubImage2D, glTexCoord2i, glViewport, glMatrixMode, glLoadIdentity, glOrtho, glEnableClientState, glGenTextures, glDisable, glBindTexture, glPixelStorei, glEnable, glBegin, glFlush, glTexParameteri, glTexImage2D, glMultiTexCoord2i, glVertex2i, glEnd
2013-07-15 12:33:40,442 All the required OpenGL functions are available: GL_FRAMEBUFFER (36160), GL_COLOR_ATTACHMENT0 (36064), glGenFramebuffers, glBindFramebuffer, glFramebufferTexture2D
2013-07-15 12:33:40,442 Extension GL_ARB_texture_rectangle is present
2013-07-15 12:33:40,442 Extension GL_ARB_vertex_program is present
2013-07-15 12:33:40,443 GL Extension GL_ARB_fragment_program available
2013-07-15 12:33:40,444 glInitFragmentProgramARB works
2013-07-15 12:33:40,444 GL Extension GL_ARB_texture_rectangle available
2013-07-15 12:33:40,445 glInitTextureRectangleARB works
2013-07-15 12:33:40,447 GL Extension GL_ARB_vertex_program available
2013-07-15 12:33:40,460 All the required OpenGL functions are available: glGenProgramsARB, glDeleteProgramsARB, glBindProgramARB, glProgramStringARB

Tue, 16 Jul 2013 02:09:02 GMT - Antoine Martin:

Hah, yes, until I restore the tray here are 2 ways:

Which should look like this with OpenGL:

client.encoding.csc_modes=('YUV420P', 'YUV422P', 'YUV444P', 'BGRA', 'BGRX')
window[1].client.csc_modes=('YUV420P', 'YUV422P', 'YUV444P')

Whereas a regular window backing will also support BGR modes.


Tue, 16 Jul 2013 14:36:06 GMT - Antoine Martin: status changed; resolution set

I see from the client logs in #379 that opengl is enabled on a real mac and works ok:

pygdkglext version=(1, 1, 0)
pygdkglext OpenGL version=(1, 0)
using display mode: ['SINGLE']
OpenGL_accelerate module loaded
Using accelerated ArrayDatatype
OpenGL Version: 2.1 APPLE
(...)
vendor: Apple Computer, Inc.
renderer: Apple Software Renderer
shading language version: 1.20
GLU extensions:
GLU version: 1.3 MacOSX
(...)
Texture size GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB=16384
(...)

Then for each window:

GL Pixmap backing size: 499 x 316, drawable=\
    <gtk.gdk.GLWindowImplQuartz object at 0x17596328 (GdkGLWindowImplQuartz at 0xa13c80)>
(...)
present_fbo() drawable=\
    <gtk.gdk.GLWindowImplQuartz object at 0x17596490 (GdkGLWindowImplQuartz at 0xa13c80)>

Wed, 23 Oct 2013 07:02:40 GMT - Antoine Martin:

For building on 10.6... (hang on to your seats, it's even uglier than above - yes it's possible)

How I ended up doing it:

And then we get a runtime crash:

(gdb) bt
#0  0x00487f57 in g_type_name () from /Users/spikesdev/gtk/inst/lib/libgobject-2.0.0.dylib
#1  0x006d942d in pyg_flags_add () from /Users/spikesdev/gtk/inst/lib/python2.7/site-packages/gobject/_gobject.so
#2  0x01fd7080 in pygdkglext_add_constants () from /Users/spikesdev/gtk/inst/lib/python2.7/site-packages/gtk-2.0/gtk/gdkgl/_gdkgl.so
#3  0x01fd5829 in init_gdkgl () at gtk/gdkgl/gdkglmodule.c:109
#4  0x000e154e in _PyImport_LoadDynamicModule (name=0x2814600 "gtk.gdkgl._gdkgl",

Ugly, ugly. We can comment out the call to add_constants and re-add the constants to the module using the hack from comment:10 Build again, install again.

Then it seems to work in as much as the module loads without crashing.


Fri, 09 May 2014 04:46:23 GMT - Antoine Martin:

Update: this is being moved to #533, which now includes all-in-one patches for both packages. See also ticket:563#comment:14


Thu, 24 Jul 2014 08:19:19 GMT - Antoine Martin: attachment set

updated patch which allows us to build from git source with latest jhbuild


Thu, 24 Jul 2014 08:36:31 GMT - Antoine Martin: attachment set

minimal patch for gtkglext


Thu, 24 Jul 2014 13:04:38 GMT - Antoine Martin: attachment set

correct patch, which allows gtkgl to load on all machines and not just the one I build on


Fri, 25 Jul 2014 04:26:29 GMT - Antoine Martin: attachment set

somehow this got missed because the file isn't tracked by git, ugly way of fixing things


Fri, 25 Jul 2014 04:27:04 GMT - Antoine Martin: attachment set

updated patch for building against current git for both gtkglext and pygtkglext


Sat, 23 Jan 2021 04:48:57 GMT - migration script:

this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/226