Flash Uses The GPU

A much clamored-for feature (right after native 64-bit, wmode/transparency, and V4L2) is Flash GPU (graphical processing unit) acceleration, sometimes founded in a belief that it’s a magic solution for making things fast without any side effects or ill consequences. I just wanted to make it known that the Adobe Flash Player is GPU accelerated, even on Linux. However, this comes with some qualifications.

Starting in version 9.0.115.0, the Flash Player was able to display fullscreen content with GPU assistance. This is done via OpenGL facilities.

Starting in the most recent Astro Beta, Flash Player supports new GPU acceleration modes. This acceleration doesn’t automatically speed up legacy content. Instead, new SWF content has to be authored specifically to take advantage of this. Tinic Uro has an excellent overview of the capabilities and limitations of this new feature in his blog post, “What does GPU acceleration mean?”

Tinic’s post mentions the lofty GPU requirements for Windows: “You will need at least a DirectX 9 class card. We essentially have the exact same hardware requirements as Windows Vista with Aero Glass enabled.” Obviously, the Linux version isn’t going the DirectX route. It uses OpenGL and we require the following features before we consider honoring the new SWF GPU features:

  • GL_ARB_multitexture
  • GL_EXT_framebuffer_object
  • GL_ARB_shader_objects
  • GL_ARB_shading_language_100
  • GL_ARB_fragment_shader

Also, for fullscreen OpenGL acceleration, the Flash Player requires that the client glx vendor string be something besides “SGI”. Official drivers from, e.g., ATI and Nvidia hopefully do not have “SGI” in this field (check the ‘glxinfo’ command, for this string and for the extensions listed above). We have this logic in place to detect whether software rendering is in place and fall back on our own software fullscreen in that case. There are more robust ways to detect software rendering but we have seen crash problems on a number of distributions, possibly with outdated libraries.

Another important note: Compiz and GPU-accelerated Flash on Linux do not mix. The Flash Player still works if you have Compiz as your window manager; you just won’t be able to make use of GPU-accelerated features. This is a shame since Compiz is coming with the basic installation of various Linux distributions. Unfortunately, things get unstable when trying to do GPU acceleration in SWFs running under Compiz.

  • FAQ regarding hardware acceleration: Why doesn’t the Flash Player on Linux user the X video extension (Xv)?
  • Answer: Because Xv scales YUV data. Flash Player operates on RGB data.

For the uninitiated, many video codecs operate in a YUV colorspace. Unix/X11 has an extension called X video that allows hardware scaling of YUV images. This is a very mature system on Linux which has allowed seamless, low CPU usage, fullscreen video playback on Linux for many years. Unfortunately, the Flash Player can not easily make use of this since Sorenson, On2, or H.264 video data — even though it is decoded as YUV — has to be converted to RGB and possibly combined with other graphical elements. This is why RGB scaling via OpenGL is the future of Flash.

Except if Compiz is acting as window manager.

95 Responses to Flash Uses The GPU

  1. R. Cryderman says:

    Looks like there might be a problem the client string with Xorg running the radeon driver (which _is_ accelerated).$ glxinfoname of display: :0.0display: :0 screen: 0direct rendering: Yesserver glx vendor string: SGIserver glx version string: 1.2server glx extensions:GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap,GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,GLX_OML_swap_method, GLX_SGI_swap_control, GLX_SGIS_multisample,GLX_SGIX_fbconfig, GLX_SGIX_visual_select_groupclient glx vendor string: SGIclient glx version string: 1.4client glx extensions:GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_allocate_memory,GLX_MESA_copy_sub_buffer, GLX_MESA_swap_control,GLX_MESA_swap_frame_usage, GLX_OML_swap_method, GLX_OML_sync_control,GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync,GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmapGLX version: 1.2GLX extensions:GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_swap_control,GLX_MESA_swap_frame_usage, GLX_OML_swap_method, GLX_SGI_swap_control,GLX_SGI_video_sync, GLX_SGIS_multisample, GLX_SGIX_fbconfig,GLX_SGIX_visual_select_groupOpenGL vendor string: DRI R300 ProjectOpenGL renderer string: Mesa DRI R300 20060815 AGP 4x TCLOpenGL version string: 1.3 Mesa 7.1OpenGL extensions:GL_ARB_depth_texture, GL_ARB_fragment_program, GL_ARB_imaging,GL_ARB_multisample, GL_ARB_multitexture, GL_ARB_texture_border_clamp,GL_ARB_texture_compression, 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_MESAX_texture_float, GL_ARB_texture_mirrored_repeat,GL_ARB_texture_rectangle, GL_ARB_transpose_matrix,GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_window_pos,GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color,GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,GL_EXT_blend_logic_op, GL_EXT_blend_minmax, GL_EXT_blend_subtract,GL_EXT_clip_volume_hint, GL_EXT_compiled_vertex_array, GL_EXT_convolution,GL_EXT_copy_texture, GL_EXT_draw_range_elements,GL_EXT_gpu_program_parameters, GL_EXT_histogram, GL_EXT_multi_draw_arrays,GL_EXT_packed_pixels, GL_EXT_polygon_offset, GL_EXT_rescale_normal,GL_EXT_secondary_color, GL_EXT_separate_specular_color,GL_EXT_stencil_two_side, GL_EXT_stencil_wrap, GL_EXT_subtexture,GL_EXT_texture, GL_EXT_texture3D, GL_EXT_texture_compression_s3tc,GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add,GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod_bias,GL_EXT_texture_mirror_clamp, GL_EXT_texture_object,GL_EXT_texture_rectangle, GL_EXT_vertex_array, GL_APPLE_packed_pixels,GL_ATI_blend_equation_separate, GL_ATI_texture_env_combine3,GL_ATI_texture_mirror_once, GL_IBM_rasterpos_clip,GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate,GL_MESA_pack_invert, GL_MESA_ycbcr_texture, GL_MESA_window_pos,GL_NV_blend_square, GL_NV_light_max_exponent, GL_NV_texture_rectangle,GL_NV_texgen_reflection, GL_NV_vertex_program, GL_OES_read_format,GL_SGI_color_matrix, GL_SGI_color_table, GL_SGIS_generate_mipmap,GL_SGIS_texture_border_clamp, GL_SGIS_texture_edge_clamp,GL_SGIS_texture_lod, GL_SGIX_depth_texture, GL_SUN_multi_draw_arrays,GL_S3_s3tc[ Thanks for the data. -Mike M. ]

  2. Chris Lord says:

    Blaming this on compiz seems a bit unfair – I’m going to assume the real problem is that GL compositing is very broken on most configurations, but this has nothing to do with compiz and everything to do with the poor state of Linux graphics drivers.GL compositing with compiz and nvidia drivers usually works fine; I’ve been using it on all of my computers with no problems for ages now (so Geforce 5200, 6800 and 8600 cards). Is compiz detected and this feature disabled? If so, how is this detection done? Even running without compiz, I don’t seem to see any benefit from flash’s hardware acceleration under Linux.It’d be cool if some more was written on the exact acceleration that takes place, how it differs from Windows, and what methods are used to detect when acceleration can be used.Currently, Windows flash under wine performs much better than Linux flash, for stand-alone applications at least.

  3. Thales says:

    This limitation also apply if you use any other composite-enabled Window Manager (as Metacity with composite option)?[ Not currently, but perhaps we just don’t have enough data yet. -Mike M. ]

  4. ana says:

    You didn’t said anything about the most requested features, wmode and v4l2, what about those?Are you working on it? Or should I loose my hopes.

  5. Arren Lex says:

    server glx vendor string: SGIserver glx version string: 1.2OpenGL vendor string: DRI R300 ProjectOpenGL renderer string: Mesa DRI R300 20060815 x86/MMX+/3DNow!+/SSE2 TCLOpenGL version string: 1.3 Mesa 7.0.3-rc2Oh, look. Accelerated 3D drivers with SGI as the vendor string, but still more than fast enough for me to smoothly play Frets on Fire, meaning more than enough to improve Flash’s 2D scaling acceleration. You honestly couldn’t think of a way better way to determine whether the rendering is software or not than to grep for some apparently only tangentially related string and hope the correlation was good enough? There seriously isn’t a better mechanism to determine whether or not the graphics are accelerated?[ There are more accurate solutions, and we tried to use them; unfortunately, they crashed on certain software drivers on several different Linux distributions. Thanks for the data; this should help us develop a better solution. -Mike M. ]

  6. adam says:

    …and where is the most requested feature?! Stop slacking off…

  7. henshaw says:

    Thanks. I’m glad that you’re now being clear on the requirements for GPU acceleration, and the provisos for it. Hopefully this means we can move forward and solve problems like the radeon acceleration mentioned above. It may not be as satisfying as a new feature, but it’s still a significant step.Personally, I’m glad that I now understand why my Geforce2 card won’t (and probably never will) offer hardware acceleration in flash (missing GL_ARB_fragment_shader and GL_EXT_framebuffer_object). And also why xv won’t help for video, even if this card is more than capable of playing standalone .flvs.

  8. laxy says:

    New Intel cards also have SGI as the client vendor string, yet are more than capable for this kind of video acceleration..

  9. sebest says:

    Maybe a simple benchmark the first time flash is started would help to determine if it is hardware accelerated or not.

  10. Ruben says:

    direct rendering: Yesserver glx vendor string: SGIserver glx version string: 1.2server glx extensions: …client glx vendor string: SGIclient glx version string: 1.4…I’m using an ATI card with the fglrx driver. All fully DRI accelerated. Why aren’t you testing on the “direct rendering: Yes” flag? Or is this the test that causes the crashes. Maybe there should be some hidden option available for experienced users to override the test and force acceleration. [ Yep, the direct rendering test is the one that crashes. I’ll be looking at better solutions in light of this thread. -Mike M. ]

  11. gord allott says:

    I sevearly doubt compiz is not to blame here, what compiz in my experiance *can* do is make buggy code much more visable, if your doing things the wrong way it all throw much more of a fit.lets face it, if high profile games like quake: enemy territory and such can work flawlessly with compiz, along with pretty much every other game i have ever tried (even through wine) then i doubt its fair to put the blame there.lets hope you fix your code for final, i’m sure not disabling my pretty for your product

  12. boulihacker says:

    “Unfortunately, the Flash Player can not easily make use of this since Sorenson, On2, or H.264 video data — even though it is decoded as YUV — has to be converted to RGB and possibly combined with other graphical elements. This is why RGB scaling via OpenGL is the future of Flash.”And converting back to YUV space after compositing, so that scaling can use hw acceleration – is that difficult concept to come up with? Jesus…

  13. Andrej Zirko says:

    I’m using intel graphic driver for my X3100 card and the vendor is also SGI. There must be some better way to detect whether the graphic card is accelerated…

  14. gQuigs says:

    What’s wrong with checking for:direct rendering: Yes for hardware accelerationand no for software? [ Because the check crashes on some systems. -Mike M. ]

  15. Dom Delimar says:

    Hi, just wanted to let you know that I have an ATI Mobile Radeon X1300 with DRI enabled and I have all the prerequisites for Flash fullscreen OpenGL acceleration except the client vendor string:$ glxinfoname of display: :0.0display: :0 screen: 0direct rendering: Yesserver glx vendor string: SGIserver glx version string: 1.2server glx extensions:GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap,GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_OML_swap_method,GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_visual_select_groupclient glx vendor string: SGIclient glx version string: 1.4client glx extensions:GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_allocate_memory,GLX_MESA_swap_control, GLX_MESA_swap_frame_usage, GLX_OML_swap_method,GLX_OML_sync_control, GLX_SGI_make_current_read, GLX_SGI_swap_control,GLX_SGI_video_sync, GLX_SGIS_multisample, GLX_SGIX_fbconfig,GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group,GLX_EXT_texture_from_pixmapGLX version: 1.2GLX extensions:GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_OML_swap_method,GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_visual_select_groupOpenGL vendor string: ATI Technologies Inc.OpenGL renderer string: ATI Mobility Radeon X1300OpenGL version string: 2.1.7415 ReleaseOpenGL extensions:GL_AMD_performance_monitor, GL_ARB_depth_texture, GL_ARB_draw_buffers,GL_ARB_fragment_program, GL_ARB_fragment_shader, 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_shader_objects,GL_ARB_shading_language_100, GL_ARB_shadow, GL_ARB_shadow_ambient,GL_ARB_texture_border_clamp, GL_ARB_texture_compression,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_rectangle,GL_ARB_transpose_matrix, GL_ARB_vertex_buffer_object,GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_ARB_window_pos,GL_ATI_draw_buffers, GL_ATI_envmap_bumpmap, GL_ATI_fragment_shader,GL_ATI_meminfo, GL_ATI_separate_stencil, GL_ATI_texture_compression_3dc,GL_ATI_texture_env_combine3, GL_ATI_texture_float, GL_EXT_abgr,GL_EXT_bgra, GL_EXT_blend_color, GL_EXT_blend_func_separate,GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array,GL_EXT_copy_texture, GL_EXT_draw_range_elements, GL_EXT_fog_coord,GL_EXT_framebuffer_object, GL_EXT_gpu_program_parameters,GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil,GL_EXT_packed_pixels, GL_EXT_point_parameters, GL_EXT_rescale_normal,GL_EXT_secondary_color, GL_EXT_separate_specular_color,GL_EXT_shadow_funcs, GL_EXT_stencil_wrap, GL_EXT_subtexture,GL_EXT_texgen_reflection, GL_EXT_texture3D,GL_EXT_texture_compression_s3tc, GL_EXT_texture_cube_map,GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add,GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod_bias,GL_EXT_texture_mirror_clamp, GL_EXT_texture_object,GL_EXT_texture_rectangle, GL_EXT_texture_sRGB, GL_EXT_vertex_array,GL_KTX_buffer_region, GL_NV_blend_square, GL_NV_texgen_reflection,GL_SGIS_generate_mipmap, GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod,GL_WIN_swap_hint, WGL_EXT_swap_control

  16. Craig Kelley says:

    I added XVideo support to Gnash; it’s not that difficult. Most video cards support an RGB format, and if they don’t then the algorithms to do rgb->yuv are fairly simple and fast. Although there are other advantages to using OpenGL.

  17. Corbin Simpson says:

    Hi, my name is Corbin, I’m one of the Mesa developers working with AMD to support Radeon GPUs.We just finished code supporting the R500 chipsets, which means we support all Radeons below the HD 2000, including GPUs still being shipped today in modern laptops.Since we are using Mesa, our glx client and server identify as “SGI”. A more robust check would be to see whether or not the OpenGL renderer string is “Mesa X11 Indirect”, as that is the indicator of (in)direct rendering.While it might be nice to consider ATI and nVidia as the bastions of stable OpenGL stacks, the truth is that many users prefer the open-source Mesa-based stack to ATI’s fglrx stack in terms of stability and performance, and furthermore vendors like Intel and VIA are only supported through Mesa and not through proprietary drivers.Thank you for your time.~ C. [ Thanks for yours; I’ll be in touch. -Mike M. ]

  18. pc486 says:

    The 3D acceleration detection will also fail with Intel GPUs:server glx vendor string: SGIserver glx version string: 1.2client glx vendor string: SGIclient glx version string: 1.4OpenGL vendor string: Tungsten Graphics, IncOpenGL renderer string: Mesa DRI Intel(R) 965G 4.1.3002OpenGL version string: 1.5 Mesa 7.0.3

  19. oyvind says:

    Some lines from glxinfo on card *with full OpenGL-acceleration* support using the latest ATI fglrx-driver:…name of display: :0.0display: :0 screen: 0direct rendering: Yesserver glx vendor string: SGIserver glx version string: 1.2server glx extensions:…client glx vendor string: SGIclient glx version string: 1.4……OpenGL vendor string: ATI Technologies Inc.OpenGL renderer string: ATI Mobility Radeon X1400OpenGL version string: 2.1.7537 ReleaseOpenGL extensions:……That “grep for SGI”-test of yours does not seem like the best solution, as this output comes from machine with full OpenGL/glx acceleration set up. Doesn’t look like I’ll be getting any Flash-acceleration, a shame really, since I don’t use Compiz and Flash could need some beef-up for it’s video scaling performance.

  20. oyvind says:

    Oh, and forgot to mention, the card+driver I’m using (ATI X1400 + fglrx) seems to support all required OpenGL-extensions, even though you detect it as unusable because of the glx vendor string:$ glxinfo|grep GL_ARB_multitextureGL_ARB_multisample, GL_ARB_multitexture, GL_ARB_occlusion_query,$ glxinfo|grep GL_EXT_framebuffer_objectGL_EXT_framebuffer_multisample, GL_EXT_framebuffer_object,$ glxinfo|grep GL_ARB_shader_objectsGL_ARB_shader_objects, GL_ARB_shading_language_100, GL_ARB_shadow,$ glxinfo|grep GL_ARB_shading_language_100GL_ARB_shader_objects, GL_ARB_shading_language_100, GL_ARB_shadow,$ glxinfo|grep GL_ARB_fragment_shaderGL_ARB_fragment_program, GL_ARB_fragment_shader, GL_ARB_half_float_pixel,

  21. Chris says:

    “Yep, the direct rendering test is the one that crashes.”I don’t quite see how this is possible since it’s just a single function call in a GL context, and Wine even does it as part of its initialization (and it doesn’t require GL acceleration).GLXContext ctx = glXCreateContext(dpy, …, True);if(!glXIsDirect(dpy, ctx))…;While it’s possible those may throw X errors, which will terminate an unsuspecting app by default, they are very easy to capture with basic Xlib calls.It’s also interesting to note that almost all accelerated drivers have SGI in the client GLX client string, thus won’t accelerate, except nVidia. But nVidia cards have trouble getting acceleration working, too.. [ Actually, I was mistaken. The above code works correctly; it’s the ensuing glXDestroyContext() that crashes. -Mike M. ]

  22. Swift says:

    THANK YOU! Why haven’t you given these details before?I finally figured out why my desktop fullscreen rendering was so slow (although Quake 3 plays at desired frame rate of 125fps).I’ve just tested Astro on a laptop with more recent Nvidia card and got really smooth fullscreen rendering (small bug when quitting fullscreen mode, main window ain’t refreshed at all, I’ll report this one).So too bad my GeForce4MX doesn’t allow fullscreen where it could (not should!). Let me know if you want glxinfo.-Swift

  23. G says:

    How can I take advantage of this on 64-bit Linux?Ouch.

  24. Vadim P. says:

    But Compiz itself does the direct rendering check. If they got it enabled, surely the system passed!

  25. Anonymous says:

    I suggest Adobe quickly figure out a way to get GPU acceleration working with Compiz. What’s the point of adding features that a quickly shrinking percentage of Linux users can make use of? Do you think many Vista users would disable Aero just to make use of features in a browser plugin? Sheesh!!!Hopefully Google will get sick of this anti-OSS crap from Adobe and abandon flash altogether on youtube as they have with the Apple/iphone/AppleTV and give everyone one less reason to bother installing Flash.Seriously… Fix WMODE and do something about the crashes and apparent pulseaudio conflicts instead of adding feature that will be USELESS to most of us. I can live without GPU acceleration for now if theses other issues are fixed.

  26. Creak says:

    First I’d like to thank you for evolving the Flash player on Linux.I hope one day I could play flash videos without sound desynchronization. As far as I could read, it’s not for this version yet, but it’ll happen soon!Could it be possible to add an option to the flash plugin so that it would force the hardware acceleration, so much for the instability? If the user adds this option, he knows to what he’s heading to.Good luck for the future!

  27. Sits says:

    Thanks for the YUV/RGB explanation. I never knew about this until I saw it mentioned over on http://lwn.net/Articles/282846/ . It’s a killer on old machines but at least I now know why. These sorts of entries are invaluable!It’s also worth noting that Intel cards like the i945 don’t implement shaders in openGL so hopefully that will head off people mentioning that flash on such cards don’t seem to use the GPU.

  28. Pieter says:

    You knew this one was coming: where’s the 64bit version of flash? Would like to see that before anything else (maybe except the “flash always covers drop-down menu’s so those menu’s become invisible). Thank you for your efforts.

  29. Knic Knic says:

    So I checked I have every requirement you mentioned, I use KDE without the Composite extension enabled. Yet my fullscreen video is still slideshow, I know you mentioned content will need to be specifically authored, but I still feel very left out by adobe not giving me a smooth FULLSCREEN experience on a very highend IntelCore2 with a 1920×1200 resolution, where on windows it works. Essentially you are saying full screen will work if they specifically author it, well NO ONE IS, how are you planning on supporting fullscreen for all of the rest of flash content?!?!? I don’t care if you are using gpu accelleration or not, fullscreen video should work, you should atleast have a timeline of when it will be supported.

  30. Brian says:

    >Answer: Because Xv scales YUV >data. Flash Player operates on >RGB data.I don’t think this is true.From what I can tell, both my cards support an XV_IMAGE encoding, and RGB is a valid Xv image format, so they should both work. One is an Geforce4MX with the nvida drivers the other is a radeon with the free drivers.It seems possible that many drivers wouldn’t support RGB scaling, though it looks like many do.I didn’t actually try to do RGB scaling, so it’s possible that it’s broken. [ I’ve done some tests and I have yet to find a card that supports RGB scaling via X video. -Mike M. ]

  31. oyvind says:

    Vadim P. wrote:

  32. Chris says:

    “do something about the crashes and apparent pulseaudio conflicts”To be fair, I imagine the flash player uses ALSA and/or OSS.. the two standard audio APIs on Linux and other Unices respectively. PulseAudio’s ALSA plugin is quite buggy, yet certain distros insisted on making it the default anyway, despite several known problems. I’d recommend complaining to your package manager and disabling PulseAudio until its issues are resolved (unless you’re doing networked sound, you won’t lose much, if anything; might even gain depending on your hardware).”it’s the ensuing glXDestroyContext() that crashes. -Mike M.”Again, calling stuff like this is rather standard behavior for detecting accelerated GL in X. As long as you’re doing it properly, I’d wager to bet it’s a rather buggy driver and not an issue for most people. Of course, without being able to peer-review the code, it’s difficult to say what the problem really is.

  33. oyvind says:

    Sorry, my earlier reply quoted the wrong name (Vadim P), please excuse me, I’m blind (ok, not really blind, just not looking closely enough :). It was meant as a reply to a post by Anonymous.

  34. nitrogen says:

    Regarding the OpenGL detection crashing, I have seen Wine itself crash over a VNC connection when detecting OpenGL, thus making it unusable. I would suggest forking off a new process, setting a new SEGV handler with sigaction(), and running the check there. If it crashes, tell the original process that GL isn’t available. [ Hmm, that’s just crazy enough to work… -Mike M. ]

  35. Meneer R says:

    I can understand the preference for stability over performance.However, would it be possible to have some flash-config file (.config/adobeflash) or something where can overrule these detected settings?This way, the more technically inclined can tweak it to their liking. You would also get valuable feedback on certain settings.I would also suggest to use this to allow us to set an audio-output. On most mainstreams distrobutions pulseaudio is going to be the future.The do-it-yourself types could use the same config file to tell it to use alsa or oss.Again: I can understand the preference for defaults that make it crash the least often, but in the linux world, being able to tweak and make those choices for ourselves is what we expect and one of the reasons why we chose linux.Therefor i pledge for a flash config file, where we can overwrite the soundoutput and wether or not it should use acceleration.Another added bonus is they the compiz developpers would be able to experiment and see _why_ compiz and flash do not mix; perhaps fix it at their end?Thanks for your time!

  36. Chris says:

    “I would suggest forking off a new process, setting a new SEGV handler with sigaction(), and running the check there. If it crashes, tell the original process that GL isn’t available.”I would be careful with that. It’s not unusual for systems to be configured to automatically create a core dump when an app sigsegv’s. And if a regularly-run app were to silently spawn a child that crashes, it would end up leaving a mess in the unsuspecting user’s home directory.If the problem happens in a non-local X server, shouldn’t it be possible to detect that and assume no GL (with a config option to force the check anyway, just in case; eg. ForceGLCheck=enable/disable)? Another config option could be made available to force enable/disable GL in case it detects wrongly, in either case (eg. ForceGL=enable/disable/autodetect).

  37. Thanks for noticing that native 64-bit is a much clamored-for feature

  38. Linux User says:

    >>Thanks for noticing that native 64-bit is a much clamored-for featureDitto.And glad to know he’s paying attention the comments 🙂

  39. Vladimir says:

    2Chris: even if the system is configured to create coredumps, there are a lot of workarounds for this. Just make setrlimit(2) call, setting RLIMIT_CORE to 0 – and that’s it, no more coredumps for this process. Also you can simply intercept SIGSEGV by defining corresponding sigaction(2) and properly returning exit code. Just don’t you dare to do this from main flash process (browser thread), it might work, but isn’t safe, since you can’t really predict what exactly happens with your data when you get SIGSEGV.On the matter: geez, I just can’t imagine WHY adobe even thinks about such worthless stuff when highly critical issue of supporting 64-bit platforms remains! Can’t they understand that flash is the last piece of proprietary software that holds off pure 64-bit desktop platforms in a lot of cases? We have to use 32-bit browser for years already, since flash under nspluginwrapper tends to crash and swfdec isn’t advanced enough. Living without wmode support is quite annoying, too…

  40. Anonymous says:

    “I would be careful with that. It’s not unusual for systems to be configured to automatically create a core dump when an app sigsegv’s. And if a regularly-run app were to silently spawn a child that crashes, it would end up leaving a mess in the unsuspecting user’s home directory.”it shouldn’t create a coredump if the signal is caught.

  41. Richard says:

    I tested on youtube video with Compiz on and off and noticed no significant difference.I checked glxinfo and I matched everything except for these:# GL_ARB_shader_objects# GL_ARB_shading_language_100# GL_ARB_fragment_shaderBut when I load up the nvidia-settings tool and go over to the OpenGL/GLX Information it lists everything. Does this mean there is a problem with glxinfo or is there a better way to detect for these needed extensions?

  42. npcomplete says:

    “And converting back to YUV space after compositing, so that scaling can use hw acceleration – is that difficult concept to come up with? Jesus…”But why would you want to do that? Converting back to YUV again incurs quality loss and more CPU time

  43. Anonymous says:

    The Radeon R100 supports 4 RGB Xv image formats, so it does exist in the wild.Number of image formats: 8id: 0x41424752 (RGBA)guid: 52474241-0000-0010-8000-00aa00389b71bits per pixel: 32number of planes: 1type: RGB (packed)depth: 32red, green, blue masks: 0xff0000, 0xff00, 0xffid: 0x54424752 (RGBT)guid: 52474254-0000-0010-8000-00aa00389b71bits per pixel: 16number of planes: 1type: RGB (packed)depth: 16red, green, blue masks: 0x7c00, 0x3e0, 0x1fid: 0x32424752 (RGB2)guid: 52474200-0000-0010-8000-00aa00389b71bits per pixel: 16number of planes: 1type: RGB (packed)depth: 16red, green, blue masks: 0xf800, 0x7e0, 0x1fid: 0x0guid: 52474200-0000-0010-8000-00aa00389b71bits per pixel: 24number of planes: 1type: RGB (packed)depth: 24red, green, blue masks: 0xff0000, 0xff00, 0xff– snip —

  44. Anonymous says:

    muy interesante

  45. strhrts says:

    Come on! compiz/kde4 effects or flash? Do I need to choose? This sucks… I hope a free and opensource alternative arrives soon, Adobe sucks

  46. georgia_tech_swagger says:

    Nice blog entry!I have a Thinkpad T21 (ProSavage IIX) which has the SGI stuff in glxinfo. It’s good enough to play things like TuxRacer, etc…. but explains why my desktop (nVidia 6600 GT) plays Flash video **so** much more efficiently, even given it’s much beefier hardware. Even so CPU use is still far higher than I’d like on my desktop, but it was great to see marked improvement in Flash for Linux via 10 BETA.

  47. remi says:

    Could you please make a post regarding the status of WMODE and amd64 support?Could you tell the community how they can help to resolve these issues, if you don’t have the bandwidth?If you don’t have the bandwidth, could you tell us why?It’s not like there are people mentioning WMODE on every single penguin.swf blog post because they simply want to annoy you. There simply isn’t much in the way of feedback coming from penguin.swf regarding these insanely high priorities that’s been outstanding for years.

  48. Arun says:

    [ There are more accurate solutions, and we tried to use them; unfortunately, they crashed on certain software drivers on several different Linux distributions. -Mike M. ]Thanks for your efforts and the useful information about your difficulties with the hardware acceleration.Evidently you are finding it difficult to come up with a scheme to detect and use hardware acceleration that works on many driver-distribution scenarios. Time-honored principles in such a situation suggest that try with somethingsimple first. Assume one or twocommonly used driver-distribution scenario. Make it work. State the assumptions clearly. Then it will be a lot more clear why it doesn’t work with other cases.There are many knowledgeable people here in this blog who can and want to help you figure out how to make other scenarios work. At the very least you can tell us details about one system scenario where you made it work. That will help us know at least one way to get smooth fullscreen working as a last resort.Arun

  49. Tristan Wibberley says:

    I don’t understand the GL feature requirements for accelerated rendering. I have a pretty powerful graphics card but I’m missing two of the features. That means that while the amateur hobbyist totem movie player can play fullscreen flv videos using almost no CPU, and never skipping a frame, the “commercial quality” Adobe flash player plays an unwatchable slideshow. I don’t understand why adobe can’t make their software work properly when a smelly besandled nerd can.

  50. ashrael says:

    I do understand it must be very hard for a big company like adobe to create working code. I mean, if you attain all your products by buying up companies, it must be very hard to understand all that alien code. And I won’t ask for open-source flash from adobe, i know better. I do think adobe must clean up their act, or face the open-source consequences.Flash used to work on my m7000 armada (700mhz) and fullscreen too! Now my 3.7GHz system is just barely enough to play flash fullscreen!I do not think proprietary flash will be longlived if this situation continues.Hasta la victoria siempre! 😉

  51. What about a FreeBSD port of the player?Adobe already supports Linux, Mac and Solaris, all UNIX-compatible, and the later two making use of the X11 subsystem and OpenGL, just like FreeBSD.FreeBSD already have support for proprietary technologies, distributed as binaries, like nVidia drivers. Also, FreeBSD does have a comprehensible release schedule, with well documented APIs. I wonder why Adobe doesn’t support this platform yet.There are any plans? I would like to receive Adobe news regarding this issue in my email. Thanks Mike Melanson!

  52. Sat_ says:

    Dear Adobe, see it this way, people are using flash on 64 bit systems using npviewer.bin, this thing hogs a lot of computer.a lot of CPU power mean a lot of energy lostdo something, it’s really embarrassing that in 4+ years it’s still impossible to use it natively

  53. Alex Conrad says:

    Is there actually a *working* setup?I have troubles with fullscreen playback as well on an ATI RS960 Radeon X1200 Series (embedded in motherboard) with the distro’s radeon driver. I’ve only had successful fullscreen playback with my i810 intel driver (82945G/GZ), but I don’t seem to have anti-aliasing (I don’t think its supported by the chip).If there is a Adobe Flash Player for linux with hardware acceleration support, I expect the Adobe devs have seen the results… Are there any Adobe hardware recommandations for a full linux user experience?What hardware/drivers/setup have you guys been working on to have fullscreen, smooth and anti-aliased Flash 9 r115/124? Have you tweaked the drivers? Which? How?Thanks.Regards,Alex Conrad

  54. LuisManson says:

    Ok, i know this is closed source, but u noticed that one of the most requested feaures is 64bits support.why not to make a site where we can help voting the next…FIX… or feature??? is some way to give ppl what they want!most of us are not asking for bells and whistles only 64 bits support, wmode….thanks!

  55. Linux User says:

    Luis,Sign up for adobe’s issue tracker, and vote.http://bugs.adobe.com/jira/secure/BrowseProject.jspa

  56. Alejandro Nova says:

    Testing Astro Beta with KDE 4.0.82 (KDE 4.1 beta 2)As you may know, KDE 4.0.82 features KWin 4 as its windows manager, and KWin 4 is capable of doing the exact same set of screen animations that Compiz does. The experience with Astro here is awesome. I’m getting fullscreen antialiased video here, at speeds I’ve never seen before, and, from what I’m looking at (CPU usage for Flash Player / X.Org) Astro is using hardware acceleration here, despite the fact I’m running KWin with AIGLX, eye candy and all the bells and whistles.I’m thinking that the source of the bug between Astro and Compiz may be closer to Compiz and farther to Astro. Please, if you can, work with Compiz programmers and help them. And, don’t disable HW acceleration for Compiz, please 😉

  57. Mielno says:

    Nice work – I’ll waiting for next time.

  58. German Pulido says:

    I think it’s really funny how Adobe tries to implement shiny new features on a player that has many old simple bugs. I don’t care about the latest flashy features. I do care, however, about wmode/transparent for linux (and solaris, BSD, all the flash versions). I also care about 64-bit support. I think you know that adobe (with acrobat reader and flash player) and SUN Microsystems (with java) are the two companies that are holding 32-bits architectures alive. Yes, it’s that way. I think many people would use 64-bit only if there was a 64-bit acreobat reader, a 64-bit flash player and a 64-bit java plugin. Think about it, all the new features are just to disguise adobe’s lack of interest in fixing the old bugs (which in the end is what we, the users, need).Regards.

  59. SwitchBL8 says:

    So, you’re working on features that are not even in the top-3 most wanted (these are: 64-bit, wmode/transparency, and V4L2). How’s that for listening to users?

  60. Pierre says:

    64 Bits, and Wmode/transparency are always missing/buggy.Do something for !

  61. Jerome says:

    I cannot believe flash is still using RGB as its native format for video. This made sense for flash animation. But now, that flash is the main player for online video and using H264 as main codec, what a waste of ressources to do this extra RGB conversion and not take advantage of YUV hardware support:-( [ Read the post again. -Mike M. ]

  62. Kevin N. says:

    Is there any chance you can open the source for the bits that are giving you a hard time? You have opened the source for tamarine, and something to do with the audio system already (if I remember correctly), why not open the bits that deal with rendering (like what this post is about) and that deal with WMode. There seem to be plenty of knowledgeable people that would be willing to help, and that kind of access to at least some of the code could help individual distros get flash working on their individual platforms.

  63. Wade Arnold says:

    Is there a linux command or script that we can run that will show if the v4l2 device will show up in the flash player. We are working on a new capture card and device driver for linux and would like to support Flash.

  64. Chris Lees says:

    Thank you for your efforts in bringing an updated Flash Player to Linux.However, there are two things I don’t believe:1. Grepping glxinfo for “Direct rendering: Yes” causes crashes when grepping glxinfo for “SGI” doesn’t crash.2. GPU acceleration can’t work in a window when Compiz is running. I *must* be misunderstanding what you’re saying, because everyone has played Return To Castle Wolfenstein in a window with Compiz running. Well, maybe not everyone, but I certainly have.I’d also like to point out that Compiz doesn’t just come preinstalled – it even starts automatically in most distributions these days.Good work so far though, and lots of luck.

  65. Nille says:

    http://www.intel.com/Doesn't look as it should for me.I see the intel logo and some times i see the choose country for 1/10 of a second, then i see the “loading bar”.Then it’s white with only logo and foot of the page.If i turn of flash it works as it should.Firefox3.0[ Reproduced. Fixed locally and will be included in the final release. Thanks. -Mike M. ]

  66. Alex Conrad says:

    FYI, I have installed the latest ATI drivers (from their website) and the “client glx vendor string” is still SGI. I’ve tried all the ATI drivers I could find (open source, binaries packaged by the distro, binaries from ATI’s website) and I still get the damn “SGI”.I have opened a ticket on Ubuntu’s bug tracking:https://bugs.launchpad.net/ubuntu/+source/linux-restricted-modules/+bug/250792As you will read, I wanted to hack glxinfo so it would return a dummy string, but I suspect that flash is not grepping glxinfo’s output.I don’t really know if that workaround should be done by ATI or the glx guys (mesa?).Anyway, I have sent a mail to ATI’s linux driver team to know if they can fill up the data correctly so Flash Player can have fullscreen hardware acceleration enabled.NVIDIA users seem to have something besides SGI, which should work for them if they use the proprietary drivers.I really, *REALLY* need that fullscreen working on my linux box (Xubuntu Hardy) with the RS690 X1250 chipset. It’s a shame that the hardware detection is so poor. Wouldn’t “Open GL vendor string: ATI Technologies Inc.” at least been a better detection mechanism?I really hope there will be a Flash 9 update release with that fix *soon*.Thanks for the effort.

  67. Alex Conrad says:

    I’ve had talked with the Mesa developers.There are saying that “client glx vendor string” is the name of the author of the GLX layer. SGI is shown here as Silicon Graphics played an important rolein OpenGL standardization. Plus, they explained me that NVIDIA provides their own GLX layer and this is why it says NVIDIA. Everyone else uses the GLX initially made by SGI.Thus making it obvious that Adobe didn’t even try Flash Player for linux running with an ATI card and the fglrx drivers. Nor any other card than NVIDIA ones.Here’s the thread of what has been exchanged regarding that client glx vendor string:http://sourceforge.net/mailarchive/forum.php?forum_name=mesa3d-dev&max_rows=25&style=ultimate&viewmonth=200807&viewday=25Any upcoming Flash Player 9.0 release? I think a bugfix release could be done. Mean while, I’ll try hacking the GLX to have the string changed. I need that fullscreen working *badly*.HTH.Regards,Alex Conrad

  68. Howdy, me again. Sorry to comment on an old post, but…Are you using OpenGL code ported from the Windows version, or is it all handwritten? If the latter, it may be worthwhile to ask the X.org developers to add the RGB colorspace to their Xv implementations. At least one driver (nouveau) supports it, and I’m prepared to patch radeon to support it as well. The Intel drivers can also support it in HW, thanks to textured video, so patches could be written for them, too.~ C.

  69. Ian Romanick says:

    As one of Intel’s representatives to the OpenGL ARB, I’m appalled by this horrible misuse of the the GLX client string. The GLX client string conveys no information about the existence or quality hardware based rendering. It is intended for debugging purposes, and using it for anything other than that is completely and undeniably wrong.Please fix this bug. [ It is also the most reliable detection method we have found (that doesn’t crash on multiple problematic platforms). -Mike M. ]

  70. Ian Romanick says:

    If you find an interface that should work but crashes, please submit a bug. Do not rely on using interfaces in unintended or undocumented ways. I know that’s the standard way of doing things on Windows. We actually fix our bugs when we know about them, so you don’t have to do that here. Really.I think the fact that this “most reliable detection method” is reliable only on Nvidia’s closed-source driver is pretty clear evidence that it’s not at all reliable.The only semi-reliable thing to do here is to use the GL_RENDERER string. On the software-based indirect methods this is “Software Rasterizer” on recent versions of X. On older versions I think the renderer string would have just been “Mesa”.Even this isn’t really the right way to do it. The right way is to either let the user pick or at installation time compare the performance of the GL path and the non-GL. Pick the one that’s better. It is entirely possible that your software may beat older hardware. It is also entirely possible that a “software” GL version could beat your software. Stranger things have happened.

  71. MaurizioB says:

    Hello.Maybe I’m asking a stupid question, since I’m not a programmer or a graphics/xserver expert, either.Why can’t we use a system that works using compiz’s zoom features? When I want to watch a youtube video in full screen I don’t use flash internal full screen functions, but I zoom it using a compiz default plugin (“Zoom desktop”); by using this method I’m able to zoom to the flash video frame and watch any fullscreen clip without choppy framerates. So, the question is: isn’t there a way to use another “kind” of fullscreen that interacts with compiz, once it is detected by flashplayer?Regards,Maurizio

  72. Alex Conrad says:

    For your information, I never could make the FP9 9.0.115 (and 9.0.124) with a smooth fullscreen playback with:- ATI Radeon X1250: antialiased with the propritary drivers downloaded from ATI.com but slow fullscreen. I may have tweaked (or not) the settings throught the ATI GUI settings (using the “amdccle” command provided by the drivers). I fill all the GL_* requirements, but have “SGI” set as the “client glx vendor string”.- intel i845: fullscreen playback is okay, but not antialiased (fonts are ugly). Here I don’t fill all the GL_* requirements. I guess I’m fully running software rendering. I also have SGI set as the client vendor string.In both cases, I had much screen tearing.http://en.wikipedia.org/wiki/Page_tearinghttp://hifi-india.blogspot.com/2006/11/faq-what-is-screen-tearing-and-how-do-i.htmlAlthough, I just got a new box with a NVIDIA GeForce 7025 chip (motherboard integrated) and I was finally able to make Flash Player 9 for linux run correctly. I made it work with the Envy drivers provided by the ubuntu distro (downloading drivers from the NVIDIA site has not been tested, but I suspect that’s how Envy does it). After a reboot, it works out of the box. I do get fonts antialiased and the playback is smooth. Plus, I don’t seem to have any screen tearing effects anymore (or maybe less visible). I do have all the GL_* requirements and client vendor string is something besides “SGI” (see why from one of my above posts).I hope this feedback helps.Regards,Alexandre Conrad

  73. Joey Chan says:

    Xv not supporting RGB isn’t an excuse anymore.Many implementations of textured video have support for RGB planes, both free and proprietary.On top of that, being textured video, it means instant compatibility with compositors, including compiz.And while textured video is slower than overlay, it’s still faster than OpenGL.

  74. Steve says:

    Put me in the group with an Intel 3100 chipset that’s being incorrectly ignored. Is there work being done to address older chipsets like this?At least one poster has suggested translating back to YUV for Xv – will that not work?I’m having to go out and buy new hardware simply because Flash is too slow. Given where tech is today, that just feels inexcusable.

  75. Mark says:

    I’m sorry, but Flash video performance is nothing short of pathetic. My Blackberry will play virtually any video I throw at it with no problem, at 30 fps, yet a Core2Duo 2.8 GHz running Linux with GMA x4500 video chokes when asked to play some lo-res video from Hulu in fullscreen mode. Pathetic, pathetic, pathetic. Flash is the new Microsoft — forcing people to throw out perfectly good hardware because Adobe doesn’t care about efficiency. My purpose in posting this is not solely to offend, but primarily to provoke change. When are you guys gonna get a clue about how lousy the state of Flasy video is?

  76. toma says:

    I’m currently using the 64 bit flash player ver. 10.0 r22 with a radeonhd driver and hardware opengl support.Is this blog post still true in this version?Because flash videos are extremely slow in full screen mode.Can you please give a short update on the function?What do I need to do to get accelerated flash video?

  77. Jeremy says:

    How can I verify if 3D acceleration is active on my machine? My graphics chip (Nvidia 8400GS) supports all the required GPU features, and does not report a vendor of “SGI”, but firefox/X still take 100% of CPU in fullscreen mode, with about 5 fps.One possible problem – I’m using a discrete video card, but there are also some crappy onboard graphics on my machine. Does flash only look at the video card currently in use by X, or could it be seeing the (unused) onboard graphics chip and deciding my machine doesn’t qualify for 3D acceleration?

  78. SmSpillaz says:

    Adobe is full of crap when it comes to compiz. Compiz and OpenGL work perfectly fine together, it’s DRI that is not-so-well designed and the X developers are already well on their way to fixing that with DRI2 (And you should see that in October releases of distros).I haven’t actually tried the new version of flash yet, but from what I can tell, Adobe is either having an OpenGL window that flash displays in or they are using OpenGL to accelerate video and then generating pixmap content from them. The latter is just incredibly stupid because it means that you have ridiculous overhead going from stream->texture->pixmap->texture aagain with compiz, so I’m going to assume the former.The reason why it wouldn’t work is because DRI doesn’t support private framebuffers – it just takes the output of opengl and blits it to the screen. Advantages are that this is fast and requires no GPU memory management, disadvantages are that DRI only knows how to blit things to a screen and not a window, so blitting two things on top of each other ends in fail. This was probably exemplified by the fact that compiz behaves like a fullscreen opengl app.Once the DRI2 stuff drops in most of these problems should go away.Adobe – we already have a system in place for GPU accelerated video display and it’s called XV. It’s incredibly easy to implement and is much less bug-free than opengl is at the moment.Additionally, will you please stop using CPU arithmatic for compositing elements in a video together? It’s very easy to do these things with openGL.

  79. Scrambles says:

    Come on Adobe, everybody knows Flash performance is a laughingstock. One good example is this thread:http://entertainment.slashdot.org/comments.pl?sid=1249723&cid=28139761Flash is good at a great many things, but unfortunately video isn’t one of them. I had to buy my wife a new laptop because it wasn’t quite adequate for playing Hulu videos. Sure, I could download the same show illegally and play it just fine with VLC, but that’s a step further than we want to go.So I had to shell out a grand because Flash is so slow.With today’s technology? That’s outrageous.

  80. I must admit to being fairly disappointed by this. Intel’s accelerated drivers do fully implement OpenGL (and you’re not exactly fully using OpenGL), yet because they are derived from the official SGI ones in X.org (as they should be), Flash full screen video looks awful under them.I do hope you fix this issue. At the very least, give us the option – you already have a check box for “Enable hardware acceleration”. Thus far, from what I can tell, it does absolutely nothing. If we want to try it, let us try it and let us crash it.

  81. OK guys, you’re being too paranoid.I just edited the following binaries shipped with Ubuntu:/usr/lib/libGL.so.1.2/usr/lib/xorg/modules/extensions/libglx.soBoth contain the strings ^0SGI^0I changed the strings (one per file) to ^0ATI^0(Used ghex2, in Ubuntu’s ghex package, to find and change them)Result: fullscreen Flash is now running smoothly on my Intel X4500HD.This is a silly thing for me to have to do. Please, if the user selects “Enable Hardware Acceleration”, trust that the user does actually want to try it. Locking it to ATI and Nvidia users only is, well, kind of ridiculous, especially as those are the two vendors of proprietary (=plays badly with Linux) drivers.It WORKS with the X4500HD (and probably all the other Intel IGAs.) So please allow us to use it!

  82. nanonyme says:

    Please note that direct rendering string is not reliable since the “new” software rasterizer does direct rendering. It has nothing to do with hardware acceleration. You *could* always include a config file that includes allowed library names on *nix. That way distros could make sure for you that it keeps up-to-date. For example, using swrast_dri.so always implies software rendering so it should never be on the list. As far as I see it you should first check dri driver (checking from a listing in a text file), then driver capabilities (hardcoded to the Flash binary). Nothing more should be necessary. At worst you get indirect hardware-accelerated rendering. 😉 Just ship the driver with a sample config file that includes checking for dri drivers you know (probably ATi and nVidia; fglrx_dri.so for ATi, I don’t have nVidia installation at hand so can’t check that), let community fill in the rest. Afaik glxinfo should print dri driver used in stderr when environmental variable LIBGL_DEBUG=verbose is in effect.

  83. Anders Gnistrup says:

    I have just been testing the stand alone player and the plugin player version. But I am missing information howto varify that hardware acceleration is active.So the question is:How do i varify that hardware acceleration is active?Next question is the requirementslibs?, GLX features, OpenGL version etc.Please answer. I hate doing blackbox testing.If the information is available somewhere please give a hint.

  84. Turok says:

    I do not use a Desktop Environment, like Gnome, KDE, xfce, etc. I use Compiz-fusion as my window manager and Cairo-dock (OpenGL mode) as my little dock.Running flash videos in Firefox is sh*t. I then proceed to KILL compiz (and emerald) and cairo-dock so that I am left with a suspending, undecorated firefox window. I have NOTHING running. Flash still runs like the same pile of sh*t.I don’t know what the problem is, but it looks like it can only be NVidia drivers, Xorg, Firefox, or Flash; or some screwed up combo.

  85. VK says:

    Stuttering/slow full-screen flash video with poor response to ESC key or other keyboard input has been a persistent prob. I’ve been playing with both Ubuntu 9.04 and Fedora 11 on a dual-core laptop w/ 8G RAM and Nvidia 160M card that has 256MB RAM.Some observations watching fullscreen flash video (mostly @ hulu.com with several 64-bit flash releases, the most recent being 10.0.32.18):- generally tends to get worse over time. i.e. after I reboot and login things are generally smoother, but after a few suspend-resume cycles things are worse.- if I switch to KDE (with built-in KWin compositing), performance tends to be better than GNOME+compiz even after a couple of weeks of use. Most of my comparisons have been with various minor revs of FireFox 3.5 on Fedora 11. So, same OS + browser + flash plugin but switching from GNOME to KDE tends to more consistently perform better. Unfortunately, there are some other things keeping me on GNOME, and it doesn’t *always* help performance if I run KDE.- restarting browser makes no diff (and I ensured no child process was left running)- npviewer.bin and Xorg both jump up significantly in CPU util (50-80%) when things are slow, though they are still very active when things are running smooth- I am NOT using the nspluginwrapper; flash plugin is directly registered in FF3.5.- I’m using compiz w/ Emerald but have only disabled a few times with no improvement (but it’s possible I need to have more experience running this config before I declare “no improvement”)- I wait for the video buffer to be full (by hitting pause) before playing; doesn’t help.- 16:9 aspect ratio video seems slower (e.g. Tonight Show with Conan O’Brien) than 4:3 aspect ratio (e.g. Daily Show )- forcing OverrideGPUValidation = 1 in /etc/adobe/mms.cfg and restarting browser doesn’t make a difference.- I once tried stopping the browser and deleting my .adobe and .macromedia directories and I think it helped, but I haven’t done this enough times to confirm.- the audio stream is always fine- using the popup video (on hulu) when things are slow, I notice that the larger I size the window, the worse the performance (seems obvious; just noting for completeness)Here’s hoping for decent flash perf on Linux …

  86. Nigel Jones says:

    Is there any recent progress to this?I’m using Fedora 11 i386 with ATI V5200 gfx. I’m using the opensource stack since ATI have pulled out of proprietry driversvideo with mplayer of .wmv etc works fine.flash performance in firefox is AWFUL. really awful. Just a small window showing BBC news will drive firefox to 80% on a core duo 1.6Ghz system.Full screen is unwatchable. It’s more like a slideshow.I am using compiz — it does improve productivity. Other apps can do accelerated video with it. 1 year and a half ago, lots of problems but since @f11 things are very stable.Checking glxinfo I appear to be missing some capabilities, and of course the glx string is SGI:[jonesn@snowdon tmp]$ glxinfoname of display: :0.0display: :0 screen: 0direct rendering: Yesserver glx vendor string: SGIserver glx version string: 1.2server glx extensions:GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap,GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,GLX_OML_swap_method, GLX_SGI_swap_control, GLX_SGIS_multisample,GLX_SGIX_fbconfig, GLX_SGIX_visual_select_groupclient glx vendor string: SGIclient glx version string: 1.4client glx extensions:GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_allocate_memory,GLX_MESA_copy_sub_buffer, GLX_MESA_swap_control,GLX_MESA_swap_frame_usage, GLX_OML_swap_method, GLX_OML_sync_control,GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync,GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmapGLX version: 1.2GLX extensions:GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,GLX_MESA_swap_frame_usage, GLX_OML_swap_method, GLX_SGI_video_sync,GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_visual_select_group,GLX_EXT_texture_from_pixmapOpenGL vendor string: DRI R300 ProjectOpenGL renderer string: Mesa DRI R300 (RV530 71C4) 20090101 x86/MMX/SSE2 TCL DRI2OpenGL version string: 1.4 Mesa 7.6-develOpenGL extensions:GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_fragment_program,GL_ARB_imaging, GL_ARB_multisample, GL_ARB_multitexture,GL_ARB_point_parameters, GL_ARB_shadow, GL_ARB_shadow_ambient,GL_ARB_texture_border_clamp, GL_ARB_texture_compression,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_MESAX_texture_float,GL_ARB_texture_mirrored_repeat, GL_ARB_texture_rectangle,GL_ARB_transpose_matrix, GL_ARB_vertex_buffer_object,GL_ARB_vertex_program, GL_ARB_window_pos, GL_EXT_abgr, GL_EXT_bgra,GL_EXT_blend_color, GL_EXT_blend_equation_separate,GL_EXT_blend_func_separate, GL_EXT_blend_logic_op, GL_EXT_blend_minmax,GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array, GL_EXT_convolution,GL_EXT_copy_texture, GL_EXT_draw_range_elements,GL_EXT_framebuffer_object, GL_EXT_fog_coord,GL_EXT_gpu_program_parameters, GL_EXT_histogram, GL_EXT_multi_draw_arrays,GL_EXT_packed_depth_stencil, GL_EXT_packed_pixels,GL_EXT_point_parameters, GL_EXT_polygon_offset, 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_subtexture, GL_EXT_texture, GL_EXT_texture3D,GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add,GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod_bias,GL_EXT_texture_mirror_clamp, GL_EXT_texture_object,GL_EXT_texture_rectangle, GL_EXT_vertex_array, GL_EXT_vertex_array_bgra,GL_APPLE_packed_pixels, GL_ATI_blend_equation_separate,GL_ATI_texture_env_combine3, GL_ATI_texture_mirror_once,GL_ATI_separate_stencil, GL_IBM_multimode_draw_arrays,GL_IBM_rasterpos_clip, GL_IBM_texture_mirrored_repeat,GL_INGR_blend_func_separate, GL_MESA_pack_invert, GL_MESA_ycbcr_texture,GL_MESA_window_pos, GL_NV_blend_square, GL_NV_light_max_exponent,GL_NV_texture_rectangle, GL_NV_texgen_reflection, GL_NV_vertex_program,GL_OES_read_format, GL_SGI_color_matrix, GL_SGI_color_table,GL_SGIS_generate_mipmap, GL_SGIS_texture_border_clamp,GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_SUN_multi_draw_arrays

  87. Nicolas Cadio says:

    Hi,I try to use the GPU wmode on Ubuntu with OpenGL. I do some tests with a SWF on Firefox in the wmode window and GPU. The use of the CPU is the same for this 2 wmode.So I suppose that my SWF with the GPU wmode doesn’t use the graphics acceleration.This the result of glxinfo :name of display: :0.0get fences failed: -1param: 6, val: 0display: :0 screen: 0direct rendering: Yesserver glx vendor string: SGIserver glx version string: 1.2server glx extensions:GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap,GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,GLX_OML_swap_method, GLX_SGI_make_current_read, GLX_SGI_swap_control,GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_visual_select_groupclient glx vendor string: SGIclient glx version string: 1.4client glx extensions:GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_allocate_memory,GLX_MESA_copy_sub_buffer, GLX_MESA_swap_control,GLX_MESA_swap_frame_usage, GLX_OML_swap_method, GLX_OML_sync_control,GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync,GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmapGLX version: 1.2GLX extensions:GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,GLX_MESA_swap_control, GLX_MESA_swap_frame_usage, GLX_OML_swap_method,GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync,GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_visual_select_groupOpenGL vendor string: Tungsten Graphics, IncOpenGL renderer string: Mesa DRI Intel(R) 915GM GEM 20090326 2009Q1 RC2 x86/MMX/SSE2OpenGL version string: 1.4 Mesa 7.4OpenGL extensions:GL_ARB_depth_texture, GL_ARB_fragment_program, GL_ARB_multisample,GL_ARB_multitexture, GL_ARB_pixel_buffer_object, GL_ARB_point_parameters,GL_ARB_shadow, GL_ARB_texture_border_clamp, GL_ARB_texture_compression,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_mirrored_repeat,GL_ARB_texture_non_power_of_two, GL_ARB_texture_rectangle,GL_ARB_transpose_matrix, GL_ARB_vertex_buffer_object,GL_ARB_vertex_program, GL_ARB_window_pos, GL_EXT_abgr, GL_EXT_bgra,GL_EXT_blend_color, GL_EXT_blend_equation_separate,GL_EXT_blend_func_separate, GL_EXT_blend_logic_op, GL_EXT_blend_minmax,GL_EXT_blend_subtract, GL_EXT_clip_volume_hint, GL_EXT_cull_vertex,GL_EXT_compiled_vertex_array, GL_EXT_copy_texture,GL_EXT_draw_range_elements, GL_EXT_framebuffer_object, GL_EXT_fog_coord,GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil,GL_EXT_packed_pixels, GL_EXT_pixel_buffer_object, GL_EXT_point_parameters,GL_EXT_polygon_offset, GL_EXT_rescale_normal, GL_EXT_secondary_color,GL_EXT_separate_specular_color, GL_EXT_shadow_funcs, GL_EXT_stencil_wrap,GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D,GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add,GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod_bias,GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_vertex_array,GL_3DFX_texture_compression_FXT1, GL_APPLE_client_storage,GL_APPLE_packed_pixels, GL_ATI_blend_equation_separate,GL_ATI_texture_env_combine3, GL_IBM_rasterpos_clip,GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate,GL_MESA_pack_invert, GL_MESA_ycbcr_texture, GL_MESA_window_pos,GL_NV_blend_square, GL_NV_light_max_exponent, GL_NV_point_sprite,GL_NV_texture_rectangle, GL_NV_texgen_reflection, GL_NV_vertex_program,GL_NV_vertex_program1_1, GL_OES_read_format, GL_SGIS_generate_mipmap,GL_SGIS_texture_border_clamp, GL_SGIS_texture_edge_clamp,GL_SGIS_texture_lod, GL_SGIX_depth_texture, GL_SUN_multi_draw_arraysCan you help me to use the graphic acceleration with the Flash player 10 please ?Thanks, Nicolas.

  88. haxxor says:

    @Adobe:can you _please_ provide a way to force gpu acceleration regardless the driver we’re using?thanks for your crappy software supportgreets

  89. Chris Rankin says:

    [i]can you _please_ provide a way to force gpu acceleration regardless the driver we’re using?[/i]Have you already tried addingOverrideGPUValidation=1to your /etc/adobe/mms.cfg file?

  90. Nathan Higgins says:

    Has anyone actually managed to get the Override GPU option in /etc/adobe/mms.cfg to work? I just tried it to no avail (ATI Radeon mobile graphics)

  91. Nigel Jones says:

    On Fedora 12 / radeon, flash continues to perform really poorly — a couple of web browser tabs open can load the system heavily, and full screen video isn’t possible.Can we expect adobe to work with the open source development groups to come to some mutual agreement around how to make this perform better on linux.Right now my preferred option is to avoid flash at all costs.

  92. Snipes says:

    Just installed Ubuntu 9.10 on my Acer Aspire One. Flash is still choppy, laggy and crap.In XP it works fine. Even fullscreen with several applications in the background.So yet again it’s back to XP…

  93. Peter Cordes says:

    Even when flash uses pure software scaling, it shouldn’t be choppy. mplayer -vo x11 (no gl or xv, just XShm shared memory) has no problem playing scaling videos up to 1680×1050 fullscreen on my C2D 2.4GHz system. (E6600 CPU, dual channel DDR2-800 RAM). mplayer’s software scaler is asm optimized; isn’t flash’s? (if it isn’t, you probably can’t just copy mplayer’s library code, since it’s probably full, not lesser, GPL).e.g.mplayer -vo x11 -zoom -fs foo.mkv(where foo.mkv’s video stream is 720×480 h.264 high-profile, 2200kbps)has no choppiness at all. mplayer is using ~50% of one core, and Xorg is using 33% of the other core, _while they are still running at 1.6GHz_. cpufreq doesn’t even need to step the CPU up to full speed for smooth video!With -vo xv, mplayer uses 22%, Xorg uses 1-3%. I’m using fglrx on a 4670, but things would be similar with any X11 driver.Using hwac3 instead of software decoding the AC-3 audio stream save a few % on mplayer’s CPU usage.Flash player works reasonably well for me, since I don’t use compiz and I have the version downloaded by Ubuntu 9.10’s installer package, which seems to be the i386 version via nspluginwrapper (even though I run amd64 Ubuntu). So probably flash is actually using gl, since it seems smoother than it ever used to be.But for systems where you haven’t figured out how to get HW accel, SW scaling shouldn’t be too slow on modern CPUs! SSE2 is there for a reason, and that reason is DSP/multimedia stuff like this. It’s not the ideal solution, but runtime CPU detection (for SSE3/4, or for SSE2 in the first place on non-amd64) is a solved problem, and a fast-enough software-only scaler would keep almost everyone happy until everything works in the ideal way.I hate the fact that most online video is in flash, mostly because all the video-player plugins on windows were/are horrible. On GNU/Linux, mplayer-plugin works nicely. If real and quicktime plugins were more like that, instead of bloat-filled ad-ware, probably video on the web would more often be embeded video files, not flash applets. At least there are greasemonkey scripts for some sites to feed the .flv to a video plugin; a friend of mine uses that to good effect on his FreeBSD laptop. It’s certainly not a general solution, though.See, Internet, this is what you get when let proprietary software take over a key building block.(I know the Adobe Flash devs aren’t the people I should be directing that last rant at, but I’m unhappy that Flash has made web video suck so much. It’s only recently that it even supported a decent codec (h.264), but I’m very glad that at least it’s now using the best available video compression. I’ve tried to make this post helpful, even if I didn’t avoid hostility.)

  94. Jamie says:

    I’m not a flash expert, and don’t really understand the thing about not being able to use xv, but I trust your knowledge on the subject.However, couldn’t you support xv for the video playback parts that flash supports? – there is no hardware opengl for my video card, and flash videos are terribly blocky, yet can easily run fullscreen using only 2% cpu with mplayer and xv

  95. ssg1 says:

    Is it absolutely necessary to test for these opengl extensions and vendor string? i’m not an opengl expert, but scaling an image using opengl sounds like a kind of task my intel i945 could handle (or am i wrong?).