OSSystems / meta-browser

OpenEmbedded/Yocto BSP layer for Web Browsers
MIT License
184 stars 191 forks source link

chromium: incorporate upstream ANGLE and Swiftshader changes #697

Closed MaxIhlenfeldt closed 1 year ago

MaxIhlenfeldt commented 1 year ago

As discovered by @rakuco during the discussion off #695, we missed some upstream changes to what libraries are built and installed for ANGLE and Swiftshader:

MaxIhlenfeldt commented 1 year ago

At least on my local build, the sysroot looks fine.

@rwmacleod maybe you could do a check that there are no runtime errors? I don't think I can verify that.

MaxIhlenfeldt commented 1 year ago

please wait for @rwmacleod before merging.

Ack.

The permissions being used to install the files are a bit mixed up, but apparently upstream has the same issue :/

Yes, I tried to use the same permission that the upstream install script uses. I hope I got them right...

rakuco commented 1 year ago

The permissions being used to install the files are a bit mixed up, but apparently upstream has the same issue :/

Yes, I tried to use the same permission that the upstream install script uses. I hope I got them right...

I've sent https://chromium-review.googlesource.com/c/chromium/src/+/4296549 to check if this is just an oversight.

rwmacleod commented 1 year ago

Sorry for the delay. I see that this is merged upstream but I've kicked off a build for qemux86-64 qemuarm rpi4-64 and I'll test runtime for at least 2 of those targets.

rwmacleod commented 1 year ago

Hey, So chromium works fine on master with these changes. I've been a bit busy so let me know if I've missed something.

raspberrypi4-64:~$ ls -l /proc/1242/exe lrwxrwxrwx 1 foo foo 0 Mar 7 00:00 /proc/1242/exe -> /usr/lib/chromium/chromium-bin

looks like we need to change the perms of libvulkan but the EGL, GLES are as expected:

raspberrypi4-64:~$ ls -l /usr/lib/chromium/ -rwsr-xr-x 1 root root 15480 Mar 9 2018 chrome-sandbox -rw-r--r-- 1 root root 610313 Mar 9 2018 chrome_100_percent.pak -rw-r--r-- 1 root root 913218 Mar 9 2018 chrome_200_percent.pak -rwxr-xr-x 1 root root 990392 Mar 9 2018 chrome_crashpad_handler -rwxr-xr-x 1 root root 215323216 Mar 9 2018 chromium-bin -rwxr-xr-x 1 root root 1941 Mar 9 2018 chromium-wrapper -rw-r--r-- 1 root root 10541264 Mar 9 2018 icudtl.dat -rw-r--r-- 1 root root 49760 Mar 9 2018 libEGL.so -rw-r--r-- 1 root root 5767344 Mar 9 2018 libGLESv2.so -rw-r--r-- 1 root root 19505296 Mar 9 2018 libvk_swiftshader.so -rwxr-xr-x 1 root root 422856 Mar 9 2018 libvulkan.so.1 drwxr-xr-x 2 root root 4096 Mar 9 2018 locales -rw-r--r-- 1 root root 7574790 Mar 9 2018 resources.pak -rw-r--r-- 1 root root 162336 Mar 9 2018 snapshot_blob.bin -rw-r--r-- 1 root root 477936 Mar 9 2018 v8_context_snapshot.bin -rw-r--r-- 1 root root 107 Mar 9 2018 vk_swiftshader_icd.json

These libraries aren't used by the main process it seems: raspberrypi4-64:~$ grep GL /proc/1242/maps 7fb01a0000-7fb0217000 r-xp 00000000 b3:02 3985 /usr/lib/libGL.so.1.2.0 7fb0217000-7fb022d000 ---p 00077000 b3:02 3985 /usr/lib/libGL.so.1.2.0 7fb022d000-7fb0230000 r--p 0007d000 b3:02 3985 /usr/lib/libGL.so.1.2.0 7fb0230000-7fb0231000 rw-p 00080000 b3:02 3985 /usr/lib/libGL.so.1.2.0

but are used by one of the child processes:

raspberrypi4-64:~$ grep GLES /proc//maps 2> /dev/null /proc/1346/maps:7fadb70000-7fadcc1000 r--p 00000000 b3:02 3674 /usr/lib/chromium/libGLESv2.so /proc/1346/maps:7fadcc1000-7fadcd0000 ---p 00151000 b3:02 3674 /usr/lib/chromium/libGLESv2.so /proc/1346/maps:7fadcd0000-7fae09a000 r-xp 00150000 b3:02 3674 /usr/lib/chromium/libGLESv2.so /proc/1346/maps:7fae09a000-7fae0a9000 ---p 0052a000 b3:02 3674 /usr/lib/chromium/libGLESv2.so /proc/1346/maps:7fae0a9000-7fae0e0000 r--p 00519000 b3:02 3674 /usr/lib/chromium/libGLESv2.so /proc/1346/maps:7fae0e0000-7fae0ef000 ---p 00570000 b3:02 3674 /usr/lib/chromium/libGLESv2.so /proc/1346/maps:7fae0ef000-7fae120000 rw-p 0054f000 b3:02 3674 /usr/lib/chromium/libGLESv2.so raspberrypi4-64:~$ grep EGL /proc//maps 2>/dev/null /proc/1346/maps:7fadb30000-7fadb35000 r--p 00000000 b3:02 3673 /usr/lib/chromium/libEGL.so /proc/1346/maps:7fadb35000-7fadb44000 ---p 00005000 b3:02 3673 /usr/lib/chromium/libEGL.so /proc/1346/maps:7fadb44000-7fadb4c000 r-xp 00004000 b3:02 3673 /usr/lib/chromium/libEGL.so /proc/1346/maps:7fadb4c000-7fadb5b000 ---p 0001c000 b3:02 3673 /usr/lib/chromium/libEGL.so /proc/1346/maps:7fadb5b000-7fadb5c000 r--p 0000b000 b3:02 3673 /usr/lib/chromium/libEGL.so /proc/1346/maps:7fadb5c000-7fadb6b000 ---p 0002c000 b3:02 3673 /usr/lib/chromium/libEGL.so /proc/1346/maps:7fadb6b000-7fadb6c000 rw-p 0000b000 b3:02 3673 /usr/lib/chromium/libEGL.so

raspberrypi4-64:~$ cat /proc/1346/cmdline /usr/lib/chromium/chromium-bin --type=gpu-process --crashpad-handler-pid=0 --enable-crash-reporter=,stable --change-stack-guard-on-fork=enable --gpu-preferences=WAAAAAAAAAAgAAAIAAAAAAAAAAAAAAAAAABgAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAABAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAA== --use-gl=angle --use-angle=swiftshader-webgl --shared-files --field-trial-handle=0,i,17464429872325917283,7622676165658080321,131072

raspberrypi4-64:~$ cat /proc/1342/cmdline /usr/lib/chromium/chromium-bin --type=renderer --crashpad-handler-pid=0 --enable-crash-reporter=,stable --change-stack-guard-on-fork=enable --first-renderer-process --lang=en-US --num-raster-threads=2 --enable-main-frame-before-activation --renderer-client-id=6 --time-ticks-at-unix-epoch=-1678147077178358 --launch-time-ticks=161391578 --shared-files=v8_context_snapshot_data:100 --field-trial-handle=0,i,17464429872325917283,7622676165658080321,131072

That's about all I have time for today. I hope it helps.

MaxIhlenfeldt commented 1 year ago

Sorry for taking so long to reply, last week has been busy.

That's about all I have time for today. I hope it helps.

Thanks @rwmacleod, your findings sound reasonable to me, so I think we can ship this.

MaxIhlenfeldt commented 1 year ago

Squashed it manually, but maybe it would make sense to enable it to be done automatically by Github for this repository?

MaxIhlenfeldt commented 1 year ago

Also, thank you all for the reviews and testing!

otavio commented 1 year ago

@MaxIhlenfeldt I enabled the squash option.

MaxIhlenfeldt commented 1 year ago

I enabled the squash option.

Thanks!