LibWeb+Ladybird: Add option to enable the AffineCommandExecutorCPU

This adds a `--experimental-cpu-transforms` option to Ladybird and
WebContent (which defaults to false/off).

When enabled the AffineCommandExecutorCPU will be used to handle
painting transformed stacking contexts (i.e. stacking contexts where
the transform is something other than a simple translation). The regular
command executor will still handle the non-transformed cases.

This is hidden under a flag as the `AffineCommandExecutorCPU` is very
incomplete now. It missing support for clipping, text, and other basic
commands. Once most common commands have been implemented this flag
will be removed.
This commit is contained in:
MacDue
2024-05-27 19:28:05 +01:00
committed by Andreas Kling
parent b9db9013f5
commit 9c711bc868
10 changed files with 55 additions and 9 deletions

View File

@@ -97,6 +97,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
bool expose_internals_object = false;
bool use_lagom_networking = false;
bool use_gpu_painting = false;
bool use_experimental_cpu_transform_support = false;
bool wait_for_debugger = false;
bool log_all_js_exceptions = false;
bool enable_idl_tracing = false;
@@ -109,6 +110,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
args_parser.add_option(expose_internals_object, "Expose internals object", "expose-internals-object");
args_parser.add_option(use_lagom_networking, "Enable Lagom servers for networking", "use-lagom-networking");
args_parser.add_option(use_gpu_painting, "Enable GPU painting", "use-gpu-painting");
args_parser.add_option(use_experimental_cpu_transform_support, "Enable experimental CPU transform support", "experimental-cpu-transforms");
args_parser.add_option(wait_for_debugger, "Wait for debugger", "wait-for-debugger");
args_parser.add_option(mach_server_name, "Mach server name", "mach-server-name", 0, "mach_server_name");
args_parser.add_option(log_all_js_exceptions, "Log all JavaScript exceptions", "log-all-js-exceptions");
@@ -130,6 +132,10 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
WebContent::PageClient::set_use_gpu_painter();
}
if (use_experimental_cpu_transform_support) {
WebContent::PageClient::set_use_experimental_cpu_transform_support();
}
#if defined(AK_OS_MACOS)
if (!mach_server_name.is_empty()) {
Core::Platform::register_with_mach_server(mach_server_name);