Summary: | Unable to activate compositing with KWin + xserver >= 1.14.99.2 | ||
---|---|---|---|
Product: | [Plasma] kwin | Reporter: | Hrvoje Senjan <hrvoje.senjan> |
Component: | scene-opengl | Assignee: | KWin default assignee <kwin-bugs-null> |
Status: | RESOLVED DUPLICATE | ||
Severity: | normal | CC: | dschridde+kde, thomas.pfeiffer |
Priority: | NOR | ||
Version: | 4.11.5 | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Attachments: | support info |
Description
Hrvoje Senjan
2013-10-21 00:00:48 UTC
I'm experiencing the same problem. Here are the - according to Martin - relevant lines from kwin' console output: QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread kwin(2039) KWin::Compositor::slotCompositingOptionsInitialized: Initializing OpenGL compositing kwin(2039) KWin::GlxBackend::initDrawableConfigs: Drawable visual (depth 24 ): 0x "228" kwin(2039) KWin::GlxBackend::initDrawableConfigs: Drawable visual (depth 32 ): 0x "85" kwin(2039): Failed to get visual from fbconfig kwin(2039) KWin::OpenGLBackend::setFailed: Creating the OpenGL rendering failed: "Could not initialize the buffer" And here is my glxinfo output: name of display: :0 display: :0 screen: 0 direct rendering: Yes server glx vendor string: SGI server glx version string: 1.4 server glx extensions: GLX_ARB_create_context, GLX_ARB_create_context_profile, GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB, GLX_ARB_multisample, GLX_EXT_create_context_es2_profile, GLX_EXT_framebuffer_sRGB, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, GLX_OML_swap_method, GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_SGI_swap_control client glx vendor string: Mesa Project and SGI client glx version string: 1.4 client glx extensions: GLX_ARB_create_context, GLX_ARB_create_context_profile, GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_create_context_es2_profile, GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control, GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync GLX version: 1.4 GLX extensions: GLX_ARB_create_context, GLX_ARB_create_context_profile, GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_create_context_es2_profile, GLX_EXT_framebuffer_sRGB, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, GLX_MESA_multithread_makecurrent, GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control, GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync OpenGL vendor string: X.Org OpenGL renderer string: Gallium 0.4 on AMD TURKS OpenGL core profile version string: 3.1 (Core Profile) Mesa 10.0.2 OpenGL core profile shading language version string: 1.40 OpenGL core profile context flags: (none) OpenGL core profile extensions: GL_AMD_conservative_depth, GL_AMD_draw_buffers_blend, GL_AMD_seamless_cubemap_per_texture, GL_AMD_shader_stencil_export, GL_ARB_ES2_compatibility, GL_ARB_base_instance, GL_ARB_blend_func_extended, GL_ARB_conservative_depth, GL_ARB_copy_buffer, GL_ARB_debug_output, GL_ARB_depth_buffer_float, GL_ARB_depth_clamp, GL_ARB_draw_buffers, GL_ARB_draw_buffers_blend, GL_ARB_draw_elements_base_vertex, GL_ARB_draw_instanced, GL_ARB_explicit_attrib_location, GL_ARB_fragment_coord_conventions, GL_ARB_fragment_shader, GL_ARB_framebuffer_object, GL_ARB_framebuffer_sRGB, GL_ARB_get_program_binary, GL_ARB_half_float_pixel, GL_ARB_half_float_vertex, GL_ARB_instanced_arrays, GL_ARB_internalformat_query, GL_ARB_invalidate_subdata, GL_ARB_map_buffer_alignment, GL_ARB_map_buffer_range, GL_ARB_occlusion_query2, GL_ARB_pixel_buffer_object, GL_ARB_point_sprite, GL_ARB_provoking_vertex, GL_ARB_robustness, GL_ARB_sampler_objects, GL_ARB_seamless_cube_map, GL_ARB_shader_bit_encoding, GL_ARB_shader_objects, GL_ARB_shader_stencil_export, GL_ARB_shader_texture_lod, GL_ARB_shading_language_420pack, GL_ARB_shading_language_packing, GL_ARB_sync, GL_ARB_texture_buffer_object, GL_ARB_texture_buffer_range, GL_ARB_texture_compression_rgtc, GL_ARB_texture_cube_map_array, GL_ARB_texture_float, GL_ARB_texture_mirror_clamp_to_edge, GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two, GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui, GL_ARB_texture_storage, GL_ARB_texture_storage_multisample, GL_ARB_texture_swizzle, GL_ARB_timer_query, GL_ARB_transform_feedback2, GL_ARB_transform_feedback3, GL_ARB_transform_feedback_instanced, GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_bgra, GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_binding, GL_ARB_vertex_shader, GL_ARB_vertex_type_10f_11f_11f_rev, GL_ARB_vertex_type_2_10_10_10_rev, GL_ATI_blend_equation_separate, GL_ATI_texture_compression_3dc, GL_ATI_texture_float, GL_ATI_texture_mirror_once, GL_EXT_abgr, GL_EXT_blend_equation_separate, GL_EXT_draw_buffers2, GL_EXT_draw_instanced, GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_multisample_blit_scaled, GL_EXT_framebuffer_sRGB, GL_EXT_packed_depth_stencil, GL_EXT_packed_float, GL_EXT_pixel_buffer_object, GL_EXT_provoking_vertex, GL_EXT_texture_array, GL_EXT_texture_compression_latc, GL_EXT_texture_compression_rgtc, GL_EXT_texture_filter_anisotropic, GL_EXT_texture_integer, GL_EXT_texture_mirror_clamp, GL_EXT_texture_sRGB, GL_EXT_texture_sRGB_decode, GL_EXT_texture_shared_exponent, GL_EXT_texture_snorm, GL_EXT_texture_swizzle, GL_EXT_timer_query, GL_EXT_transform_feedback, GL_EXT_vertex_array_bgra, GL_IBM_multimode_draw_arrays, GL_KHR_debug, GL_MESA_pack_invert, GL_MESA_texture_signed_rgba, GL_NV_conditional_render, GL_NV_depth_clamp, GL_NV_packed_depth_stencil, GL_NV_texture_barrier, GL_NV_vdpau_interop, GL_OES_EGL_image, GL_OES_read_format OpenGL version string: 3.0 Mesa 10.0.2 OpenGL shading language version string: 1.30 OpenGL context flags: (none) OpenGL extensions: GL_AMD_conservative_depth, GL_AMD_draw_buffers_blend, GL_AMD_seamless_cubemap_per_texture, GL_AMD_shader_stencil_export, GL_APPLE_packed_pixels, GL_APPLE_vertex_array_object, GL_ARB_ES2_compatibility, GL_ARB_base_instance, GL_ARB_blend_func_extended, GL_ARB_color_buffer_float, GL_ARB_conservative_depth, GL_ARB_copy_buffer, GL_ARB_debug_output, GL_ARB_depth_buffer_float, GL_ARB_depth_clamp, GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_draw_buffers_blend, GL_ARB_draw_elements_base_vertex, GL_ARB_draw_instanced, GL_ARB_explicit_attrib_location, GL_ARB_fragment_coord_conventions, GL_ARB_fragment_program, GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader, GL_ARB_framebuffer_object, GL_ARB_framebuffer_sRGB, GL_ARB_get_program_binary, GL_ARB_half_float_pixel, GL_ARB_half_float_vertex, GL_ARB_instanced_arrays, GL_ARB_internalformat_query, GL_ARB_invalidate_subdata, GL_ARB_map_buffer_alignment, GL_ARB_map_buffer_range, GL_ARB_multisample, GL_ARB_multitexture, GL_ARB_occlusion_query, GL_ARB_occlusion_query2, GL_ARB_pixel_buffer_object, GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_provoking_vertex, GL_ARB_robustness, GL_ARB_sampler_objects, GL_ARB_seamless_cube_map, GL_ARB_shader_bit_encoding, GL_ARB_shader_objects, GL_ARB_shader_stencil_export, GL_ARB_shader_texture_lod, GL_ARB_shading_language_100, GL_ARB_shading_language_420pack, GL_ARB_shading_language_packing, GL_ARB_shadow, 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_cube_map_array, 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_mirror_clamp_to_edge, GL_ARB_texture_mirrored_repeat, GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two, GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui, GL_ARB_texture_storage, GL_ARB_texture_storage_multisample, GL_ARB_texture_swizzle, GL_ARB_timer_query, GL_ARB_transform_feedback2, GL_ARB_transform_feedback3, GL_ARB_transform_feedback_instanced, GL_ARB_transpose_matrix, GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_bgra, GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_binding, GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_ARB_vertex_type_10f_11f_11f_rev, GL_ARB_vertex_type_2_10_10_10_rev, GL_ARB_window_pos, GL_ATI_blend_equation_separate, GL_ATI_draw_buffers, GL_ATI_separate_stencil, GL_ATI_texture_compression_3dc, GL_ATI_texture_env_combine3, GL_ATI_texture_float, GL_ATI_texture_mirror_once, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color, GL_EXT_blend_equation_separate, 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_buffers2, GL_EXT_draw_instanced, GL_EXT_draw_range_elements, GL_EXT_fog_coord, GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_multisample_blit_scaled, GL_EXT_framebuffer_object, GL_EXT_framebuffer_sRGB, GL_EXT_gpu_program_parameters, GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil, GL_EXT_packed_float, GL_EXT_packed_pixels, GL_EXT_pixel_buffer_object, GL_EXT_point_parameters, GL_EXT_polygon_offset, 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_subtexture, GL_EXT_texture, GL_EXT_texture3D, GL_EXT_texture_array, GL_EXT_texture_compression_latc, GL_EXT_texture_compression_rgtc, 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_integer, GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp, GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_texture_sRGB, GL_EXT_texture_sRGB_decode, GL_EXT_texture_shared_exponent, GL_EXT_texture_snorm, GL_EXT_texture_swizzle, GL_EXT_timer_query, GL_EXT_transform_feedback, GL_EXT_vertex_array, GL_EXT_vertex_array_bgra, GL_IBM_multimode_draw_arrays, GL_IBM_rasterpos_clip, GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate, GL_KHR_debug, GL_MESA_pack_invert, GL_MESA_texture_array, GL_MESA_texture_signed_rgba, GL_MESA_window_pos, GL_NV_blend_square, GL_NV_conditional_render, GL_NV_depth_clamp, GL_NV_fog_distance, GL_NV_light_max_exponent, GL_NV_packed_depth_stencil, GL_NV_primitive_restart, GL_NV_texgen_reflection, GL_NV_texture_barrier, GL_NV_texture_env_combine4, GL_NV_texture_rectangle, GL_NV_vdpau_interop, GL_OES_EGL_image, GL_OES_read_format, GL_SGIS_generate_mipmap, GL_SGIS_texture_border_clamp, GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_SUN_multi_draw_arrays I'm running Linux 3.11.10.3 (or 3.12.8 with the same problem), xorg-server 1.15.0, mesa 10.0.2 and libdrm 2.4.52 Using either "kwin_gles" or "KWIN_OPENGL_INTERFACE=egl kwin --replace" fixes the problem. (In reply to comment #1) > I'm running Linux 3.11.10.3 (or 3.12.8 with the same problem), xorg-server > 1.15.0, mesa 10.0.2 and libdrm 2.4.52 Yes, downstream report didn't move any further -> https://bugs.freedesktop.org/show_bug.cgi?id=70706 Please see bug #329908, likely being bug #327310 Either set the compositor to OGL2.0 (config or environment) or (if that doesn't help) bypass the glXCreateContextAttribsARB branch in glxbackend.cpp (or in kwin/libkwineffects/kwinglutils_funcs.cpp enforce the function pointer to be 0L) Both bugs you linked seem to be specific to Intel HD, but I have a Radeon card. Setting to OpenGL 2.0 via kwinrc did not help. The other two possible solutions would mean I'd have to change the source code and then compile kwin myself, right? I don't think I have the skills to do that... There's also bug #329984 which seems a dupe by chance and despite the little information provided, it's apparently radeon (crash in mesa, user mentions fglrx -> was radeon. qed.) - also the upstream bug has AMD reporters. You'd have to recompile KWin, but Hrvoje should be able to do so ;-) If it "fixes" this for him, we'll likely need a patch to disable glXCreateContextAttribsARB by environment variable (and pot. by default) ps, when this happens and *before* restarting the kwin compositor, call nvidia-settings -q UsedDedicatedGPUMemory -q TotalDedicatedGPUMemory I guess you see why ;-) sorry, wrong bug - ignore last comment. Yep, i can compile it - just point me what to do ;-) Which fbconfig call is the 'guilty' one? It's likely not the fbconfig calls, but "glXCreateContextAttribsARB" In kwin/libkwineffects/kwinglutils_funcs.cpp:258ff // if (hasGLExtension("GLX_ARB_create_context")) // glXCreateContextAttribsARB = (glXCreateContextAttribsARB_func) getProcAddress("glXCreateContextAttribsARB"); // else glXCreateContextAttribsARB = NULL; This will cause "legacy" context creation. Same error with that, kwin(26086): Failed to get visual from fbconfig kwin(26086) KWin::OpenGLBackend::setFailed: Creating the OpenGL rendering failed: "Could not initialize the buffer" function is no-op did you reboot before? (i guess you'll at least have to unload the kernel module) I'm using radeon/Mesa, so i guess i shouldn't reboot ;-) Will logout though see bug #329908 comment #9 - the GPU may have entered an invalid state Created attachment 84808 [details]
support info
Hm, indeed compositing operates correctly post-reboot with glx.
Other side-effect is that moving windows, etc is noticeably slower.
> slower
As compared to GLES? That's probably in the cards (Better with OGL1?)
About the original issue, it might be sufficient to just disable glCoreProfile (ie. choose GL1 or GL2, but never even touch GL3)
@Thomas P.:
kwriteconfig --file kwinrc --group Compositing --key GLCore false
then reboot (really)
(In reply to comment #15) > As compared to GLES? That's probably in the cards (Better with OGL1?) Compared to GLES/egl/Xrender/no compositing. Will try vanilla KWin and no GL3 Switching to OGL2 via kwriteconfig brought back compositing! OGL3 did work with earlier versions of the graphics stack, though, so it does indeed seem to be a bug in xserver or whatever. @Martin Yes, it's an upstream bug. However this one apparently has the potential to make kwin entirely breaking OpenGL for endusers. They've to know that it's required to disable OGL3 - what's hard enough because of the failsafe mechanism in the config dialog - and then reboot to get it back usable. Therefore I propose to skip OGL3.1 context creation if glx vendor contains "mesa" unless overruled by environment ("KWIN_ALLOW_MESA_GL3=1")? Objections? (No, I'm not happy with this either) *** This bug has been marked as a duplicate of bug 327310 *** > Therefore I propose to skip OGL3.1 context creation if glx vendor contains
> "mesa" unless overruled by environment ("KWIN_ALLOW_MESA_GL3=1")?
>
> Objections? (No, I'm not happy with this either)
For KWin/4 we could also extend the opengl_test application. In KWin/5 I
suggest that we implement support for GLX_MESA_query_renderer.
(In reply to comment #19) > > Therefore I propose to skip OGL3.1 context creation if glx vendor contains > > "mesa" unless overruled by environment ("KWIN_ALLOW_MESA_GL3=1")? > > > > Objections? (No, I'm not happy with this either) > For KWin/4 we could also extend the opengl_test application. Atm, this apparently affects radeon as well as intel (wanna bet on nouveau?) -> Does GL3 actually work on Sandy or Ivy? (Like it creates such context - not like it doesn't terribly crash ;-) > -> Does GL3 actually work on Sandy or Ivy? (Like it creates such context -
> not like it doesn't terribly crash ;-)
just wanted to switch to GL 3, just to notice that I'm using it already (and
yes it works! ;-). Here the debug output on Debian Testing:
Compositing
===========
Qt Graphics System: raster
Compositing is active
Compositing Type: OpenGL
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Sandybridge Mobile
OpenGL version string: 3.1 (Core Profile) Mesa 9.2.2
OpenGL shading language version string: 1.40
Driver: Intel
GPU class: SandyBridge
OpenGL version: 3.1
GLSL version: 1.40
Mesa version: 9.2.2
X server version: 1.14.5
Linux kernel version: 3.12
Direct rendering: yes
Requires strict binding: no
GLSL shaders: yes
Texture NPOT support: yes
Virtual Machine: no
OpenGL 2 Shaders are used
Painting blocks for vertical retrace: no
(In reply to comment #21) > X server version: 1.14.5 Was working here too until xserver version from the bug title ;-) > > X server version: 1.14.5
>
> Was working here too until xserver version from the bug title ;-)
/me pets his good old Debian Testing
/me thinks that means we actually have no confirmation for Sandy/Ivy/AnyMesaDriver and XOrg 1.14.5, do we? s/1.14.5/1.15/g OpenGL vendor string: X.Org OpenGL renderer string: Gallium 0.4 on AMD REDWOOD OpenGL version string: OpenGL ES 3.0 Mesa 10.0.2 OpenGL shading language version string: OpenGL ES GLSL ES 3.0 Driver: R600G GPU class: EVERGREEN OpenGL version: 3.0 GLSL version: 3.0 Mesa version: 10.0.2 X server version: 1.15 Linux kernel version: 3.13 Direct rendering: yes Requires strict binding: no GLSL shaders: yes Texture NPOT support: yes Virtual Machine: no GL KWin currently does not work here: kwin(9123): Failed to get visual from fbconfig kwin(9123) KWin::OpenGLBackend::setFailed: Creating the OpenGL rendering failed: "Could not initialize the buffer" Anything you want me to test? see lower part of comment #15 current interest is whether this actually works on _any_ chip and xorg 1.15 - notably on sandy/ivybridge (intel), so if you've such chip, it would be great if you could test it. (In reply to comment #27) > see lower part of comment #15 > current interest is whether this actually works on _any_ chip and xorg 1.15 > - notably on sandy/ivybridge (intel), so if you've such chip, it would be > great if you could test it. Sorry, only have this AMD Redwood. I have to partially withdraw my comment that switching to OpenGL 2.0 brought back compositing: It does so only on every second boot. When switch my computer on, I get no compositing. When I reboot, it works again. Now compositing completely stopped working. It is still set to OpenGL 2.0, but it doesn't run. When I talked to Martin Gräßlin about the bug on January 22nd, he suggested to run "KWIN_OPENGL_INTERFACE=egl kwin --replace &" and that worked then, but it doesn't work anymore now. kwin_gles still works fine, though. debug output still being "Could not initialize the buffer"? The setting should be meaningless when KWIN_OPENGL_INTERFACE is exported. Correction: "KWIN_OPENGL_INTERFACE=egl kwin --replace &" does still work. The last time I tried, compositing had been completely deactivated because it had crashed KWin before (or at least KWin assumed it did). testing now r115937 |