Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

restore get_depth in pygtkglext OSX patch #1443

Closed
totaam opened this issue Feb 16, 2017 · 19 comments
Closed

restore get_depth in pygtkglext OSX patch #1443

totaam opened this issue Feb 16, 2017 · 19 comments

Comments

@totaam
Copy link
Collaborator

totaam commented Feb 16, 2017

Issue migrated from trac ticket # 1443

component: platforms | priority: major | resolution: fixed | keywords: opengl osx

2017-02-16 17:15:16: antoine created the issue


When coercing pygtkglext to build on OSX (see #533#comment:25), we removed the "get_depth" function which we did not use.
We do need it now for high bit depths.. see #1309#comment:2.
So we need to find a way to restore it and make it work.

@totaam
Copy link
Collaborator Author

totaam commented Feb 16, 2017

2017-02-16 17:16:26: antoine changed status from new to assigned

@totaam
Copy link
Collaborator Author

totaam commented Feb 16, 2017

2017-02-16 17:16:26: antoine commented


r15094 worksaround the missing method so the opengl rendering will be enabled - but we won't know if the display is using a high bit depth.

@totaam
Copy link
Collaborator Author

totaam commented Mar 24, 2017

2017-03-24 07:33:46: antoine changed status from assigned to new

@totaam
Copy link
Collaborator Author

totaam commented Mar 24, 2017

2017-03-24 07:33:46: antoine changed owner from antoine to smo

@totaam
Copy link
Collaborator Author

totaam commented Mar 24, 2017

2017-03-24 07:33:46: antoine commented


Implemented in gtkglext then restored the function which exposes it in pygtkglext: r15375.
Just run:

jhbuild buildone -f gtkglext
jhbuild buildone -f pygtkglext

Tested on a 24-bit display, which now shows "depth : 24" when running the "OpenGL_check" tool. (previously, no value was shown)


@smo: do you have access to any macos system with high bit depth enabled?
Not sure what graphics cards and / or monitor are required (but the mac mini I have sure isn't cutting it), it should look like this: 4K and 5K iMacs Support 10-Bit Color Depth on OS X El Capitan.
If you can find a system that shows anything higher than 24, or even any value other than 24 (low bit depths should work too), then please post the OpenGL_check output and try to run the client - ideally against a 30-bit server (see ImageDepth).

@totaam
Copy link
Collaborator Author

totaam commented Jul 12, 2017

2017-07-12 13:17:54: antoine commented


For testing high bit depth, see #1309#comment:8 and #1553#comment:2.

@totaam
Copy link
Collaborator Author

totaam commented Jul 20, 2017

2017-07-20 08:23:46: antoine changed owner from smo to maxmylyn

@totaam
Copy link
Collaborator Author

totaam commented Jul 20, 2017

2017-07-20 08:23:46: antoine commented


@maxmylyn: do you have access to a macos system with "deep color" (aka high bit depth) display?

@totaam
Copy link
Collaborator Author

totaam commented Jul 20, 2017

2017-07-20 21:49:18: maxmylyn changed owner from maxmylyn to afarr

@totaam
Copy link
Collaborator Author

totaam commented Jul 20, 2017

2017-07-20 21:49:18: maxmylyn commented


Sadly neither of our OSX machines here are high-bit depth. They're all just the standard 32-bit color depth. I'll pass this to Afarr to look around the office and maybe some marketing folks will have fancy machines.

@totaam
Copy link
Collaborator Author

totaam commented Aug 8, 2017

2017-08-08 01:34:05: afarr uploaded file ticket1443_mac-got-30-bit-color.png (79.3 KiB)

mac properties to confirm color depth
ticket1443_mac-got-30-bit-color.png

@totaam
Copy link
Collaborator Author

totaam commented Aug 8, 2017

2017-08-08 01:58:08: afarr changed owner from afarr to antoine

@totaam
Copy link
Collaborator Author

totaam commented Aug 8, 2017

2017-08-08 01:58:08: afarr commented


Found both time and a mac that looks like it supports 30-bit depth.
[[Image(ticket1443_mac-got-30-bit-color.png​)]]

Using the steps from #1309 - connected a 2.2 16657 client (./xpra attach tcp:10.0.32.138 --pixel-depth=30 --opengl=yes)
to a 2.2. 16657 fedora 25 server (xpra --no-daemon --bind-tcp=0.0.0.0: --start-child=xterm --start-child=firefox start :13 --html=on --pixel-depth=30 -d compress) ...
got output that included a lot of those 'r210' indicators that seem to mark as running the 30-bit depth.

2017-08-07 17:31:35,848 sound source using container format ogg
2017-08-07 17:31:38,733 compress:   0.6ms for  765x61   pixels at    0,0    for wid=2     using  rgb24 with ratio   5.8%  (  182KB to    10KB), sequence     5, client_options={'lz4': 1, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}
2017-08-07 17:31:38,843 compress:   0.5ms for  765x61   pixels at    0,0    for wid=2     using  rgb24 with ratio   6.0%  (  182KB to    10KB), sequence     6, client_options={'lz4': 1, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}
2017-08-07 17:31:39,510 compress:   0.7ms for  765x61   pixels at    0,0    for wid=2     using  rgb24 with ratio   6.0%  (  182KB to    10KB), sequence     7, client_options={'lz4': 1, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}
2017-08-07 17:31:39,654 compress:   0.5ms for  765x61   pixels at    0,0    for wid=2     using  rgb24 with ratio   6.0%  (  182KB to    10KB), sequence     8, client_options={'lz4': 1, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}
2017-08-07 17:31:39,706 compress:   0.2ms for  765x61   pixels at    0,0    for wid=2     using  rgb24 with ratio   5.9%  (  182KB to    10KB), sequence     9, client_options={'lz4': 1, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}
2017-08-07 17:31:39,878 compress:   2.2ms for 1047x433  pixels at    0,0    for wid=2     using  rgb24 with ratio   3.6%  ( 1770KB to    63KB), sequence    10, client_options={'lz4': 1, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}
2017-08-07 17:31:40,016 compress:   3.6ms for 1280x684  pixels at    0,0    for wid=2     using  rgb24 with ratio   3.2%  ( 3420KB to   109KB), sequence    11, client_options={'lz4': 1, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}
2017-08-07 17:31:40,225 compress:   4.3ms for 1280x684  pixels at    0,0    for wid=2     using  rgb32 with ratio   3.2%  ( 3420KB to   109KB), sequence    12, client_options={'lz4': 1, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}
2017-08-07 17:31:40,658 compress:   1.7ms for  610x621  pixels at    0,0    for wid=2     using  rgb32 with ratio   5.2%  ( 1479KB to    76KB), sequence    13, client_options={'lz4': 1, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}
2017-08-07 17:31:40,979 compress:   3.2ms for 1280x684  pixels at    0,0    for wid=2     using  rgb32 with ratio   3.2%  ( 3420KB to   109KB), sequence    14, client_options={'lz4': 1, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}
2017-08-07 17:31:41,384 compress:  46.4ms for 1325x1120 pixels at    0,0    for wid=2     using   jpeg with ratio   1.2%  ( 5796KB to    72KB), sequence    15, client_options={'quality': 72}
2017-08-07 17:31:41,557 compress:  36.8ms for 1325x1120 pixels at    0,0    for wid=2     using   jpeg with ratio   0.6%  ( 5796KB to    36KB), sequence    16, client_options={'quality': 72}
2017-08-07 17:31:41,748 compress:  17.4ms for 1325x1120 pixels at    0,0    for wid=2     using  rgb32 with ratio   0.7%  ( 5796KB to    43KB), sequence    17, client_options={'lz4': 1, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}
2017-08-07 17:31:41,807 compress:   0.8ms for 1068x19   pixels at   24,6    for wid=2     using  rgb24 with ratio  15.9%  (   79KB to    12KB), sequence    18, client_options={'bucket': 0, 'lz4': 1, 'store': 37, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}
2017-08-07 17:31:41,886 compress:   0.1ms for  175x16   pixels at  810,8    for wid=2     using  rgb24 with ratio  36.7%  (   10KB to     4KB), sequence    19, client_options={'flush': 2, 'bucket': 1, 'lz4': 1, 'store': 39, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}
2017-08-07 17:31:41,887 compress:   0.1ms for  332x16   pixels at  338,8    for wid=2     using  rgb24 with ratio  34.7%  (   20KB to     7KB), sequence    20, client_options={'flush': 1, 'bucket': 2, 'lz4': 1, 'store': 41, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}
2017-08-07 17:31:41,888 compress:   0.1ms for  174x16   pixels at   24,8    for wid=2     using  rgb24 with ratio  30.6%  (   10KB to     3KB), sequence    21, client_options={'bucket': 3, 'lz4': 1, 'store': 43, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}
2017-08-07 17:31:42,006 compress:   0.3ms for  175x16   pixels at  810,8    for wid=2     using  rgb24 with ratio   0.5%  (   10KB to     0KB), sequence    22, client_options={'delta': 39, 'bucket': 1, 'lz4': 1, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)', 'flush': 2, 'store': 45}
2017-08-07 17:31:42,009 compress:   0.1ms for  332x16   pixels at  338,8    for wid=2     using  rgb24 with ratio   0.5%  (   20KB to     0KB), sequence    23, client_options={'delta': 41, 'bucket': 2, 'lz4': 1, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)', 'flush': 1, 'store': 47}
2017-08-07 17:31:42,010 compress:   0.1ms for  174x16   pixels at   24,8    for wid=2     using  rgb24 with ratio   0.5%  (   10KB to     0KB), sequence    24, client_options={'delta': 43, 'bucket': 3, 'lz4': 1, 'store': 49, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}
2017-08-07 17:31:42,507 compress:   0.3ms for 1325x19   pixels at    0,6    for wid=2     using  rgb32 with ratio  22.3%  (   98KB to    21KB), sequence    26, client_options={'flush': 1, 'lz4': 1, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}
2017-08-07 17:31:42,507 compress:   0.2ms for 1325x15   pixels at    0,43   for wid=2     using  rgb32 with ratio  21.7%  (   77KB to    16KB), sequence    27, client_options={'lz4': 1, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}
2017-08-07 17:31:42,726 compress:   1.2ms for 1325x16   pixels at    0,42   for wid=2     using  rgb32 with ratio  20.5%  (   82KB to    16KB), sequence    28, client_options={'lz4': 1, 'rgb_format': '[r210](../commit/8875e19d8d67a1e2eeb8f189c9b1d526bd1d0e44)'}

I'm not sure I can tell the difference with my eye though, not even with a lawn gnome
(google link edited out).
Meanwhile, running the 'OpenGL_check', I'm also seeing depth = 24.

./OpenGL_check 
/Users/maint/Desktop/xpra-clients/xpra-ant-2-2-16657/Xpra.app/Contents/Resources/lib/python/xpra/platform/darwin/gui.py:89: Warning: invalid cast from 'GtkMenuBar' to 'GtkWindow'
/Users/maint/Desktop/xpra-clients/xpra-ant-2-2-16657/Xpra.app/Contents/Resources/lib/python/xpra/platform/darwin/gui.py:89: GtkWarning: gtk_window_add_accel_group: assertion 'GTK_IS_WINDOW (window)' failed
OpenGL_accelerate module loaded


OpenGL properties:
* GLU.extensions                  : 
* GLU.version                     : 1.3 MacOSX
* accelerate                      : 3.1.1a1
* accum-blue-size                 : 0
* accum-green-size                : 0
* accum-red-size                  : 0
* alpha-size                      : 8
* aux-buffers                     : 0
* blue-size                       : 1
* depth                           : 24
* depth-size                      : 0
* display_mode                    : DOUBLE
* double-buffered                 : True
* extensions                      : GL_ARB_color_buffer_float, GL_ARB_depth_buffer_float, GL_ARB_depth_clamp, GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_draw_elements_base_vertex, GL_ARB_draw_instanced, GL_ARB_fragment_program, GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader, GL_ARB_framebuffer_object, GL_ARB_framebuffer_sRGB, GL_ARB_half_float_pixel, GL_ARB_half_float_vertex, GL_ARB_imaging, GL_ARB_instanced_arrays, GL_ARB_multisample, GL_ARB_multitexture, GL_ARB_occlusion_query, GL_ARB_pixel_buffer_object, GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_provoking_vertex, GL_ARB_seamless_cube_map, GL_ARB_shader_objects, GL_ARB_shader_texture_lod, GL_ARB_shading_language_100, GL_ARB_shadow, GL_ARB_shadow_ambient, GL_ARB_sync, GL_ARB_texture_border_clamp, GL_ARB_texture_compression, GL_ARB_texture_compression_rgtc, GL_ARB_texture_cube_map, GL_ARB_texture_env_add, GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3, GL_ARB_texture_float, GL_ARB_texture_mirrored_repeat, GL_ARB_texture_non_power_of_two, GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_transpose_matrix, GL_ARB_vertex_array_bgra, GL_ARB_vertex_blend, GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_ARB_window_pos, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_bindable_uniform, GL_EXT_blend_color, GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate, GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_clip_volume_hint, GL_EXT_debug_label, GL_EXT_debug_marker, GL_EXT_depth_bounds_test, GL_EXT_draw_buffers2, GL_EXT_draw_range_elements, GL_EXT_fog_coord, GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_object, GL_EXT_framebuffer_sRGB, GL_EXT_geometry_shader4, GL_EXT_gpu_program_parameters, GL_EXT_gpu_shader4, GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil, GL_EXT_packed_float, GL_EXT_provoking_vertex, GL_EXT_rescale_normal, GL_EXT_secondary_color, GL_EXT_separate_specular_color, GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, GL_EXT_stencil_wrap, GL_EXT_texture_array, GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_s3tc, GL_EXT_texture_env_add, GL_EXT_texture_filter_anisotropic, GL_EXT_texture_integer, GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp, GL_EXT_texture_rectangle, GL_EXT_texture_shared_exponent, GL_EXT_texture_sRGB, GL_EXT_texture_sRGB_decode, GL_EXT_timer_query, GL_EXT_transform_feedback, GL_EXT_vertex_array_bgra, GL_APPLE_aux_depth_stencil, GL_APPLE_client_storage, GL_APPLE_element_array, GL_APPLE_fence, GL_APPLE_float_pixels, GL_APPLE_flush_buffer_range, GL_APPLE_flush_render, GL_APPLE_object_purgeable, GL_APPLE_packed_pixels, GL_APPLE_pixel_buffer, GL_APPLE_rgb_422, GL_APPLE_row_bytes, GL_APPLE_specular_vector, GL_APPLE_texture_range, GL_APPLE_transform_hint, GL_APPLE_vertex_array_object, GL_APPLE_vertex_array_range, GL_APPLE_vertex_point_size, GL_APPLE_vertex_program_evaluators, GL_APPLE_ycbcr_422, GL_ATI_blend_equation_separate, GL_ATI_blend_weighted_minmax, GL_ATI_separate_stencil, GL_ATI_texture_compression_3dc, GL_ATI_texture_env_combine3, GL_ATI_texture_float, GL_ATI_texture_mirror_once, GL_IBM_rasterpos_clip, GL_NV_blend_square, GL_NV_conditional_render, GL_NV_depth_clamp, GL_NV_fog_distance, GL_NV_light_max_exponent, GL_NV_texgen_reflection, GL_NV_texture_barrier, GL_SGI_color_matrix, GL_SGIS_generate_mipmap, GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, 
* gdkgl
  - version                       : 1.0
* gdkglext
  - version                       : 1.2.0
* green-size                      : 1
* gtkglext
  - version                       : 1.2.0
* has-depth-buffer                : False
* has-stencil-buffer              : False
* has_alpha                       : True
* max-viewport-dims               : (16384, 16384)
* opengl                          : 2, 1
* pygdkglext
  - version                       : 1.0.0
* pyopengl                        : 3.1.1a1
* red-size                        : 1
* renderer                        : AMD Radeon HD - FirePro D300 OpenGL Engine
* rgba                            : True
* safe                            : True
* sample-buffers                  : 166518688
* samples                         : 166518688
* shading-language-version        : 1.20
* stencil-size                    : 0
* stereo                          : False
* texture-size-limit              : 16384
* transparency                    : False
* vendor                          : ATI Technologies Inc.
* zerocopy                        : True

I do notice that the Graphics/ Displays section of my hardware specs lists an AMD FirePro D300 for Slot-1 and Slot-2, but the screenshot above is the Slot-2 specs, the Slot-1 doesn't have any indications one way or the other for the Displays... is it possible the OpenGL_check needs to check both? (Or, is it just good enough that it gets any value at all?)

Anyway, handing back to you.

@totaam
Copy link
Collaborator Author

totaam commented Aug 8, 2017

2017-08-08 02:29:47: antoine changed owner from antoine to afarr

@totaam
Copy link
Collaborator Author

totaam commented Aug 8, 2017

2017-08-08 02:29:47: antoine commented


To check for high bit depth support, don't use images from google as none of those will use high bit depth.
We have test applications just for that: #1309#comment:9. (both an opengl and a non-opengl version)
Press any key to increase the bit depth, and "-" to decrease. The point at which it stops changing is the maximum bit depth supported by the screen.

On macos, it is available directly as Xpra.app/Contents/Helpers/Example-Colors-Gradient and Example-OpenGL-Colors-Gradient, and for testing the forwarding via xpra you can run the same application on the server: xpra/client/gtk_base/example/colors_gradient.py and gl_colors_gradient.py.

@totaam
Copy link
Collaborator Author

totaam commented Aug 8, 2017

2017-08-08 02:53:18: afarr changed status from new to closed

@totaam
Copy link
Collaborator Author

totaam commented Aug 8, 2017

2017-08-08 02:53:18: afarr set resolution to fixed

@totaam
Copy link
Collaborator Author

totaam commented Aug 8, 2017

2017-08-08 02:53:18: afarr commented


Tested with xpra/client/gtk_base/example/colors_gradient.py... and sure enough, able to detect differences in the lower grey bands up to the 10 bits listing.

Looks like that's doing pretty well. I'll go ahead and close this.

@totaam totaam closed this as completed Aug 8, 2017
@totaam
Copy link
Collaborator Author

totaam commented Aug 8, 2017

2017-08-08 07:29:12: antoine commented


Interesting to see (gl_check output from comment:6) that we cannot detect high bit depth through opengl: blue-size, green-size and red-size are all bogus (set to 1).
As for slots, I believe we get the card in the slot that we end up using - so we shouldn't worry too much about that part.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant