Bug 56237 - Cannot start weston with multiple GPUs (optimus)
Summary: Cannot start weston with multiple GPUs (optimus)
Status: RESOLVED FIXED
Alias: None
Product: Wayland
Classification: Unclassified
Component: weston (show other bugs)
Version: unspecified
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Wayland bug list
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-10-20 21:26 UTC by alanw
Modified: 2012-10-29 20:31 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Description alanw 2012-10-20 21:26:11 UTC
On an Nvidia optimus notebook with Intel SandyBridge GPU as primary, Weston can only be launched when nouveau kernel module is unloaded and only one card is present at dev/dri/

If two cards are present I have an error message: 

Date: 2012-10-20 CEST
[23:22:00.194] weston 0.95.0
               http://wayland.freedesktop.org/
               Bug reports to: https://bugs.freedesktop.org/enter_bug.cgi?product=weston
               Build:  
[23:22:00.194] OS: Linux, 3.5.0-17-generic, #28-Ubuntu SMP Tue Oct 9 19:31:23 UTC 2012, x86_64
[23:22:00.195] Loading module '/usr/lib/weston/drm-backend.so'
[23:22:00.197] initializing drm backend
[23:22:00.270] using /dev/dri/card1
libEGL warning: unsupported platform Windows
[23:22:00.355] EGL version: 1.4 (DRI2)
[23:22:00.355] EGL vendor: Mesa Project
[23:22:00.355] EGL client APIs: OpenGL OpenGL_ES OpenGL_ES2 
[23:22:00.355] EGL extensions: EGL_MESA_drm_image EGL_WL_bind_wayland_display
               EGL_KHR_image_base EGL_KHR_gl_renderbuffer_image
               EGL_KHR_surfaceless_context EGL_KHR_create_context
[23:22:00.355] GL version: OpenGL ES 2.0 Mesa 9.0
[23:22:00.355] GLSL version: OpenGL ES GLSL ES 1.0.16
[23:22:00.355] GL vendor: nouveau
[23:22:00.355] GL renderer: Gallium 0.4 on NVC1
[23:22:00.355] GL extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays
               GL_EXT_texture_filter_anisotropic
               GL_EXT_texture_compression_dxt1 GL_EXT_texture_format_BGRA8888
               GL_OES_depth24 GL_OES_element_index_uint
               GL_OES_fbo_render_mipmap GL_OES_mapbuffer GL_OES_rgb8_rgba8
               GL_OES_standard_derivatives GL_OES_stencil8 GL_OES_texture_3D
               GL_OES_texture_npot GL_OES_EGL_image GL_OES_depth_texture
               GL_OES_packed_depth_stencil GL_EXT_texture_type_2_10_10_10_REV
               GL_APPLE_texture_max_level GL_EXT_read_format_bgra
               GL_NV_fbo_color_attachments GL_OES_EGL_image_external
               GL_OES_vertex_array_object GL_EXT_texture_rg
               GL_EXT_unpack_subimage GL_NV_draw_buffers GL_NV_read_buffer
[23:22:00.423] No currently active connector found.
[23:22:00.423] failed to create output for /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card1
[23:22:00.444] failed to create compositor

So weston chooese the wrong card to use.
Is there a way to specify the card to use ?

If nouveau is unloaded everything works fine.

Thank you,
Attila Jakosa
Comment 1 Kristian Høgsberg 2012-10-29 20:31:00 UTC
This commit on weston master should fix the problem:


commit 0af066ff25329278ed48f1a62b980f359ad3d235
Author: David Herrmann <dh.herrmann@googlemail.com>
Date:   Mon Oct 29 19:21:16 2012 +0100

    compositor-drm: prefer PCI boot_vga GPU over other GPUs
    
    If we can find a boot_vga PCI GPU, we should prefer it over any other GPU
    that is connected to the system. The boot_vga flag tells us that this GPU
    is the primary system GPU.
    
    This fixes problems on two-GPU-systems were the wrong GPU is used. It also
    fixes systems were DisplayLink GPUs are available with lower IDs than PCI
    GPUs (although, this seems unlikely).
    
    Note that udev_enumerate guarantees that the entry-list is sorted. So for
    systems that have platform-GPUs, these should almost always be reported
    prior to hotpluggable (PCI, USB, ...) GPUs, as the kernel probes them
    first.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=56237
    
    Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.