Fix no-sse2 patch bugs

* Revert https://chromium-review.googlesource.com/c/chromium/src/+/570351
  which assumes that x86 must have SSE (1).

* Fix the wsola_internals.cc patch: xmmintrin.h requires only SSE (1),
  not SSE2. (Should not really make a difference in practice though.)

* Fix rebasing copy&paste error in DirectConvolver.cpp.
This commit is contained in:
Kevin Kofler 2017-12-27 00:22:26 +01:00
parent 2e3844f4b7
commit ab0943aad9
2 changed files with 58 additions and 7 deletions

View File

@ -96,9 +96,10 @@ Patch4: qtwebengine-everywhere-src-5.10.0-system-nspr-prtime.patch
# undoing, there were no modifications at all. Must be applied after Patch4.
Patch5: qtwebengine-everywhere-src-5.10.0-system-icu-utf.patch
# do not require SSE2 on i686
# cumulative revert of upstream reviews 187423002, 308003004, 511773002 (parts
# relevant to QtWebEngine only), 516543004, 1152053004 and 1161853008, and V8
# Gerrit review 575756, along with some custom fixes and improvements
# cumulative revert of Chromium reviews 187423002, 308003004, 511773002 (parts
# relevant to QtWebEngine only), 516543004, 1152053004 and 1161853008, Chromium
# Gerrit review 570351 and V8 Gerrit review 575756, along with some custom fixes
# and improvements
# also build V8 shared and twice on i686 (once for x87, once for SSE2)
Patch6: qtwebengine-everywhere-src-5.10.0-no-sse2.patch
# fix missing ARM -mfpu setting

View File

@ -239,6 +239,56 @@ diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/build/toolchai
clang_toolchain("clang_x64") {
# Output linker map files for binary size analysis.
enable_linker_map = true
diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/cc/base/math_util.cc qtwebengine-everywhere-src-5.10.0-no-sse2/src/3rdparty/chromium/cc/base/math_util.cc
--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/cc/base/math_util.cc 2017-11-28 14:06:53.000000000 +0100
+++ qtwebengine-everywhere-src-5.10.0-no-sse2/src/3rdparty/chromium/cc/base/math_util.cc 2017-12-26 23:04:53.301868189 +0100
@@ -7,7 +7,7 @@
#include <algorithm>
#include <cmath>
#include <limits>
-#if defined(ARCH_CPU_X86_FAMILY)
+#ifdef __SSE__
#include <xmmintrin.h>
#endif
@@ -810,7 +810,7 @@
}
ScopedSubnormalFloatDisabler::ScopedSubnormalFloatDisabler() {
-#if defined(ARCH_CPU_X86_FAMILY)
+#ifdef __SSE__
// Turn on "subnormals are zero" and "flush to zero" CSR flags.
orig_state_ = _mm_getcsr();
_mm_setcsr(orig_state_ | 0x8040);
@@ -818,7 +818,7 @@
}
ScopedSubnormalFloatDisabler::~ScopedSubnormalFloatDisabler() {
-#if defined(ARCH_CPU_X86_FAMILY)
+#ifdef __SSE__
_mm_setcsr(orig_state_);
#endif
}
diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/cc/base/math_util.h qtwebengine-everywhere-src-5.10.0-no-sse2/src/3rdparty/chromium/cc/base/math_util.h
--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/cc/base/math_util.h 2017-11-28 14:06:53.000000000 +0100
+++ qtwebengine-everywhere-src-5.10.0-no-sse2/src/3rdparty/chromium/cc/base/math_util.h 2017-12-26 23:04:53.301868189 +0100
@@ -11,7 +11,6 @@
#include <vector>
#include "base/logging.h"
-#include "build/build_config.h"
#include "cc/base/base_export.h"
#include "ui/gfx/geometry/box_f.h"
#include "ui/gfx/geometry/point3_f.h"
@@ -331,7 +330,7 @@
~ScopedSubnormalFloatDisabler();
private:
-#if defined(ARCH_CPU_X86_FAMILY)
+#ifdef __SSE__
unsigned int orig_state_;
#endif
DISALLOW_COPY_AND_ASSIGN(ScopedSubnormalFloatDisabler);
diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/cc/BUILD.gn qtwebengine-everywhere-src-5.10.0-no-sse2/src/3rdparty/chromium/cc/BUILD.gn
--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/cc/BUILD.gn 2017-11-28 14:06:53.000000000 +0100
+++ qtwebengine-everywhere-src-5.10.0-no-sse2/src/3rdparty/chromium/cc/BUILD.gn 2017-12-25 13:16:20.896994372 +0100
@ -1103,13 +1153,13 @@ diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/media/BUILD.gn
# TODO(watk): Refactor tests that could be made to run on Android. See
diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/media/filters/wsola_internals.cc qtwebengine-everywhere-src-5.10.0-no-sse2/src/3rdparty/chromium/media/filters/wsola_internals.cc
--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/media/filters/wsola_internals.cc 2017-11-28 14:06:53.000000000 +0100
+++ qtwebengine-everywhere-src-5.10.0-no-sse2/src/3rdparty/chromium/media/filters/wsola_internals.cc 2017-12-25 12:58:07.760365227 +0100
+++ qtwebengine-everywhere-src-5.10.0-no-sse2/src/3rdparty/chromium/media/filters/wsola_internals.cc 2017-12-26 23:00:39.631753174 +0100
@@ -15,7 +15,7 @@
#include "base/logging.h"
#include "media/base/audio_bus.h"
-#if defined(ARCH_CPU_X86_FAMILY)
+#if defined(ARCH_CPU_X86_FAMILY) && defined(__SSE2__)
+#if defined(ARCH_CPU_X86_FAMILY) && defined(__SSE__)
#define USE_SIMD 1
#include <xmmintrin.h>
#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
@ -1566,7 +1616,7 @@ diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/We
const __m128 v_curve_points_per_frame = _mm_set_ps1(curve_points_per_frame);
diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp qtwebengine-everywhere-src-5.10.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp
--- qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp 2017-11-28 14:06:53.000000000 +0100
+++ qtwebengine-everywhere-src-5.10.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp 2017-12-25 14:40:01.051077869 +0100
+++ qtwebengine-everywhere-src-5.10.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp 2017-12-27 00:16:35.571877993 +0100
@@ -26,6 +26,9 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
@ -1599,7 +1649,7 @@ diff -Nur qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/We
+
DirectConvolver::DirectConvolver(size_t input_block_size)
- : input_block_size_(input_block_size), buffer_(input_block_size * 2) {}
+ : m_inputBlockSize(inputBlockSize), m_buffer(inputBlockSize * 2) {
+ : input_block_size_(input_block_size), buffer_(input_block_size * 2) {
+#ifdef ARCH_CPU_X86
+ base::CPU cpu;
+ m_haveSSE2 = cpu.has_sse2();