Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:justkidding:arch
ungoogled-chromium
_service:obs_scm:aur-1719448990.1b9485c.obscpio
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:obs_scm:aur-1719448990.1b9485c.obscpio of Package ungoogled-chromium
07070100000000000081A4000000000000000000000001667CB59E00000ED3000000000000000000000000000000000000002000000000aur-1719448990.1b9485c/.SRCINFOpkgbase = ungoogled-chromium pkgdesc = A lightweight approach to removing Google web service dependency pkgver = 126.0.6478.126 pkgrel = 1 url = https://github.com/ungoogled-software/ungoogled-chromium arch = x86_64 license = BSD-3-Clause makedepends = python makedepends = gn makedepends = ninja makedepends = clang makedepends = lld makedepends = gperf makedepends = nodejs makedepends = pipewire makedepends = rust makedepends = qt5-base makedepends = qt6-base makedepends = java-runtime-headless makedepends = git depends = gtk3 depends = nss depends = alsa-lib depends = xdg-utils depends = libxss depends = libcups depends = libgcrypt depends = ttf-liberation depends = systemd depends = dbus depends = libpulse depends = pciutils depends = libva depends = libffi depends = desktop-file-utils depends = hicolor-icon-theme depends = fontconfig depends = brotli depends = libjpeg depends = icu depends = dav1d depends = flac depends = libxml2 depends = libwebp depends = minizip depends = opus depends = harfbuzz depends = libxslt depends = libpng depends = freetype2 optdepends = pipewire: WebRTC desktop sharing under Wayland optdepends = kdialog: support for native dialogs in Plasma optdepends = gtk4: for --gtk-version=4 (GTK4 IME might work better on Wayland) optdepends = org.freedesktop.secrets: password storage backend on GNOME / Xfce optdepends = kwallet: support for storing passwords in KWallet on Plasma optdepends = chromium-extension-web-store: Web Store Functionality provides = chromium=126.0.6478.126 provides = chromedriver=126.0.6478.126 conflicts = chromium conflicts = chromedriver options = !lto source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-126.0.6478.126.tar.xz source = https://github.com/foutrelis/chromium-launcher/archive/v8/chromium-launcher-8.tar.gz source = https://gitlab.com/Matt.Jolly/chromium-patches/-/archive/126/chromium-patches-126.tar.bz2 source = allow-ANGLEImplementation-kVulkan.patch source = drop-flag-unsupported-by-clang17.patch source = compiler-rt-adjust-paths.patch source = use-oauth2-client-switches-as-default.patch source = ungoogled-chromium-126.0.6478.126-1.tar.gz::https://github.com/ungoogled-software/ungoogled-chromium/archive/126.0.6478.126-1.tar.gz source = ninja-out-of-order-generation-fix.patch source = 0001-vaapi-flag-ozone-wayland.patch source = 0001-adjust-buffer-format-order.patch source = 0001-enable-linux-unstable-deb-target.patch source = 0001-ozone-wayland-implement-text_input_manager_v3.patch source = 0001-ozone-wayland-implement-text_input_manager-fixes.patch sha256sums = 5d5206637e659f03e006cd8b6b269c49c0c2c697d10517e14dbcea851831e143 sha256sums = 213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a sha256sums = daf0df74d2601c35fd66a746942d9ca3fc521ede92312f85af51d94c399fd6e0 sha256sums = 8f81059d79040ec598b5fb077808ec69d26d6c9cbebf9c4f4ea48b388a2596c5 sha256sums = 028acc97299cec5d1ed9f456bbdc462807fa491277d266db2aa1d405d3cd753d sha256sums = b3de01b7df227478687d7517f61a777450dca765756002c80c4915f271e2d961 sha256sums = a9b417b96daec33c9059065e15b3a92ae1bf4b59f89d353659b335d9e0379db6 sha256sums = b901f4a6a0401facb6bbe6645eac62f4af902f6885e27d35cc354c49ebe191b8 sha256sums = 813e6a1209ab72e4ab34f5f062412087e9664189d7b8f1dc1d0bb9481c574c45 sha256sums = 9a5594293616e1390462af1f50276ee29fd6075ffab0e3f944f6346cb2eb8aec sha256sums = 8ba5c67b7eb6cacd2dbbc29e6766169f0fca3bbb07779b1a0a76c913f17d343f sha256sums = 2a44756404e13c97d000cc0d859604d6848163998ea2f838b3b9bb2c840967e3 sha256sums = d9974ddb50777be428fd0fa1e01ffe4b587065ba6adefea33678e1b3e25d1285 sha256sums = a2da75d0c20529f2d635050e0662941c0820264ea9371eb900b9d90b5968fa6a pkgname = ungoogled-chromium 07070100000001000081A4000000000000000000000001667CB59E0000002B000000000000000000000000000000000000002200000000aur-1719448990.1b9485c/.gitignore*.pkg.* ungoogled-chromium src pkg *.tar.* 07070100000002000081A4000000000000000000000001667CB59E000009B4000000000000000000000000000000000000003D00000000aur-1719448990.1b9485c/0001-adjust-buffer-format-order.patchFrom 44a44adecbc97242371cf67f8bbd5553c95fa123 Mon Sep 17 00:00:00 2001 From: Yaowei Zhou <yaowei.zhou@intel.com> Date: Wed, 18 Jan 2023 17:00:50 +0800 Subject: [PATCH] Adjust the order of wayland drm and zwp dma buf in WaylandBufferFactory Adjust the order as buffer format implementation of zwp dma buffer from Mutter, which will cause inconsistent with gbm support format list of GPU process. Bug: N/A Change-Id: Ice63c52fbd6eff0a099c35c0943e24c1fd1a1d70 --- diff --git a/ui/ozone/platform/wayland/host/wayland_buffer_factory.cc b/ui/ozone/platform/wayland/host/wayland_buffer_factory.cc index 2376d77..7d6c032e 100644 --- a/ui/ozone/platform/wayland/host/wayland_buffer_factory.cc +++ b/ui/ozone/platform/wayland/host/wayland_buffer_factory.cc @@ -25,13 +25,13 @@ uint32_t planes_count, wl::OnRequestBufferCallback callback) const { DCHECK(SupportsDmabuf()); - if (wayland_zwp_dmabuf_) { + if (wayland_drm_) { + wayland_drm_->CreateBuffer(fd, size, strides, offsets, modifiers, format, + planes_count, std::move(callback)); + } else if (wayland_zwp_dmabuf_) { wayland_zwp_dmabuf_->CreateBuffer(fd, size, strides, offsets, modifiers, format, planes_count, std::move(callback)); - } else if (wayland_drm_) { - wayland_drm_->CreateBuffer(fd, size, strides, offsets, modifiers, format, - planes_count, std::move(callback)); } else { // This method must never be called if neither zwp_linux_dmabuf or wl_drm // are supported. @@ -52,10 +52,11 @@ wl::BufferFormatsWithModifiersMap WaylandBufferFactory::GetSupportedBufferFormats() const { #if defined(WAYLAND_GBM) - if (wayland_zwp_dmabuf_) - return wayland_zwp_dmabuf_->supported_buffer_formats(); - else if (wayland_drm_) + if (wayland_drm_) { return wayland_drm_->supported_buffer_formats(); + } else if (wayland_zwp_dmabuf_) { + return wayland_zwp_dmabuf_->supported_buffer_formats(); + } #endif return {}; } @@ -71,10 +72,11 @@ bool WaylandBufferFactory::CanCreateDmabufImmed() const { #if defined(WAYLAND_GBM) - if (wayland_zwp_dmabuf_) - return wayland_zwp_dmabuf_->CanCreateBufferImmed(); - else if (wayland_drm_) + if (wayland_drm_) { return wayland_drm_->CanCreateBufferImmed(); + } else if (wayland_zwp_dmabuf_) { + return wayland_zwp_dmabuf_->CanCreateBufferImmed(); + } #endif return false; } 07070100000003000081A4000000000000000000000001667CB59E000003F1000000000000000000000000000000000000004300000000aur-1719448990.1b9485c/0001-enable-linux-unstable-deb-target.patchFrom 22fe045deac0551720d7292022f443b22703f336 Mon Sep 17 00:00:00 2001 From: Yaowei Zhou <yaowei.zhou@intel.com> Date: Thu, 20 Apr 2023 14:37:26 +0800 Subject: [PATCH] Enable "linux:unstable_deb" build target when using the chromium minigbm Bug: N/A Change-Id: Ic37059be0f0719895acdba756292aed71820feba --- diff --git a/third_party/minigbm/BUILD.gn b/third_party/minigbm/BUILD.gn index 739e278..50bf5d8 100644 --- a/third_party/minigbm/BUILD.gn +++ b/third_party/minigbm/BUILD.gn @@ -58,7 +58,7 @@ } } - shared_library("minigbm") { + static_library("minigbm") { sources = [ "src/amdgpu.c", "src/dri.c", @@ -89,8 +89,8 @@ } # Clients need this to pick up the shared library correctly. - all_dependent_configs = - [ "//build/config/gcc:rpath_for_built_shared_libraries" ] + #all_dependent_configs = + # [ "//build/config/gcc:rpath_for_built_shared_libraries" ] } # This target is used for Chromecast build, which expects the resulting lib 07070100000004000081A4000000000000000000000001667CB59E00000755000000000000000000000000000000000000005300000000aur-1719448990.1b9485c/0001-ozone-wayland-implement-text_input_manager-fixes.patch ui/ozone/platform/wayland/host/zwp_text_input_wrapper.h # https://github.com/chromium/chromium/commit/de30ba3f21f824be05443d5820b988d226780d68 Support offset of surrounding text in Lacros wayland client. # https://github.com/chromium/chromium/commit/71bba2b7ae8117fdf053563a864d6cff018d7e94 Support large size surrounding text in Lacros. --- diff --git a/ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v3.cc b/ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v3.cc index a3ce6e4..83f2c58 100644 --- a/ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v3.cc +++ b/ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v3.cc @@ -147,6 +147,14 @@ void ZWPTextInputWrapperV3::SetSurroundingText( zwp_text_input_v3_commit(obj_.get()); } +bool ZWPTextInputWrapperV3::HasAdvancedSurroundingTextSupport() const { + return false; +} + +void ZWPTextInputWrapperV3::SetSurroundingTextOffsetUtf16( + uint32_t offset_utf16) { +} + void ZWPTextInputWrapperV3::ResetPendingState() { commit_string_.clear(); delete_surrounding_text_before_length_ = 0; diff --git a/ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v3.h b/ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v3.h index 204d7e3..5d03a1d 100644 --- a/ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v3.h +++ b/ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v3.h @@ -45,6 +45,8 @@ class ZWPTextInputWrapperV3 : public ZWPTextInputWrapper { void SetCursorRect(const gfx::Rect& rect) override; void SetSurroundingText(const std::string& text, const gfx::Range& selection_range) override; + bool HasAdvancedSurroundingTextSupport() const override; + void SetSurroundingTextOffsetUtf16(uint32_t offset_utf16) override; void SetContentType(TextInputType type, TextInputMode mode, uint32_t flags, 07070100000005000081A4000000000000000000000001667CB59E00005664000000000000000000000000000000000000005000000000aur-1719448990.1b9485c/0001-ozone-wayland-implement-text_input_manager_v3.patchFrom dba362808a97ced4f43635cbd73de6b06d156527 Mon Sep 17 00:00:00 2001 From: Moon Sungjoon <sumoon@seoulsaram.org> Date: Wed, 26 Apr 2023 03:25:44 +0900 Subject: [PATCH] ui/ozone/platform/wayland: Implement text_input_manager_v3 Based on the original work of Lukas Lihotzki <lukas@lihotzki.de> in https://crrev.com/c/3015331 Bug: 1227719 Change-Id: Ib883c9087377c9f1a0dfacc45a27e3e67ccf042e --- diff --git a/AUTHORS b/AUTHORS index f275151..a43a528 100644 --- a/AUTHORS +++ b/AUTHORS @@ -942,6 +942,7 @@ Mohit Bhalla <bhallam@amazon.com> Moiseanu Rares-Marian <moiseanurares@gmail.com> Momoka Yamamoto <momoka.my6@gmail.com> Momoko Hattori <momohatt10@gmail.com> +Moon Sungjoon <sumoon@seoulsaram.org> Mostafa Sedaghat joo <mostafa.sedaghat@gmail.com> Mrunal Kapade <mrunal.kapade@intel.com> Munira Tursunova <moonira@google.com> diff --git a/third_party/wayland-protocols/BUILD.gn b/third_party/wayland-protocols/BUILD.gn index c84ec11..dffa0aa 100644 --- a/third_party/wayland-protocols/BUILD.gn +++ b/third_party/wayland-protocols/BUILD.gn @@ -141,7 +141,10 @@ wayland_protocol("text_input_extension_protocol") { } wayland_protocol("text_input_protocol") { - sources = [ "src/unstable/text-input/text-input-unstable-v1.xml" ] + sources = [ + "src/unstable/text-input/text-input-unstable-v1.xml", + "src/unstable/text-input/text-input-unstable-v3.xml", + ] } wayland_protocol("touchpad_haptics_protocol") { diff --git a/ui/ozone/platform/wayland/BUILD.gn b/ui/ozone/platform/wayland/BUILD.gn index 31314f3..c22888c 100644 --- a/ui/ozone/platform/wayland/BUILD.gn +++ b/ui/ozone/platform/wayland/BUILD.gn @@ -221,6 +221,8 @@ source_set("wayland") { "host/zwp_text_input_wrapper.h", "host/zwp_text_input_wrapper_v1.cc", "host/zwp_text_input_wrapper_v1.h", + "host/zwp_text_input_wrapper_v3.cc", + "host/zwp_text_input_wrapper_v3.h", "ozone_platform_wayland.cc", "ozone_platform_wayland.h", "wayland_utils.cc", diff --git a/ui/ozone/platform/wayland/common/wayland_object.cc b/ui/ozone/platform/wayland/common/wayland_object.cc index bcc48aa..009667b 100644 --- a/ui/ozone/platform/wayland/common/wayland_object.cc +++ b/ui/ozone/platform/wayland/common/wayland_object.cc @@ -30,6 +30,7 @@ #include <surface-augmenter-client-protocol.h> #include <text-input-extension-unstable-v1-client-protocol.h> #include <text-input-unstable-v1-client-protocol.h> +#include <text-input-unstable-v3-client-protocol.h> #include <touchpad-haptics-unstable-v1-client-protocol.h> #include <viewporter-client-protocol.h> #include <wayland-client-core.h> @@ -287,6 +288,8 @@ IMPLEMENT_WAYLAND_OBJECT_TRAITS(zwp_relative_pointer_manager_v1) IMPLEMENT_WAYLAND_OBJECT_TRAITS(zwp_relative_pointer_v1) IMPLEMENT_WAYLAND_OBJECT_TRAITS(zwp_text_input_manager_v1) IMPLEMENT_WAYLAND_OBJECT_TRAITS(zwp_text_input_v1) +IMPLEMENT_WAYLAND_OBJECT_TRAITS(zwp_text_input_manager_v3) +IMPLEMENT_WAYLAND_OBJECT_TRAITS(zwp_text_input_v3) IMPLEMENT_WAYLAND_OBJECT_TRAITS(zxdg_decoration_manager_v1) IMPLEMENT_WAYLAND_OBJECT_TRAITS(zxdg_exporter_v1) IMPLEMENT_WAYLAND_OBJECT_TRAITS(zxdg_exported_v1) diff --git a/ui/ozone/platform/wayland/common/wayland_object.h b/ui/ozone/platform/wayland/common/wayland_object.h index c84c084..0817e78 100644 --- a/ui/ozone/platform/wayland/common/wayland_object.h +++ b/ui/ozone/platform/wayland/common/wayland_object.h @@ -202,6 +202,8 @@ DECLARE_WAYLAND_OBJECT_TRAITS(zwp_relative_pointer_manager_v1) DECLARE_WAYLAND_OBJECT_TRAITS(zwp_relative_pointer_v1) DECLARE_WAYLAND_OBJECT_TRAITS(zwp_text_input_manager_v1) DECLARE_WAYLAND_OBJECT_TRAITS(zwp_text_input_v1) +DECLARE_WAYLAND_OBJECT_TRAITS(zwp_text_input_manager_v3) +DECLARE_WAYLAND_OBJECT_TRAITS(zwp_text_input_v3) DECLARE_WAYLAND_OBJECT_TRAITS(zxdg_decoration_manager_v1) DECLARE_WAYLAND_OBJECT_TRAITS(zxdg_exporter_v1) DECLARE_WAYLAND_OBJECT_TRAITS(zxdg_exported_v1) diff --git a/ui/ozone/platform/wayland/host/wayland_connection.cc b/ui/ozone/platform/wayland/host/wayland_connection.cc index ad3bbd6..995b1e2 100644 --- a/ui/ozone/platform/wayland/host/wayland_connection.cc +++ b/ui/ozone/platform/wayland/host/wayland_connection.cc @@ -647,6 +647,14 @@ void WaylandConnection::HandleGlobal(wl_registry* registry, strcmp(interface, "zcr_text_input_extension_v1") == 0) { text_input_extension_v1_ = wl::Bind<zcr_text_input_extension_v1>( registry, name, std::min(version, kMaxTextInputExtensionVersion)); + } else if (!text_input_manager_v3_ && + strcmp(interface, "zwp_text_input_manager_v3") == 0) { + text_input_manager_v3_ = wl::Bind<zwp_text_input_manager_v3>( + registry, name, std::min(version, kMaxTextInputManagerVersion)); + if (!text_input_manager_v3_) { + LOG(ERROR) << "Failed to bind to zwp_text_input_manager_v3 global"; + return; + } } else if (!xdg_decoration_manager_ && strcmp(interface, "zxdg_decoration_manager_v1") == 0) { xdg_decoration_manager_ = wl::Bind<zxdg_decoration_manager_v1>( diff --git a/ui/ozone/platform/wayland/host/wayland_connection.h b/ui/ozone/platform/wayland/host/wayland_connection.h index 6659bc5..f9739ea 100644 --- a/ui/ozone/platform/wayland/host/wayland_connection.h +++ b/ui/ozone/platform/wayland/host/wayland_connection.h @@ -149,6 +149,9 @@ class WaylandConnection { zcr_text_input_extension_v1* text_input_extension_v1() const { return text_input_extension_v1_.get(); } + zwp_text_input_manager_v3* text_input_manager_v3() const { + return text_input_manager_v3_.get(); + } zwp_linux_explicit_synchronization_v1* linux_explicit_synchronization_v1() const { return linux_explicit_synchronization_.get(); @@ -447,6 +450,7 @@ class WaylandConnection { wl::Object<zcr_stylus_v2> zcr_stylus_v2_; wl::Object<zwp_text_input_manager_v1> text_input_manager_v1_; wl::Object<zcr_text_input_extension_v1> text_input_extension_v1_; + wl::Object<zwp_text_input_manager_v3> text_input_manager_v3_; wl::Object<zwp_linux_explicit_synchronization_v1> linux_explicit_synchronization_; wl::Object<zxdg_decoration_manager_v1> xdg_decoration_manager_; diff --git a/ui/ozone/platform/wayland/host/wayland_input_method_context.cc b/ui/ozone/platform/wayland/host/wayland_input_method_context.cc index caa5074..c2e1798 100644 --- a/ui/ozone/platform/wayland/host/wayland_input_method_context.cc +++ b/ui/ozone/platform/wayland/host/wayland_input_method_context.cc @@ -35,6 +35,7 @@ #include "ui/ozone/platform/wayland/host/wayland_seat.h" #include "ui/ozone/platform/wayland/host/wayland_window.h" #include "ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v1.h" +#include "ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v3.h" #include "ui/ozone/public/ozone_switches.h" #if BUILDFLAG(USE_XKBCOMMON) @@ -285,11 +286,18 @@ void WaylandInputMethodContext::Init(bool initialize_for_testing) { // If text input instance is not created then all ime context operations // are noop. This option is because in some environments someone might not // want to enable ime/virtual keyboard even if it's available. - if (use_ozone_wayland_vkb && !text_input_ && - connection_->text_input_manager_v1()) { + if (!use_ozone_wayland_vkb || text_input_) + return; + + // Prefer text_input_manager_v1 because it is more powerful. + // It supports preedit styling for example. + if (connection_->text_input_manager_v1()) { text_input_ = std::make_unique<ZWPTextInputWrapperV1>( connection_, this, connection_->text_input_manager_v1(), connection_->text_input_extension_v1()); + } else if (connection_->text_input_manager_v3()) { + text_input_ = std::make_unique<ZWPTextInputWrapperV3>( + connection_, this, connection_->text_input_manager_v3()); } } @@ -657,6 +665,11 @@ void WaylandInputMethodContext::OnCursorPosition(int32_t index, void WaylandInputMethodContext::OnDeleteSurroundingText(int32_t index, uint32_t length) { + // Never fail if length is 0. + if (length == 0) { + return; + } + const auto& [surrounding_text, utf16_offset, selection, unsused_composition] = surrounding_text_tracker_.predicted_state(); DCHECK(selection.IsValid()); diff --git a/ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v3.cc b/ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v3.cc new file mode 100644 index 0000000..a3ce6e4 --- /dev/null +++ b/ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v3.cc @@ -0,0 +1,239 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v3.h" + +#include <string> +#include <utility> + +#include "base/logging.h" +#include "base/memory/ptr_util.h" +#include "ui/base/wayland/wayland_client_input_types.h" +#include "ui/gfx/range/range.h" +#include "ui/ozone/platform/wayland/host/wayland_connection.h" +#include "ui/ozone/platform/wayland/host/wayland_seat.h" +#include "ui/ozone/platform/wayland/host/wayland_window.h" + +namespace ui { + +// Converts Chrome's TextInputType into wayland's content_purpose. +// Some of TextInputType values do not have clearly corresponding wayland value, +// and they fallback to closer type. +uint32_t InputTypeToContentPurpose(TextInputType input_type) { + switch (input_type) { + case TEXT_INPUT_TYPE_NONE: + return ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_NORMAL; + case TEXT_INPUT_TYPE_TEXT: + return ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_NORMAL; + case TEXT_INPUT_TYPE_PASSWORD: + return ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_PASSWORD; + case TEXT_INPUT_TYPE_SEARCH: + return ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_NORMAL; + case TEXT_INPUT_TYPE_EMAIL: + return ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_EMAIL; + case TEXT_INPUT_TYPE_NUMBER: + return ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_NUMBER; + case TEXT_INPUT_TYPE_TELEPHONE: + return ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_PHONE; + case TEXT_INPUT_TYPE_URL: + return ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_URL; + case TEXT_INPUT_TYPE_DATE: + return ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_DATE; + case TEXT_INPUT_TYPE_DATE_TIME: + return ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_DATETIME; + case TEXT_INPUT_TYPE_DATE_TIME_LOCAL: + return ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_DATETIME; + case TEXT_INPUT_TYPE_MONTH: + return ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_DATE; + case TEXT_INPUT_TYPE_TIME: + return ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_TIME; + case TEXT_INPUT_TYPE_WEEK: + return ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_DATE; + case TEXT_INPUT_TYPE_TEXT_AREA: + return ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_NORMAL; + case TEXT_INPUT_TYPE_CONTENT_EDITABLE: + return ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_NORMAL; + case TEXT_INPUT_TYPE_DATE_TIME_FIELD: + return ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_DATETIME; + case TEXT_INPUT_TYPE_NULL: + return ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_NORMAL; + } +} + +// Converts Chrome's TextInputType into wayland's content_hint. +uint32_t InputFlagsToContentHint(int input_flags) { + uint32_t hint = 0; + if (input_flags & TEXT_INPUT_FLAG_AUTOCOMPLETE_ON) + hint |= ZWP_TEXT_INPUT_V3_CONTENT_HINT_COMPLETION; + if (input_flags & TEXT_INPUT_FLAG_SPELLCHECK_ON) + hint |= ZWP_TEXT_INPUT_V3_CONTENT_HINT_SPELLCHECK; + // No good match. Fallback to AUTO_CORRECTION. + if (input_flags & TEXT_INPUT_FLAG_AUTOCORRECT_ON) + hint |= ZWP_TEXT_INPUT_V3_CONTENT_HINT_SPELLCHECK; + if (input_flags & TEXT_INPUT_FLAG_AUTOCAPITALIZE_CHARACTERS) + hint |= ZWP_TEXT_INPUT_V3_CONTENT_HINT_AUTO_CAPITALIZATION; + if (input_flags & TEXT_INPUT_FLAG_AUTOCAPITALIZE_WORDS) + hint |= ZWP_TEXT_INPUT_V3_CONTENT_HINT_AUTO_CAPITALIZATION; + if (input_flags & TEXT_INPUT_FLAG_AUTOCAPITALIZE_SENTENCES) + hint |= ZWP_TEXT_INPUT_V3_CONTENT_HINT_AUTO_CAPITALIZATION; + if (input_flags & TEXT_INPUT_FLAG_HAS_BEEN_PASSWORD) + hint |= ZWP_TEXT_INPUT_V3_CONTENT_HINT_SENSITIVE_DATA; + return hint; +} + +ZWPTextInputWrapperV3::ZWPTextInputWrapperV3( + WaylandConnection* connection, + ZWPTextInputWrapperClient* client, + zwp_text_input_manager_v3* text_input_manager) + : connection_(connection), client_(client) { + static const zwp_text_input_v3_listener text_input_listener = { + &OnEnter, // text_input_enter, + &OnLeave, // text_input_leave, + &OnPreeditString, // text_input_preedit_string, + &OnCommitString, // text_input_commit_string, + &OnDeleteSurroundingText, // text_input_delete_surrounding_text, + &OnDone, // text_input_done, + }; + + DCHECK(text_input_manager); + auto* text_input = zwp_text_input_manager_v3_get_text_input( + text_input_manager, connection_->seat()->wl_object()); + obj_ = wl::Object<zwp_text_input_v3>(text_input); + + zwp_text_input_v3_add_listener(text_input, &text_input_listener, this); +} + +ZWPTextInputWrapperV3::~ZWPTextInputWrapperV3() = default; + +void ZWPTextInputWrapperV3::Reset() { + NOTIMPLEMENTED_LOG_ONCE(); +} + +void ZWPTextInputWrapperV3::Activate(WaylandWindow* window, + TextInputClient::FocusReason reason) { + zwp_text_input_v3_enable(obj_.get()); + zwp_text_input_v3_commit(obj_.get()); +} + +void ZWPTextInputWrapperV3::Deactivate() { + zwp_text_input_v3_disable(obj_.get()); + zwp_text_input_v3_commit(obj_.get()); +} + +void ZWPTextInputWrapperV3::ShowInputPanel() { + // Not directly supported in zwp_text_input_v3 + // Enable again to show the screen keyboard in GNOME: + // https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1543#note_1051704 + zwp_text_input_v3_enable(obj_.get()); + zwp_text_input_v3_commit(obj_.get()); +} + +void ZWPTextInputWrapperV3::HideInputPanel() { + // unsupported in zwp_text_input_v3 +} + +void ZWPTextInputWrapperV3::SetCursorRect(const gfx::Rect& rect) { + zwp_text_input_v3_set_cursor_rectangle(obj_.get(), rect.x(), rect.y(), + rect.width(), rect.height()); + zwp_text_input_v3_commit(obj_.get()); +} + +void ZWPTextInputWrapperV3::SetSurroundingText( + const std::string& text, + const gfx::Range& selection_range) { + zwp_text_input_v3_set_surrounding_text( + obj_.get(), text.c_str(), selection_range.start(), selection_range.end()); + zwp_text_input_v3_commit(obj_.get()); +} + +void ZWPTextInputWrapperV3::ResetPendingState() { + commit_string_.clear(); + delete_surrounding_text_before_length_ = 0; + delete_surrounding_text_after_length_ = 0; + preedit_string_.clear(); + preedit_string_cursor_begin_ = 0; + preedit_string_cursor_end_ = 0; +} + +void ZWPTextInputWrapperV3::SetContentType(ui::TextInputType type, + ui::TextInputMode mode, + uint32_t flags, + bool should_do_learning, + bool can_compose_inline) { + // V3 doesn't have extension + uint32_t content_purpose = InputTypeToContentPurpose(type); + uint32_t content_hint = InputFlagsToContentHint(flags); + static_cast<void>(flags); + static_cast<void>(should_do_learning); + zwp_text_input_v3_set_content_type(obj_.get(), content_hint, content_purpose); +} + +void ZWPTextInputWrapperV3::OnEnter(void* data, + struct zwp_text_input_v3* text_input, + struct wl_surface* surface) { + NOTIMPLEMENTED_LOG_ONCE(); +} + +void ZWPTextInputWrapperV3::OnLeave(void* data, + struct zwp_text_input_v3* text_input, + struct wl_surface* surface) { + NOTIMPLEMENTED_LOG_ONCE(); +} + +void ZWPTextInputWrapperV3::OnPreeditString( + void* data, + struct zwp_text_input_v3* text_input, + const char* text, + int32_t cursor_begin, + int32_t cursor_end) { + auto* wti = static_cast<ZWPTextInputWrapperV3*>(data); + wti->preedit_string_ = text ? text : ""; + wti->preedit_string_cursor_begin_ = cursor_begin; + wti->preedit_string_cursor_end_ = cursor_end; +} + +void ZWPTextInputWrapperV3::OnCommitString(void* data, + struct zwp_text_input_v3* text_input, + const char* text) { + auto* wti = static_cast<ZWPTextInputWrapperV3*>(data); + wti->commit_string_ = text ? text : ""; +} + +void ZWPTextInputWrapperV3::OnDeleteSurroundingText( + void* data, + struct zwp_text_input_v3* text_input, + uint32_t before_length, + uint32_t after_length) { + auto* wti = static_cast<ZWPTextInputWrapperV3*>(data); + wti->delete_surrounding_text_before_length_ = before_length; + wti->delete_surrounding_text_after_length_ = after_length; +} + +void ZWPTextInputWrapperV3::OnDone(void* data, + struct zwp_text_input_v3* text_input, + uint32_t serial) { + auto* wti = static_cast<ZWPTextInputWrapperV3*>(data); + wti->client_->OnPreeditString("", {}, 0); + wti->client_->OnDeleteSurroundingText( + -int32_t(wti->delete_surrounding_text_before_length_), + int32_t(wti->delete_surrounding_text_before_length_) + + int32_t(wti->delete_surrounding_text_after_length_)); + wti->client_->OnCommitString(wti->commit_string_.c_str()); + wti->client_->OnPreeditString(wti->preedit_string_.c_str(), {}, + wti->preedit_string_cursor_begin_); + wti->ResetPendingState(); +} + +void ZWPTextInputWrapperV3::SetGrammarFragmentAtCursor( + const ui::GrammarFragment& fragment) { + NOTIMPLEMENTED_LOG_ONCE(); +} + +void ZWPTextInputWrapperV3::SetAutocorrectInfo( + const gfx::Range& autocorrect_range, + const gfx::Rect& autocorrect_bounds) { + NOTIMPLEMENTED_LOG_ONCE(); +} + +} // namespace ui diff --git a/ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v3.h b/ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v3.h new file mode 100644 index 0000000..204d7e3 --- /dev/null +++ b/ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v3.h @@ -0,0 +1,98 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_OZONE_PLATFORM_WAYLAND_HOST_ZWP_TEXT_INPUT_WRAPPER_V3_H_ +#define UI_OZONE_PLATFORM_WAYLAND_HOST_ZWP_TEXT_INPUT_WRAPPER_V3_H_ + +#include <cstdint> +#include <string> + +#include <text-input-unstable-v3-client-protocol.h> + +#include "base/memory/raw_ptr.h" +#include "ui/ozone/platform/wayland/common/wayland_object.h" +#include "ui/ozone/platform/wayland/host/zwp_text_input_wrapper.h" + +namespace gfx { +class Rect; +} + +namespace ui { + +class WaylandConnection; +class WaylandWindow; + +// Text input wrapper for text-input-unstable-v3 +class ZWPTextInputWrapperV3 : public ZWPTextInputWrapper { + public: + ZWPTextInputWrapperV3(WaylandConnection* connection, + ZWPTextInputWrapperClient* client, + zwp_text_input_manager_v3* text_input_manager); + ZWPTextInputWrapperV3(const ZWPTextInputWrapperV3&) = delete; + ZWPTextInputWrapperV3& operator=(const ZWPTextInputWrapperV3&) = delete; + ~ZWPTextInputWrapperV3() override; + + void Reset() override; + + void Activate(WaylandWindow* window, + ui::TextInputClient::FocusReason reason) override; + void Deactivate() override; + + void ShowInputPanel() override; + void HideInputPanel() override; + + void SetCursorRect(const gfx::Rect& rect) override; + void SetSurroundingText(const std::string& text, + const gfx::Range& selection_range) override; + void SetContentType(TextInputType type, + TextInputMode mode, + uint32_t flags, + bool should_do_learning, + bool can_compose_inline) override; + void SetGrammarFragmentAtCursor(const ui::GrammarFragment& fragment) override; + void SetAutocorrectInfo(const gfx::Range& autocorrect_range, + const gfx::Rect& autocorrect_bounds) override; + + private: + void ResetPendingState(); + + // zwp_text_input_v3_listener + static void OnEnter(void* data, + struct zwp_text_input_v3* text_input, + struct wl_surface* surface); + static void OnLeave(void* data, + struct zwp_text_input_v3* text_input, + struct wl_surface* surface); + static void OnPreeditString(void* data, + struct zwp_text_input_v3* text_input, + const char* text, + int32_t cursor_begin, + int32_t cursor_end); + static void OnCommitString(void* data, + struct zwp_text_input_v3* text_input, + const char* text); + static void OnDeleteSurroundingText(void* data, + struct zwp_text_input_v3* text_input, + uint32_t before_length, + uint32_t after_length); + static void OnDone(void* data, + struct zwp_text_input_v3* text_input, + uint32_t serial); + + const raw_ptr<WaylandConnection> connection_; + wl::Object<zwp_text_input_v3> obj_; + const raw_ptr<ZWPTextInputWrapperClient> client_; + + // pending state until OnDone + std::string commit_string_; + uint32_t delete_surrounding_text_before_length_ = 0; + uint32_t delete_surrounding_text_after_length_ = 0; + std::string preedit_string_; // preedit string of pending state + int32_t preedit_string_cursor_begin_ = 0; + int32_t preedit_string_cursor_end_ = 0; +}; + +} // namespace ui + +#endif // UI_OZONE_PLATFORM_WAYLAND_HOST_ZWP_TEXT_INPUT_WRAPPER_V3_H_ 07070100000006000081A4000000000000000000000001667CB59E00000302000000000000000000000000000000000000003B00000000aur-1719448990.1b9485c/0001-vaapi-flag-ozone-wayland.patchFrom 12724af6284195381377e074cc7f7c2fbc6cb05c Mon Sep 17 00:00:00 2001 From: Yaowei Zhou <yaowei.zhou@intel.com> Date: Tue, 30 May 2023 12:45:27 +0800 Subject: [PATCH] Enable VA-API flag on ozone wayland Bug: POC Change-Id: I4af3c2c4925958bbca86a25a4d9c66fd8922c806 --- diff --git a/ui/ozone/platform/wayland/ozone_platform_wayland.cc b/ui/ozone/platform/wayland/ozone_platform_wayland.cc index 1de5c418..9f2f1f5 100644 --- a/ui/ozone/platform/wayland/ozone_platform_wayland.cc +++ b/ui/ozone/platform/wayland/ozone_platform_wayland.cc @@ -311,6 +311,9 @@ // arbitrary position. properties->supports_global_screen_coordinates = kDefaultScreenCoordinateEnabled; + + properties->supports_vaapi = true; + initialised = true; } 07070100000007000081A4000000000000000000000001667CB59E00003A9B000000000000000000000000000000000000002000000000aur-1719448990.1b9485c/PKGBUILD# shellcheck disable=SC2034,SC2154,SC2164 # Maintainer: Seppia <seppia@seppio.fish> # Maintainer: JustKidding <jk@vin.ovh> # Based on extra/chromium, with ungoogled-chromium patches # Maintainer: Evangelos Foutras <evangelos@foutrelis.com> # Contributor: Pierre Schmitz <pierre@archlinux.de> # Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com> # Contributor: Daniel J Griffiths <ghost1227@archlinux.us> pkgname=ungoogled-chromium pkgver=126.0.6478.126 pkgrel=1 _launcher_ver=8 _manual_clone=0 _system_clang=1 pkgdesc="A lightweight approach to removing Google web service dependency" arch=('x86_64') url="https://github.com/ungoogled-software/ungoogled-chromium" license=('BSD-3-Clause') depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt' 'ttf-liberation' 'systemd' 'dbus' 'libpulse' 'pciutils' 'libva' 'libffi' 'desktop-file-utils' 'hicolor-icon-theme') makedepends=('python' 'gn' 'ninja' 'clang' 'lld' 'gperf' 'nodejs' 'pipewire' 'rust' 'qt5-base' 'qt6-base' 'java-runtime-headless' 'git') optdepends=('pipewire: WebRTC desktop sharing under Wayland' 'kdialog: support for native dialogs in Plasma' 'gtk4: for --gtk-version=4 (GTK4 IME might work better on Wayland)' 'org.freedesktop.secrets: password storage backend on GNOME / Xfce' 'kwallet: support for storing passwords in KWallet on Plasma') options=('!lto') # Chromium adds its own flags for ThinLTO source=(https://commondatastorage.googleapis.com/chromium-browser-official/chromium-$pkgver.tar.xz https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver/chromium-launcher-$_launcher_ver.tar.gz https://gitlab.com/Matt.Jolly/chromium-patches/-/archive/${pkgver%%.*}/chromium-patches-${pkgver%%.*}.tar.bz2 allow-ANGLEImplementation-kVulkan.patch drop-flag-unsupported-by-clang17.patch compiler-rt-adjust-paths.patch use-oauth2-client-switches-as-default.patch) sha256sums=('5d5206637e659f03e006cd8b6b269c49c0c2c697d10517e14dbcea851831e143' '213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a' 'daf0df74d2601c35fd66a746942d9ca3fc521ede92312f85af51d94c399fd6e0' '8f81059d79040ec598b5fb077808ec69d26d6c9cbebf9c4f4ea48b388a2596c5' '028acc97299cec5d1ed9f456bbdc462807fa491277d266db2aa1d405d3cd753d' 'b3de01b7df227478687d7517f61a777450dca765756002c80c4915f271e2d961' 'a9b417b96daec33c9059065e15b3a92ae1bf4b59f89d353659b335d9e0379db6') if (( _manual_clone )); then source[0]=fetch-chromium-release makedepends+=('python-httplib2' 'python-pyparsing' 'python-six') fi provides=("chromium=${pkgver}" "chromedriver=${pkgver}") conflicts=('chromium' 'chromedriver') _uc_usr=ungoogled-software _uc_ver=$pkgver-1 optdepends=("${optdepends[@]}" 'chromium-extension-web-store: Web Store Functionality') source=("${source[@]}" "$pkgname-$_uc_ver.tar.gz::https://github.com/$_uc_usr/ungoogled-chromium/archive/$_uc_ver.tar.gz" ninja-out-of-order-generation-fix.patch 0001-vaapi-flag-ozone-wayland.patch 0001-adjust-buffer-format-order.patch 0001-enable-linux-unstable-deb-target.patch 0001-ozone-wayland-implement-text_input_manager_v3.patch 0001-ozone-wayland-implement-text_input_manager-fixes.patch) sha256sums=("${sha256sums[@]}" 'b901f4a6a0401facb6bbe6645eac62f4af902f6885e27d35cc354c49ebe191b8' '813e6a1209ab72e4ab34f5f062412087e9664189d7b8f1dc1d0bb9481c574c45' '9a5594293616e1390462af1f50276ee29fd6075ffab0e3f944f6346cb2eb8aec' '8ba5c67b7eb6cacd2dbbc29e6766169f0fca3bbb07779b1a0a76c913f17d343f' '2a44756404e13c97d000cc0d859604d6848163998ea2f838b3b9bb2c840967e3' 'd9974ddb50777be428fd0fa1e01ffe4b587065ba6adefea33678e1b3e25d1285' 'a2da75d0c20529f2d635050e0662941c0820264ea9371eb900b9d90b5968fa6a') # Possible replacements are listed in build/linux/unbundle/replace_gn_files.py # Keys are the names in the above script; values are the dependencies in Arch declare -gA _system_libs=( [brotli]=brotli [dav1d]=dav1d #[ffmpeg]=ffmpeg # YouTube playback stopped working in Chromium 120 [flac]=flac [fontconfig]=fontconfig [freetype]=freetype2 [harfbuzz-ng]=harfbuzz [icu]=icu #[jsoncpp]=jsoncpp # needs libstdc++ #[libaom]=aom #[libavif]=libavif # needs https://github.com/AOMediaCodec/libavif/commit/5410b23f76 [libdrm]= [libjpeg]=libjpeg [libpng]=libpng #[libvpx]=libvpx [libwebp]=libwebp [libxml]=libxml2 [libxslt]=libxslt [opus]=opus #[re2]=re2 # needs libstdc++ #[snappy]=snappy # needs libstdc++ #[woff2]=woff2 # needs libstdc++ [zlib]=minizip ) _unwanted_bundled_libs=( $(printf "%s\n" ${!_system_libs[@]} | sed 's/^libjpeg$/&_turbo/') ) depends+=(${_system_libs[@]}) # Google API keys (see https://www.chromium.org/developers/how-tos/api-keys) # Note: These are for Arch Linux use ONLY. For your own distribution, please # get your own set of keys. # # Starting with Chromium 89 (2021-03-02) the OAuth2 credentials have been left # out: https://archlinux.org/news/chromium-losing-sync-support-in-early-march/ _google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM prepare() { if (( _manual_clone )); then ./fetch-chromium-release $pkgver fi cd chromium-$pkgver # Allow building against system libraries in official builds sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ tools/generate_shim_headers/generate_shim_headers.py # https://crbug.com/893950 sed -i -e 's/\<xmlMalloc\>/malloc/' -e 's/\<xmlFree\>/free/' \ -e '1i #include <cstdlib>' \ third_party/blink/renderer/core/xml/*.cc \ third_party/blink/renderer/core/xml/parser/xml_document_parser.cc \ third_party/libxml/chromium/*.cc \ third_party/maldoca/src/maldoca/ole/oss_utils.h # Use the --oauth2-client-id= and --oauth2-client-secret= switches for # setting GOOGLE_DEFAULT_CLIENT_ID and GOOGLE_DEFAULT_CLIENT_SECRET at # runtime -- this allows signing into Chromium without baked-in values patch -Np1 -i ../use-oauth2-client-switches-as-default.patch # Upstream fixes patch -Np1 -i ../allow-ANGLEImplementation-kVulkan.patch # Drop compiler flag that needs newer clang patch -Np1 -i ../drop-flag-unsupported-by-clang17.patch # Allow libclang_rt.builtins from compiler-rt >= 16 to be used patch -Np1 -i ../compiler-rt-adjust-paths.patch # Fixes for building with libstdc++ instead of libc++ patch -Np1 -i ../chromium-patches-*/chromium-117-material-color-include.patch # Custom Patches sed -i '/^bool IsHevcProfileSupported(const VideoType& type) {$/{s++bool IsHevcProfileSupported(const VideoType\& type) { return true;+;h};${x;/./{x;q0};x;q1}' \ media/base/supported_types.cc # Implement text_input_manager_v3 # https://chromium-review.googlesource.com/c/chromium/src/+/3750452 #patch -Np1 -i ../0001-ozone-wayland-implement-text_input_manager_v3.patch #patch -Np1 -i ../0001-ozone-wayland-implement-text_input_manager-fixes.patch #patch -Np1 -i ../ninja-out-of-order-generation-fix.patch # Enable VAAPI on Wayland # https://discourse.ubuntu.com/t/chromium-hardware-accelerated-build-for-intel-based-platforms-available-for-beta-testing/35625 # https://git.launchpad.net/~chromium-team/chromium-browser/+git/snap-from-source/ # patch -Np1 -i ../0001-enable-linux-unstable-deb-target.patch #patch -Np1 -i ../0001-adjust-buffer-format-order.patch #patch -Np1 -i ../0001-vaapi-flag-ozone-wayland.patch # Link to system tools required by the build mkdir -p third_party/node/linux/node-linux-x64/bin ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/ ln -s /usr/bin/java third_party/jdk/current/bin/ if (( !_system_clang )); then # Use prebuilt rust as system rust cannot be used due to the error: # error: the option `Z` is only accepted on the nightly compiler ./tools/rust/update_rust.py # To link to rust libraries we need to compile with prebuilt clang ./tools/clang/scripts/update.py fi # Ungoogled Chromium changes _ungoogled_repo="$srcdir/$pkgname-$_uc_ver" _utils="${_ungoogled_repo}/utils" msg2 'Pruning binaries' python "$_utils/prune_binaries.py" ./ "$_ungoogled_repo/pruning.list" msg2 'Applying patches' python "$_utils/patches.py" apply ./ "$_ungoogled_repo/patches" msg2 'Applying domain substitution' python "$_utils/domain_substitution.py" apply -r "$_ungoogled_repo/domain_regex.list" \ -f "$_ungoogled_repo/domain_substitution.list" -c domainsubcache.tar.gz ./ # Remove bundled libraries for which we will use the system copies; this # *should* do what the remove_bundled_libraries.py script does, with the # added benefit of not having to list all the remaining libraries local _lib for _lib in ${_unwanted_bundled_libs[@]}; do find "third_party/$_lib" -type f \ \! -path "third_party/$_lib/chromium/*" \ \! -path "third_party/$_lib/google/*" \ \! -path "third_party/harfbuzz-ng/utils/hb_scoped.h" \ \! -regex '.*\.\(gn\|gni\|isolate\)' \ -delete done ./build/linux/unbundle/replace_gn_files.py \ --system-libraries "${!_system_libs[@]}" } build() { make -C chromium-launcher-$_launcher_ver cd chromium-$pkgver if (( _system_clang )); then export CC=clang export CXX=clang++ export AR=ar export NM=nm else local _clang_path="$PWD/third_party/llvm-build/Release+Asserts/bin" export CC=$_clang_path/clang export CXX=$_clang_path/clang++ export AR=$_clang_path/llvm-ar export NM=$_clang_path/llvm-nm fi local _flags=( 'custom_toolchain="//build/toolchain/linux/unbundle:default"' 'host_toolchain="//build/toolchain/linux/unbundle:default"' 'is_official_build=true' # implies is_cfi=true on x86_64 'symbol_level=0' # sufficient for backtraces on x86(_64) 'treat_warnings_as_errors=false' 'disable_fieldtrial_testing_config=true' 'blink_enable_generated_code_formatting=false' 'ffmpeg_branding="Chrome"' 'proprietary_codecs=true' 'rtc_use_pipewire=true' 'link_pulseaudio=true' 'use_custom_libcxx=true' # https://github.com/llvm/llvm-project/issues/61705 'use_sysroot=false' 'use_system_libffi=true' 'enable_hangout_services_extension=true' 'enable_widevine=true' 'enable_nacl=false' 'use_qt6=true' 'moc_qt6_path="/usr/lib/qt6"' "google_api_key=\"$_google_api_key\"" ) if [[ -n ${_system_libs[icu]+set} ]]; then _flags+=('icu_use_data_file=false') fi if (( _system_clang )); then local _clang_version=$( clang --version | grep -m1 version | sed 's/.* \([0-9]\+\).*/\1/') _flags+=( 'clang_base_path="/usr"' 'clang_use_chrome_plugins=false' "clang_version=\"$_clang_version\"" 'chrome_pgo_phase=0' # needs newer clang to read the bundled PGO profile ) # Allow the use of nightly features with stable Rust compiler # https://github.com/ungoogled-software/ungoogled-chromium/pull/2696#issuecomment-1918173198 export RUSTC_BOOTSTRAP=1 _flags+=( 'rust_sysroot_absolute="/usr"' "rustc_version=\"$(rustc --version)\"" ) fi # enable HEVC decoding _flags+=( 'enable_platform_hevc=true' 'enable_hevc_parser_and_hw_decoder=true' ) # Append ungoogled chromium flags to _flags array _ungoogled_repo="$srcdir/$pkgname-$_uc_ver" readarray -t -O ${#_flags[@]} _flags < "${_ungoogled_repo}/flags.gn" # Facilitate deterministic builds (taken from build/config/compiler/BUILD.gn) CFLAGS+=' -Wno-builtin-macro-redefined' CXXFLAGS+=' -Wno-builtin-macro-redefined' CPPFLAGS+=' -D__DATE__= -D__TIME__= -D__TIMESTAMP__=' # Do not warn about unknown warning options CFLAGS+=' -Wno-unknown-warning-option' CXXFLAGS+=' -Wno-unknown-warning-option' # Let Chromium set its own symbol level CFLAGS=${CFLAGS/-g } CXXFLAGS=${CXXFLAGS/-g } # https://github.com/ungoogled-software/ungoogled-chromium-archlinux/issues/123 CFLAGS=${CFLAGS/-fexceptions} CFLAGS=${CFLAGS/-fcf-protection} CXXFLAGS=${CXXFLAGS/-fexceptions} CXXFLAGS=${CXXFLAGS/-fcf-protection} # This appears to cause random segfaults when combined with ThinLTO # https://bugs.archlinux.org/task/73518 CFLAGS=${CFLAGS/-fstack-clash-protection} CXXFLAGS=${CXXFLAGS/-fstack-clash-protection} # https://crbug.com/957519#c122 CXXFLAGS=${CXXFLAGS/-Wp,-D_GLIBCXX_ASSERTIONS} gn gen out/Release --args="${_flags[*]}" ninja -C out/Release chrome chrome_sandbox chromedriver } package() { cd chromium-launcher-$_launcher_ver make PREFIX=/usr DESTDIR="$pkgdir" install install -Dm644 LICENSE \ "$pkgdir/usr/share/licenses/chromium/LICENSE.launcher" cd ../chromium-$pkgver install -D out/Release/chrome "$pkgdir/usr/lib/chromium/chromium" install -D out/Release/chromedriver "$pkgdir/usr/bin/chromedriver" install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox" install -Dm644 chrome/installer/linux/common/desktop.template \ "$pkgdir/usr/share/applications/chromium.desktop" install -Dm644 chrome/app/resources/manpage.1.in \ "$pkgdir/usr/share/man/man1/chromium.1" sed -i \ -e 's/@@MENUNAME@@/Chromium/g' \ -e 's/@@PACKAGE@@/chromium/g' \ -e 's/@@USR_BIN_SYMLINK_NAME@@/chromium/g' \ "$pkgdir/usr/share/applications/chromium.desktop" \ "$pkgdir/usr/share/man/man1/chromium.1" install -Dm644 chrome/installer/linux/common/chromium-browser/chromium-browser.appdata.xml \ "$pkgdir/usr/share/metainfo/chromium.appdata.xml" sed -ni \ -e 's/chromium-browser\.desktop/chromium.desktop/' \ -e '/<update_contact>/d' \ -e '/<p>/N;/<p>\n.*\(We invite\|Chromium supports Vorbis\)/,/<\/p>/d' \ -e '/^<?xml/,$p' \ "$pkgdir/usr/share/metainfo/chromium.appdata.xml" local toplevel_files=( chrome_100_percent.pak chrome_200_percent.pak chrome_crashpad_handler libqt5_shim.so libqt6_shim.so resources.pak v8_context_snapshot.bin # ANGLE libEGL.so libGLESv2.so # SwiftShader ICD libvk_swiftshader.so libvulkan.so.1 vk_swiftshader_icd.json ) if [[ -z ${_system_libs[icu]+set} ]]; then toplevel_files+=(icudtl.dat) fi cp "${toplevel_files[@]/#/out/Release/}" "$pkgdir/usr/lib/chromium/" install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Release/locales/*.pak for size in 24 48 64 128 256; do install -Dm644 "chrome/app/theme/chromium/product_logo_$size.png" \ "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png" done for size in 16 32; do install -Dm644 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \ "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png" done install -Dm644 LICENSE "$pkgdir/usr/share/licenses/chromium/LICENSE" } # vim:set ts=2 sw=2 et: 07070100000008000081A4000000000000000000000001667CB59E0000080B000000000000000000000000000000000000003F00000000aur-1719448990.1b9485c/allow-ANGLEImplementation-kVulkan.patchFrom 9ca21ac45af570ce11a1b0b96fdb163985b59178 Mon Sep 17 00:00:00 2001 From: Ho Cheung <hocheung@chromium.org> Date: Wed, 29 May 2024 00:10:25 +0000 Subject: [PATCH] [ozone+wayland] Allow ANGLEImplementation::kVulkan when ozone platform is Wayland When passing `gl=egl-angle,angle=vulkan` flags on a device with an AMD graphics card and using `ozone wayland`, since `gl::ANGLEImplementation::kVulkan` is not in `WaylandSurfaceFactory::GetAllowedGLImplementations`, As a result, it cannot be initialized normally. This CL adds `gl::ANGLEImplementation::kVulkan` to `WaylandSurfaceFactory::GetAllowedGLImplementations` to ensure that it can be initialized normally. In addition, the changes made in this CL have been verified by many developers or users in the Linux community, and should not break other things without passing specific flags. Get VAAPI acceleration working on amdgpus,such as Radeon 780M. Bug: 334275637,40722838,41392107 Change-Id: Id1c9720159ee6149b620e12e5dc7b9df89d38409 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5568860 Commit-Queue: Ho Cheung <hocheung@chromium.org> Reviewed-by: Kramer Ge <fangzhoug@chromium.org> Reviewed-by: Nick Yamane <nickdiego@igalia.com> Cr-Commit-Position: refs/heads/main@{#1307136} --- ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc index b6e99324c02b..7602a6b8e693 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc +++ b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc @@ -214,6 +214,7 @@ WaylandSurfaceFactory::GetAllowedGLImplementations() { impls.emplace_back(gl::ANGLEImplementation::kOpenGL); impls.emplace_back(gl::ANGLEImplementation::kOpenGLES); impls.emplace_back(gl::ANGLEImplementation::kSwiftShader); + impls.emplace_back(gl::ANGLEImplementation::kVulkan); impls.emplace_back(gl::kGLImplementationEGLGLES2); } return impls; 07070100000009000081A4000000000000000000000001667CB59E000004D8000000000000000000000000000000000000003600000000aur-1719448990.1b9485c/compiler-rt-adjust-paths.patchdiff --git a/build/config/clang/BUILD.gn b/build/config/clang/BUILD.gn index d4de2e0cca0..57359c32121 100644 --- a/build/config/clang/BUILD.gn +++ b/build/config/clang/BUILD.gn @@ -130,12 +130,15 @@ template("clang_lib") { } else if (is_linux || is_chromeos) { if (current_cpu == "x64") { _dir = "x86_64-unknown-linux-gnu" + _suffix = "-x86_64" } else if (current_cpu == "x86") { _dir = "i386-unknown-linux-gnu" + _suffix = "-i386" } else if (current_cpu == "arm") { _dir = "armv7-unknown-linux-gnueabihf" } else if (current_cpu == "arm64") { _dir = "aarch64-unknown-linux-gnu" + _suffix = "-aarch64" } else { assert(false) # Unhandled cpu type } @@ -166,6 +169,11 @@ template("clang_lib") { assert(false) # Unhandled target platform } + # Bit of a hack to make this find builtins from compiler-rt >= 16 + if (is_linux || is_chromeos) { + _dir = "linux" + } + _clang_lib_dir = "$clang_base_path/lib/clang/$clang_version/lib" _lib_file = "${_prefix}clang_rt.${_libname}${_suffix}.${_ext}" libs = [ "$_clang_lib_dir/$_dir/$_lib_file" ] 0707010000000A000081A4000000000000000000000001667CB59E0000041B000000000000000000000000000000000000003E00000000aur-1719448990.1b9485c/drop-flag-unsupported-by-clang17.patchdiff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn index 6efe967eb0a1..590a2c274ac1 100644 --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn @@ -568,24 +568,6 @@ config("compiler") { } } - # TODO(crbug.com/40283598): This causes binary size growth and potentially - # other problems. - # TODO(crbug.com/40284925): This isn't supported by Cronet's mainline llvm version. - if (default_toolchain != "//build/toolchain/cros:target" && - !llvm_android_mainline) { - cflags += [ - "-mllvm", - "-split-threshold-for-reg-with-hint=0", - ] - if (use_thin_lto && is_a_target_toolchain) { - if (is_win) { - ldflags += [ "-mllvm:-split-threshold-for-reg-with-hint=0" ] - } else { - ldflags += [ "-Wl,-mllvm,-split-threshold-for-reg-with-hint=0" ] - } - } - } - # TODO(crbug.com/40192287): Investigate why/if this should be needed. if (is_win) { cflags += [ "/clang:-ffp-contract=off" ] 0707010000000B000081A4000000000000000000000001667CB59E000005DD000000000000000000000000000000000000003F00000000aur-1719448990.1b9485c/ninja-out-of-order-generation-fix.patch--- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn @@ -73,6 +73,7 @@ "//cc/animation", "//cc/mojo_embedder", "//cc/paint", + "//chrome/common:buildflags", "//components/attribution_reporting:mojom", "//components/back_forward_cache:enum", "//components/browsing_topics/common:common", @@ -83,6 +84,7 @@ "//components/download/public/common:public", "//components/file_access", "//components/filename_generation", + "//components/lens:buildflags", "//components/link_header_util", "//components/metrics", "//components/metrics:single_sample_metrics", --- a/chrome/browser/extensions/BUILD.gn +++ b/chrome/browser/extensions/BUILD.gn @@ -898,6 +898,7 @@ "//components/resources", "//components/safe_browsing:buildflags", "//components/safe_browsing/content/browser/web_ui:web_ui", + "//components/safe_browsing/content/common/proto:download_file_types_proto", "//components/safe_browsing/core/browser/db:database_manager", "//components/safe_browsing/core/common", "//components/safe_browsing/core/common:safe_browsing_prefs", --- a/chrome/common/BUILD.gn +++ b/chrome/common/BUILD.gn @@ -605,6 +605,7 @@ "//components/optimization_guide/optimization_guide_internals/webui:url_constants", "//components/password_manager/content/common", "//components/safe_browsing/core/common", + "//components/supervised_user/core/common:buildflags", "//device/vr/buildflags", ] } 0707010000000C000081ED000000000000000000000001667CB59E0000028A000000000000000000000000000000000000002900000000aur-1719448990.1b9485c/update-patches.sh#!/bin/bash patches=( 0001-adjust-buffer-format-order.patch 0001-enable-linux-unstable-deb-target.patch 0001-ozone-wayland-implement-text_input_manager-fixes.patch 0001-ozone-wayland-implement-text_input_manager_v3.patch 0001-vaapi-flag-ozone-wayland.patch ninja-out-of-order-generation-fix.patch ) mkdir tmp mv "${patches[@]}" tmp rm ./*.patch git clone https://gitlab.archlinux.org/archlinux/packaging/packages/chromium #(cd chromium && git checkout 29d40a45d11a56a36027bb128f70c9cd1a90edf3) mv chromium/*.patch . nvim -d PKGBUILD chromium/PKGBUILD makepkg --printsrcinfo > .SRCINFO rm -rf chromium mv tmp/* . rmdir tmp 0707010000000D000081A4000000000000000000000001667CB59E00000445000000000000000000000000000000000000004300000000aur-1719448990.1b9485c/use-oauth2-client-switches-as-default.patchdiff --git a/google_apis/google_api_keys-inc.cc b/google_apis/google_api_keys-inc.cc index 4d13e697a54d..61aac7b48662 100644 --- a/google_apis/google_api_keys-inc.cc +++ b/google_apis/google_api_keys-inc.cc @@ -193,11 +193,11 @@ class APIKeyCache { std::string default_client_id = CalculateKeyValue( GOOGLE_DEFAULT_CLIENT_ID, STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_ID), std::string(), - nullptr, std::string(), environment.get(), command_line, gaia_config); + ::switches::kOAuth2ClientID, std::string(), environment.get(), command_line, gaia_config); std::string default_client_secret = CalculateKeyValue( GOOGLE_DEFAULT_CLIENT_SECRET, STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_SECRET), std::string(), - nullptr, std::string(), environment.get(), command_line, gaia_config); + ::switches::kOAuth2ClientSecret, std::string(), environment.get(), command_line, gaia_config); // We currently only allow overriding the baked-in values for the // default OAuth2 client ID and secret using a command-line 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000B00000000TRAILER!!!112 blocks
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor