GithubHelp home page GithubHelp logo

Comments (12)

arnoldthebat avatar arnoldthebat commented on June 10, 2024 1

Hi @Trucido

Fantastic work!

Ill take a look but I think the problem will be a lack of Freon drivers for Nouveau. These I believe need to be written specifically for the Freon stack. Hopefully Neverware will open source it, so Ill keep reviewing Gerrit in hope.

Other than that, as I get some time, Ill review the NW build and see what I can figure out from the above!

from chromiumos.

Trucido avatar Trucido commented on June 10, 2024

I know this is an old issue but still "Open" but the Nouveau open source nvidia driver works fairly decently in my limited testing on a nvidia-legacy card. Maybe we could poke around Neverware CloudReady to see how they implement Nouveau (I noticed they use kernel 4.4.79 with extra drivers, though not sure how much they've backported).

Edit: Nouveau doesn't support every device though and can be buggy, also Chromium OS/Chrome OS doesn't seem to ship the full list of driver bug workarounds or software rendering workarounds (in this case; the relevant nvidia-related ones). Most of those workarounds and blacklists are either fixed, defunct, or are rare corner cases though but I did notice force-enabling rasterization was glitchy on this old geforce 8400m GS notebook but otherwise seemed to work fine in wayland/freon from neverware's fork of Chromium OS

If this has already been fixed/implemented then sorry for the noise

Edit2: Okay so apparnetly the special builds do include nouveau, however it must need some special trickery to work properly since ui process fails after attempting to start many times. I'll install from command line and poke around some more and update with a reply if i find a solution (if i have time to poke around)

from chromiumos.

Trucido avatar Trucido commented on June 10, 2024

Found the issue with nvidia, missing nouveau_drv.so (and associated 'nv' one too i think) in /usr/lib64/xorg/modules/drivers/
theoretically it should work if it was compiled with nv/nouveau support, the firmware is present in /lib/firmware/ and the kernel driver is present as well and it loads fine for framebuffer. maybe eventually i'll try compiling my own build... though I still want to investigate how neverware got freon/frecon working with nouveau, it was pretty smooth except for broken cryptographer for sync token in their builds

Edit: Poking around Neverware CloudReady's ChromiumOS fork I noticed the following files:
/usr/lib64/libdrm_nouveau.so
/usr/lib64/libdrm_nouveau.so.2
/usr/lib64/libdrm_nouveau.so.2.0.0
/usr/lib64/dri/nouveau_vieux_dri.so
/usr/lib64/dri/nouveau_dri.so

also, they have some scripts in /opt and a bunch of fixXXX.conf files in /etc/init such as "fixgpu.conf" which disable some problematic external GPUs if the machine has both an intel and discreet GPU (the machine i'm testing on only has nvidia)

Still i'm curious how they got freon/wayland working with nouveau and how one might compile CrOS with native freon/nouveau support. Looks like it has drivers for intel, amd, and nvidia and no Xorg

from chromiumos.

Trucido avatar Trucido commented on June 10, 2024

I discovered that neverware left in their /var/db stuff which includes all of the ebuilds, environments, USE flags and other things used for their build (which is fully working with wayland/Freon on a lot of nvidia, AMD, and of course Intel GPUs).
It may be as simple as enabling some USE flags in make.conf, make.profile, or package.use or something although it looks like some of the ebuilds were modified as well. I've uploaded a tarball below if anyone wants to take a crack at this (though keep in mind they broke something in the crypto stuff since ~/log/chrome shows errors from cryptographer.cc and nigori about invalid default key. asks every login for sync passphrase and fails to sync).Would be nice if we could get support in arnoldthebat's builds for more than just intel and AMD.

Below file(s) should all be under GPLv2 I believe.

var_overlay.zip

There's also some interesting stuff in their dev_image directory, and some scripts in /opt/neverware though I'm not sure of the licensing on the latter in order to share it (they have a free version for download/install though, which can be inspected while booted from the USB or perhaps parts of the image dm'd and loop'd, or in virtualbox. they have instructions for vbox I believe)

Not sure if relevant but the kernel cmdline is: BOOT_IMAGE=foo boot=local rootwait ro noresume noswap loglevel=3 noinitrd console= root=PARTUUID=foo i915.modeset=1 cros_legacy cros_debug

and the command line under chrome://chrome shows this (I assume this is the session manager command of sorts)
/opt/google/chrome/chrome --ppapi-flash-path=/opt/google/chrome/pepper/libpepflashplayer.so --ppapi-flash-version=20170808.1 --ui-prioritize-in-gpu-process --use-gl=egl --gpu-sandbox-failures-fatal=no --enable-logging --log-level=1 --use-cras --enable-wayland-server --user-data-dir=/home/chronos --max-unused-resource-memory-usage-percentage=5 --system-developer-mode --login-profile=user --default-wallpaper-is-oem --aura-legacy-power-button --default-wallpaper-large=/usr/share/chromeos-assets/wallpaper/oem_large.jpg --default-wallpaper-small=/usr/share/chromeos-assets/wallpaper/oem_small.jpg --default-wallpaper-is-oem --enable-prefixed-encrypted-media --enterprise-enrollment-initial-modulus=15 --enterprise-enrollment-modulus-limit=19 --login-manager --first-exec-after-boot --vmodule=screen_locker=2,webui_screen_locker=2,lock_state_controller=2,webui_login_view=2,power_button_observer=2,*/ui/display/manager/chromeos/*=1,*/ash/display/*=1,*/ui/ozone/*=1,*zygote*=1,*plugin*=2,auto_enrollment_controller=1,*chromeos/login/*=1

and below is a (huge wall of text) grep for nouveau and nvidia from var/db/pkg/*/* (sorry I'd format it better but i'm doing this mobile from a chromebook)
Some of the modified ebuilds I inspected had either some patches removed or some added, and some extra lines for various gpu hardware support. I could probably track down the patch files if needed since they should be in their distfiles. I wouldn't be surprised if some of their modifications are based on @arnoldthebat 's work

media-libs/mesa-13.1.0-r3/IUSE:video_cards_intel video_cards_radeon video_cards_radeonsi video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno +classic debug dri egl +gallium -gbm gles1 gles2 +llvm +nptl pic selinux shared-glapi kernel_FreeBSD vulkan xlib-glx X cros_host cros_workon_tree_286d9bc36c9a9302b6578a2d791a97f70c98ff74 profiling

media-libs/mesa-13.1.0-r3/USE:abi_x86_64 amd64 classic dri egl elibc_glibc gallium gbm gles2 kernel_linux kernel_sources llvm nptl shared-glapi userland_GNU video_cards_intel video_cards_nouveau video_cards_radeon video_cards_radeonsi

media-libs/mesa-13.1.0-r3/mesa-13.1.0-r3.ebuild:VIDEO_CARDS="${INTEL_CARDS} ${RADEON_CARDS} mach64 mga nouveau r128 savage sis vmware tdfx via freedreno"

media-libs/mesa-13.1.0-r3/mesa-13.1.0-r3.ebuild: driver_enable video_cards_nouveau nouveau

media-libs/mesa-13.1.0-r3/mesa-13.1.0-r3.ebuild: gallium_driver_enable video_cards_nouveau nouveau

media-libs/mesa-13.1.0-r3/mesa-13.1.0-r3.ebuild: local gallium_drivers_files=( i915_dri.so nouveau_dri.so r300_dri.so r600_dri.so msm_dri.so swrast_dri.so )

media-libs/mesa-13.1.0-r3/mesa-13.1.0-r3.ebuild: local classic_drivers_files=( i810_dri.so i965_dri.so nouveau_vieux_dri.so radeon_dri.so r200_dri.so )

sys-kernel/chromeover-kernel-4.4.14-r33/IUSE: [snip] builtin_fw_t210_nouveau [snip]

sys-kernel/chromeover-kernel-4.4.14-r33/chromeover-kernel-4.4.14-r33.ebuild:# For mmiotracing drivers. Such as nouveau for RE.

x11-apps/intel-gpu-tools-1.15/IUSE:test-programs unwind video_cards_nouveau

x11-apps/intel-gpu-tools-1.15/IUSE_EFFECTIVE:abi_x86_64 alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 elibc_AIX elibc_Cygwin elibc_Darwin elibc_DragonFly elibc_FreeBSD elibc_HPUX elibc_Interix elibc_NetBSD elibc_OpenBSD elibc_SunOS elibc_Winnt elibc_glibc elibc_mintlib elibc_musl elibc_uclibc hppa hppa-hpux ia64 ia64-hpux ia64-linux kernel_AIX kernel_Darwin kernel_FreeBSD kernel_HPUX kernel_NetBSD kernel_OpenBSD kernel_SunOS kernel_Winnt kernel_freemint kernel_linux m68k m68k-mint mips nios2 ppc ppc-aix ppc-macos ppc-openbsd ppc64 ppc64-linux prefix prefix-guest riscv s390 sh sparc sparc-fbsd sparc-solaris sparc64-freebsd sparc64-solaris test-programs unwind userland_BSD userland_GNU video_cards_nouveau x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt

x11-apps/intel-gpu-tools-1.15/USE:abi_x86_64 amd64 elibc_glibc kernel_linux userland_GNU video_cards_nouveau

x11-apps/intel-gpu-tools-1.15/intel-gpu-tools-1.15.ebuild:IUSE="test-programs unwind video_cards_nouveau"

x11-apps/intel-gpu-tools-1.15/intel-gpu-tools-1.15.ebuild: >=x11-libs/libdrm-2.4.64[video_cards_intel,video_cards_nouveau?]

x11-apps/intel-gpu-tools-1.15/intel-gpu-tools-1.15.ebuild: $(use_enable video_cards_nouveau nouveau)

x11-libs/libdrm-2.4.70-r21/IUSE:video_cards_amdgpu video_cards_exynos video_cards_freedreno video_cards_intel video_cards_mediatek video_cards_nouveau video_cards_omap video_cards_radeon video_cards_vmware video_cards_rockchip libkms manpages +udev static-libs cros_host cros_workon_tree_aee2be3e199a878e04c46a01072c5bd101cf6c57 profiling

x11-libs/libdrm-2.4.70-r21/USE:abi_x86_64 amd64 elibc_glibc kernel_linux kernel_sources libkms udev userland_GNU video_cards_amdgpu video_cards_intel video_cards_nouveau video_cards_radeon

x11-libs/libdrm-2.4.70-r21/libdrm-2.4.70-r21.ebuild:VIDEO_CARDS="amdgpu exynos freedreno intel mediatek nouveau omap radeon vmware rockchip"

x11-libs/libdrm-2.4.70-r21/libdrm-2.4.70-r21.ebuild: $(use_enable video_cards_nouveau nouveau)

sys-apps/flashrom-0.9.4-r477/IUSE:+atahpt +bitbang_spi +buspirate_spi dediprog +drkaiser +dummy +fdtmap ft2232_spi +gfxnvidia +internal +linux_i2c +linux_mtd +linux_spi +nic3com +nicintel +nicintel_spi +nicnatsemi +nicrealtek +ogp_spi +raiden_debug_spi +rayer_spi +satasii +satamv +serprog static use_os_timer +wiki cros_host cros_host cros_workon_tree_7dc7fbb0bf60fb5cf5c1ea97b5c21f39b2342851 profiling
sys-apps/flashrom-0.9.4-r477/USE:abi_x86_64 amd64 atahpt bitbang_spi buspirate_spi drkaiser dummy elibc_glibc fdtmap gfxnvidia internal kernel_linux kernel_sources linux_i2c linux_mtd linux_spi nic3com nicintel nicintel_spi nicnatsemi nicrealtek ogp_spi raiden_debug_spi rayer_spi satamv satasii serprog static userland_GNU wiki

sys-apps/flashrom-0.9.4-r477/flashrom-0.9.4-r477.ebuild:+dummy +fdtmap ft2232_spi +gfxnvidia +internal +linux_i2c +linux_mtd +linux_spi

sys-apps/flashrom-0.9.4-r477/flashrom-0.9.4-r477.ebuild: gfxnvidia? ( sys-apps/pciutils[static-libs(+)] )

sys-apps/flashrom-0.9.4-r477/flashrom-0.9.4-r477.ebuild: ft2232_spi gfxnvidia linux_i2c linux_mtd linux_spi \

x11-libs/libva-1.7.1-r1/IUSE:+drm egl opengl vdpau wayland X video_cards_dummy video_cards_nvidia video_cards_intel video_cards_fglrx abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64

x11-libs/libva-1.7.1-r1/IUSE_EFFECTIVE:X abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_x86_32 abi_x86_64 abi_x86_x32 alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 drm egl elibc_AIX elibc_Cygwin elibc_Darwin elibc_DragonFly elibc_FreeBSD elibc_HPUX elibc_Interix elibc_NetBSD elibc_OpenBSD elibc_SunOS elibc_Winnt elibc_glibc elibc_mintlib elibc_musl elibc_uclibc hppa hppa-hpux ia64 ia64-hpux ia64-linux kernel_AIX kernel_Darwin kernel_FreeBSD kernel_HPUX kernel_NetBSD kernel_OpenBSD kernel_SunOS kernel_Winnt kernel_freemint kernel_linux m68k m68k-mint mips nios2 opengl ppc ppc-aix ppc-macos ppc-openbsd ppc64 ppc64-linux prefix prefix-guest riscv s390 sh sparc sparc-fbsd sparc-solaris sparc64-freebsd sparc64-solaris userland_BSD userland_GNU vdpau video_cards_dummy video_cards_fglrx video_cards_intel video_cards_nvidia wayland x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt

x11-libs/libva-1.7.1-r1/libva-1.7.1-r1.ebuild:VIDEO_CARDS="dummy nvidia intel fglrx"

x11-libs/libva-1.7.1-r1/libva-1.7.1-r1.ebuild:PDEPEND="video_cards_nvidia? ( x11-libs/libva-vdpau-driver[${MULTILIB_USEDEP}] )

from chromiumos.

Trucido avatar Trucido commented on June 10, 2024

Thanks, i'll investigate more as well when I have the time.
From what I understand, Freon just runs on wayland+ozone directly from KMS (nouveau already provides a suitable KMS just like intel and AMD). in theory it should utilize the same DRI/egl drivers and/or interfaces as any other, but I could be wrong. (like recent GNOME 3.xx releases, though they use Gallium3D for non-native apps I think? or maybe I'm getting names confused).
My Fedora testbed shows these same files below that were present on neverware's build, though i'm unsure if there was any special hacking done to them on neverware:
/usr/lib64/libdrm_nouveau.so
/usr/lib64/libdrm_nouveau.so.2
/usr/lib64/libdrm_nouveau.so.2.0.0
/usr/lib64/dri/nouveau_vieux_dri.so
/usr/lib64/dri/nouveau_dri.so
^these were all present on both neverware and fedora

In addition, below is some possibly relevant misc files I found on the fedora box:

kernel module on fedora box: (it's present and loaded in your builds in lsmod, but the module location must be located elsewhere):
/usr/lib/modules/4.xx.x/kernel/drivers/gpu/drm/nouveau/nouveau.ko.xz
modules associated/loaded alongside Nouveau on the fedora box: (i'll have to compare to the lsmod on your builds but some might be built-ins):
nouveau i2c_algo_bit drm_kms_helper ttm drm video
wmi dell_wmi mxm_wmi dell_laptop (these are likely all mostly mobile/Dell related)

Xorg X11 drivers (non-wayland):
/usr/lib64/xorg/modules/drivers/nouveau_drv.so
/usr/lib64/dri/nouveau_drv_video.so (I THINK this is only relevant to Xorg, or perhaps something with vdpau)
/usr/lib64/gallium-pipe/pipe_nouveau.so (Gallium3D, likely only relevant to Linux desktops. wasn't on neverware)

And the below files from the fedora install are vdpau related (which I never got working on fedora due to their mesa build which refuses to load legacy firmware files only available by extracting from an old nvidia binary driver, and they disabled hardware decode for all nvidia due to paranoid FOSS/GPL concerns.)
/usr/lib64/vdpau/libvdpau_nouveau.so.1
/usr/lib64/vdpau/libvdpau_nouveau.so.1.0
/usr/lib64/vdpau/libvdpau_nouveau.so.1.0.0
youtube and netflix were playing great on neverware though, better than any other OS. chrome://gpu showed hardware acceleration but I never verified it. on Linux hardware decode/encode is blacklisted unless chrome/chromium is compiled with chromeos=1 and presumably the appropriate vdpau drivers are available.
I'm not too concerned about the vdpau stuff but it's worth mentioning some nvidia decoder/encoder capabilities require nonfree firmware with nouveau (and some cards require them for power management) the ones from kernel.org are suitable for the newer more relevant GPUs but the nvidia-legacy ones are missing though I don't think anyone really cares much about them since the legacy decoders are poor & limited nowadays. the newer non-legacy firmwares are moreso important due to proper power management and such - like GMxxx and GPxxx which are already present in /lib/firmware/nvidia/ on both your builds and neverware's

from chromiumos.

arnoldthebat avatar arnoldthebat commented on June 10, 2024

Try this as a test please: http://srv11.arnoldthebat.co.uk/testing/chromiumos_image.bin

It has all the files you note....

from chromiumos.

ggy7 avatar ggy7 commented on June 10, 2024

This guy https://github.com/crosbuilder/CustomBuilds/releases/tag/R60-9592.85.2017_08_29_0007 build have integrated nouveau drivers, his chromium r60 boots with nvidia gtx670, but i got tearing when scrolling chromium os pages. So i don't know, would be this ifo useful or not. Build above isn't bootable in my case. Thnx.

from chromiumos.

skylar-eng avatar skylar-eng commented on June 10, 2024

Are we any closer to getting Chromium OS to boot up with nVidia graphics?

from chromiumos.

arnoldthebat avatar arnoldthebat commented on June 10, 2024

Have a look at the latest r64 special builds. I have reports of nvidia working now....

https://arnoldthebat.co.uk/wordpress/2018/02/11/chromiumos-enhanced-special-build-r64-10176-b/

from chromiumos.

skylar-eng avatar skylar-eng commented on June 10, 2024

Seems to be working in the latest special build R64.
Only issue I have so far is HDD installation does not work(installer hangs, and eventually reboots the system without finishing the install.)

from chromiumos.

skylar-eng avatar skylar-eng commented on June 10, 2024

*note that the above comment only applies to my Dell Precision M4400 with a 160GB Toshiba HDD. It works fine on an HP pavilion guys with a 245GB Toshiba HDD and Intel i3.

from chromiumos.

arnoldthebat avatar arnoldthebat commented on June 10, 2024

Not sure on the HDD element to be fair. NVidia working is a great win tho!

from chromiumos.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.