Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Broadcom Nexus API support for ANGLE WebGL #1343

Draft
wants to merge 55 commits into
base: main-next
Choose a base branch
from

Conversation

q66
Copy link

@q66 q66 commented May 27, 2024

This is the broadcom nexus angle/webgl support code originally written by @zdobersek and cleaned up by me. It seems to be working as I'm testing it on the device without apparent problems. It comes with some additional semi-backports (the ENABLE(VIDEO) fixes are upstream so they will disappear on next rebase, I will upstream some of the other minor fixes). The suspend/resume backport is fairly minimal as the original commit assumes presence of noncomposite webgl, which we don't have in the branch yet.

Otherwise it is a draft for now as other people need to look at it. Particularly the changes to ANGLE itself are not ideal.

I have other code elsewhere to support the new WPE platform API but not including that here for now (I cut it out for the time being).

magomez and others added 30 commits May 2, 2024 08:12
We need to configure UA for some apps that don't pass isValidUserAgentHeaderValue check, but it is still a valid header value.
Fix Security Origin handling in network process

Currently, when a custom uri scheme handler is registered, its
existence is not passed to the network process. Consequently,
when creating a SecurityOrigin object for an URI that uses a custom
scheme handler, the instance may be created as unique due
shouldTreatAsUniqueOrigin() not detecting the associated scheme as
registered (in LegacySchemeRegistry).

This will cause calls to SecurityPolicy::isAccessAllowed() to not
return the correct authorization in case a custom URI is whitelisted
using webkit_web_extension_add_origin_access_whitelist_entry() API,
which leads to the inclusion of the "Origin" header with the custom URI
in network requests when it should not be included in such case.
API is exposed via WebKitWebExtension, similiar to the CORS whitelist.
Wildcards can be used, with '*' replacing any string
Signed-off-by: Eugene Mutavchi <[email protected]>
…ndow.close is called

When allow_scripts_to_close_windows property is set to true, scripts can
close windows that are not opened by them. But after window.close API is
called, page is in "is closing" and browser expects window to be closed.
When integrator wants to hide browser window/suspend browser, instead of
closing it, page will be stuck in "is closing" state, where some APIs
don't work anymore.

This change introduces new property allow_move_to_suspend_on_window_close
(disabled by default) which removes setting "is closing" state and just
sends notification to browser integration, without any expectations on
how it's handled.
[MemoryPressure] Handle video memory usage besides normal memory

Delete JIT code only on synchronous requests:

Tune memory pressure settings for rapid mem usage changes

When playing an asset with video, frequent seek/jump operations within
a short period may cause rapid memory increases. The current pressure
settings may not allow (enough) memory release in time to avoid an
app running in a container to be killed due it reaching the memory
limits. To allow sufficient, in time, memory release, the release
needs to happen with the "synchrounous" flag set to true, allowing
full garbage collection cycle when reaching critical limits.

Furthermore, the critical threshold needs to be lowered as well
considering that the release is not instantaneous and on embedded
devices the 95% original threshold does not allow enough room for
mem release on apps with lower allowed memory usage limits.

[1203][MemoryPressureHandler] Increase default fraction values

Do critical and synchonous memory release when limit is exceeded and print log message.

Signed-off-by: Andrzej Surdej <[email protected]>

Improve 'MemoryPressureMonitor' to use cgroup memory measurements within container

MemoryPressureMonitor: Fix cgroup memory statistics

Fix "memory.memsw.usage_in_bytes" file path so it acounts for swap also
- Disable caching of ArrayBuffer XHR.
- Setting the environment variable WPE_DISABLE_XHR_RESPONSE_CACHING disables the
memory cache for xhr responses. This is useful to reduce the memory footprint
when the responses are quite big and cannot be reused.

XMLHttpReques: allow disabling the cache for selected protocols
TCPKeepAlive is implemented only for libsoup 3.x
blino and others added 25 commits May 2, 2024 08:14
This saves about 1500 kB on a production build on ARMv7.
This fix helps to build debug version of WPE for 32-bit RPi.
Unfortunately the build can be done only with at least -O1 (for 32-bit RPi).
Needed for building on a X86-64 desktop, where the linker complains
about this option a lot.
Destroying RemoteInspectorHTTPServer with on different thread that
it was created on causes RELEASE_ASSERT to be triggered
(via ~RemoteInspectorClient -> ~TimerBase).

Such case happens when main UIProcess loop doesn't run in the main thread
(like WPE WebKitBrowser plugin scenario)
With this port being dynamic, it's not possible to add specific iptables rules allowing this traffic -
and with restrictive rules this traffic may be blocked.
Allow selecting the port - controlled by WEBKIT_INSPECTOR_PORT env
Fetch the text of sibling node to the grid/table row
…tion

Allow <div> or <td> retrieval of 'visibleText' for nested <div> & <td> elements.
Make Voice Guidance to differentiate between an actual page load
and an iframe being added to the DOM.
- Add missing functions
- Add proper error handling (similar to WebPlatformForEmbedded#823 with optional as in WebPlatformForEmbedded#875) for both UIProcess and WebProcess
Implement registerNotifyCallback via filesystem watch

Original from 2.28 pull request:
WebPlatformForEmbedded#1039
Some custom URI schemes may assign a different meaning to the port of an
URI. Webkit restricts, by default, usage of certain ports. To bypass
the check, an env var allows specifying which protocols shall be
allowed unrestricted ports usage. Some network based protocols (e.g.
http, https, and others) are kept still restricted.
Enabling MALLOC_HEAP_BREAKDOWN currently disables MemoryPressureHandler.
We would like to keep both enabled to be able to track
memory related issues.
…how_bug.cgi?id=273314

Reviewed by NOBODY (OOPS!).

Recent refactorings introduced the breakages. They were fixed
partially in ea2be40 but not
entirely.

Notably, a misplacement of an #endif in WebCoreArgumentCoders
resulted in strange IPC errors.

* Source/WebCore/Modules/WebGPU/GPUDevice.cpp:
* Source/WebCore/Modules/WebGPU/GPUDevice.h:
* Source/WebCore/page/InteractionRegion.cpp:
(WebCore::interactionRegionForRenderedRegion):
* Source/WebCore/page/Page.cpp:
(WebCore::Page::shouldBlockLayerTreeFreezingForVideo):
* Source/WebCore/platform/graphics/MediaResourceSniffer.cpp:
* Source/WebCore/platform/graphics/MediaResourceSniffer.h:
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::startObservingNowPlayingMetadata):
(WebKit::WebPage::stopObservingNowPlayingMetadata):
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.