summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extra/chromium/PKGBUILD11
-rw-r--r--extra/chromium/chromium-vaapi-uintptr.patch42
2 files changed, 53 insertions, 0 deletions
diff --git a/extra/chromium/PKGBUILD b/extra/chromium/PKGBUILD
index 2fcfd257..56527bc7 100644
--- a/extra/chromium/PKGBUILD
+++ b/extra/chromium/PKGBUILD
@@ -5,3 +5,14 @@ declare -f build | \
/_flags/ a _flags+=('fatal_linker_warnings=false')
'
)"
+
+# fix regression uintptr_t in vaapi
+source+=(chromium-vaapi-uintptr.patch)
+sha256sums+=('67e4eccc8134fc422f86cc1f1371b84be11f6f84ec5f041ea6178e304f0fe995')
+
+eval "$(
+ declare -f prepare | \
+ sed '
+ /chromium-system-icu.patch/a patch -Np1 -i ../chromium-vaapi-uintptr.patch
+ '
+)"
diff --git a/extra/chromium/chromium-vaapi-uintptr.patch b/extra/chromium/chromium-vaapi-uintptr.patch
new file mode 100644
index 00000000..c64414a8
--- /dev/null
+++ b/extra/chromium/chromium-vaapi-uintptr.patch
@@ -0,0 +1,42 @@
+diff -rauN chromium-72.0.3626.121/media/gpu/vaapi/vaapi_wrapper.cc chromium-72.0.3626.121-vaapi-uintptr-patch/media/gpu/vaapi/vaapi_wrapper.cc
+--- chromium-72.0.3626.121/media/gpu/vaapi/vaapi_wrapper.cc 2019-03-02 05:10:25.000000000 +0100
++++ chromium-72.0.3626.121-vaapi-uintptr-patch/media/gpu/vaapi/vaapi_wrapper.cc 2019-03-09 19:02:37.795731310 +0100
+@@ -4,6 +4,7 @@
+
+ #include "media/gpu/vaapi/vaapi_wrapper.h"
+
++#include <cstdint>
+ #include <dlfcn.h>
+ #include <string.h>
+
+@@ -333,10 +334,17 @@
+ DVLOG(1) << "VAAPI version: " << major_version << "." << minor_version << " "
+ << va_vendor_string_;
+
+- if (major_version != VA_MAJOR_VERSION || minor_version != VA_MINOR_VERSION) {
+- LOG(ERROR) << "This build of Chromium requires VA-API version "
+- << VA_MAJOR_VERSION << "." << VA_MINOR_VERSION
+- << ", system version: " << major_version << "." << minor_version;
++ // The VAAPI version is determined from what is loaded on the system by
++ // calling vaInitialize(). Since the libva is now ABI-compatible, relax the
++ // version check which helps in upgrading the libva, without breaking any
++ // existing functionality. Make sure the system version is not older than
++ // the version with which the chromium is built since libva is only
++ // guaranteed to be backward (and not forward) compatible.
++ if (VA_MAJOR_VERSION > major_version ||
++ (VA_MAJOR_VERSION == major_version && VA_MINOR_VERSION > minor_version)) {
++ LOG(ERROR) << "The system version " << major_version << "." << minor_version
++ << " should be greater than or equal to "
++ << VA_MAJOR_VERSION << "." << VA_MINOR_VERSION;
+ return false;
+ }
+ return true;
+@@ -1000,7 +1008,7 @@
+ }
+ va_attrib_extbuf.num_planes = num_planes;
+
+- std::vector<unsigned long> fds(num_fds);
++ std::vector<uintptr_t> fds(num_fds);
+ for (size_t i = 0; i < num_fds; ++i) {
+ int dmabuf_fd = pixmap->GetDmaBufFd(i);
+ if (dmabuf_fd < 0) {