Modified: trunk/Source/ThirdParty/ANGLE/ChangeLog (293419 => 293420)
--- trunk/Source/ThirdParty/ANGLE/ChangeLog 2022-04-26 08:15:05 UTC (rev 293419)
+++ trunk/Source/ThirdParty/ANGLE/ChangeLog 2022-04-26 10:29:11 UTC (rev 293420)
@@ -1,3 +1,28 @@
+2022-04-26 Kimmo Kinnunen <[email protected]>
+
+ Update test_expectations, run_code_generation.py, angle_unittests.gni from ANGLE upstream
+ https://bugs.webkit.org/show_bug.cgi?id=239645
+
+ Unreviewed, reproducible with Tools/Scripts/update-angle --regenerate-changes-diff
+
+ These are not changed in downstream but the changes are due to stale merges.
+ Reduces the changes.diff
+
+ * changes.diff:
+ * scripts/run_code_generation.py:
+ (main):
+ * src/tests/angle_unittests.gni:
+ * src/tests/deqp_support/deqp_egl_TestExpectations: Renamed from Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_egl_TestExpectations.
+ * src/tests/deqp_support/deqp_gles2_TestExpectations: Renamed from Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles2_TestExpectations.
+ * src/tests/deqp_support/deqp_gles31_rotate_TestExpectations: Renamed from Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles31_rotate_TestExpectations.
+ * src/tests/deqp_support/deqp_gles31_TestExpectations: Renamed from Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles31_TestExpectations.
+ * src/tests/deqp_support/deqp_gles3_rotate_TestExpectations: Renamed from Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles3_rotate_TestExpectations.
+ * src/tests/deqp_support/deqp_gles3_TestExpectations: Renamed from Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles3_TestExpectations.
+ * src/tests/deqp_support/deqp_khr_gles2_TestExpectations: Renamed from Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles2_TestExpectations.
+ * src/tests/deqp_support/deqp_khr_gles31_TestExpectations: Renamed from Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles31_TestExpectations.
+ * src/tests/deqp_support/deqp_khr_gles32_TestExpectations: Renamed from Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles32_TestExpectations.
+ * src/tests/deqp_support/deqp_khr_gles3_TestExpectations: Renamed from Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles3_TestExpectations.
+
2022-04-25 Kimmo Kinnunen <[email protected]>
REGRESSION (Safari 15.4) Performance regression after uploading WebGL buffers
Modified: trunk/Source/ThirdParty/ANGLE/changes.diff (293419 => 293420)
--- trunk/Source/ThirdParty/ANGLE/changes.diff 2022-04-26 08:15:05 UTC (rev 293419)
+++ trunk/Source/ThirdParty/ANGLE/changes.diff 2022-04-26 10:29:11 UTC (rev 293420)
@@ -1,19 +1,3 @@
-diff --git a/scripts/run_code_generation.py b/scripts/run_code_generation.py
-index fa1a029b5ee6034cc74f71438e5d21d148fb09e8..bc79da2adff1bab915293c7692942dbaf12a09c2 100755
---- a/scripts/run_code_generation.py
-+++ b/scripts/run_code_generation.py
-@@ -254,8 +254,11 @@ def main():
- f = open(os.path.basename(script), "r")
- if subprocess.call([get_executable_name(f.readline()),
- os.path.basename(script)]) != 0:
-+ print('Error Running ' + name + ' code generator')
- sys.exit(1)
- f.close()
-+ else:
-+ print('Verifying ' + name + ' code generator')
-
- # Update the hash dictionary.
- all_new_hashes[fname] = new_hashes
diff --git a/src/common/utilities.cpp b/src/common/utilities.cpp
index a175734c39c5bd25fcba8325da8585a17a0c9d0a..7fc9aa792ace24f146923e374542d7253bd16a48 100644
--- a/src/common/utilities.cpp
@@ -58,6 +42,34 @@
#ifdef ANGLE_ENABLE_METAL_SPIRV
# include "compiler/translator/TranslatorMetal.h"
+diff --git a/src/compiler/translator/IntermNode.cpp b/src/compiler/translator/IntermNode.cpp
+index 3c7635cb73319afef3b1565cd5a2731b0c9f385a..a1c998322519b15882646ece4cbe871ed2b3a75e 100644
+--- a/src/compiler/translator/IntermNode.cpp
++++ b/src/compiler/translator/IntermNode.cpp
+@@ -279,7 +279,7 @@ bool TIntermLoop::replaceChildNode(TIntermNode *original, TIntermNode *replaceme
+ }
+
+ TIntermBranch::TIntermBranch(const TIntermBranch &node)
+- : TIntermBranch(node.mFlowOp, node.mExpression->deepCopy())
++ : TIntermBranch(node.mFlowOp, node.mExpression ? node.mExpression->deepCopy() : nullptr)
+ {}
+
+ size_t TIntermBranch::getChildCount() const
+@@ -1601,10 +1601,10 @@ TIntermLoop::TIntermLoop(TLoopType type,
+
+ TIntermLoop::TIntermLoop(const TIntermLoop &node)
+ : TIntermLoop(node.mType,
+- node.mInit->deepCopy(),
+- node.mCond->deepCopy(),
+- node.mExpr->deepCopy(),
+- node.mBody->deepCopy())
++ node.mInit ? node.mInit->deepCopy() : nullptr,
++ node.mCond ? node.mCond->deepCopy() : nullptr,
++ node.mExpr ? node.mExpr->deepCopy() : nullptr,
++ node.mBody ? node.mBody->deepCopy() : nullptr)
+ {}
+
+ TIntermIfElse::TIntermIfElse(TIntermTyped *cond, TIntermBlock *trueB, TIntermBlock *falseB)
diff --git a/src/compiler/translator/TranslatorMetalDirect/IdGen.cpp b/src/compiler/translator/TranslatorMetalDirect/IdGen.cpp
index 81ff2722f4983df6bc508602ea4fe06d6da74dd2..9d2b43bc0f987e8b9cb37b2119778e8b5ceb886c 100644
--- a/src/compiler/translator/TranslatorMetalDirect/IdGen.cpp
@@ -312,8 +324,42 @@
} // namespace rx
+diff --git a/src/libANGLE/renderer/metal/BufferMtl.h b/src/libANGLE/renderer/metal/BufferMtl.h
+index 438e8dafeb9c4d18595ab486f4e3eee7a156f285..c20690c62ed2e3b64a52e50a9f28c7d98bbd5057 100644
+--- a/src/libANGLE/renderer/metal/BufferMtl.h
++++ b/src/libANGLE/renderer/metal/BufferMtl.h
+@@ -12,6 +12,7 @@
+
+ #import <Metal/Metal.h>
+
++#include <optional>
+ #include <utility>
+
+ #include "libANGLE/Buffer.h"
+@@ -215,17 +216,13 @@ class BufferMtl : public BufferImpl, public BufferHolderMtl
+
+ struct RestartRangeCache
+ {
+- RestartRangeCache() : indexType(gl::DrawElementsType::InvalidEnum) { isDirty = true; }
+ RestartRangeCache(std::vector<IndexRange> &&ranges_, gl::DrawElementsType indexType_)
+- : ranges(ranges_), indexType(indexType_), isDirty(false)
++ : ranges(ranges_), indexType(indexType_)
+ {}
+- void markDirty() { isDirty = true; }
+- operator bool() const { return isDirty; }
+- std::vector<IndexRange> ranges;
+- gl::DrawElementsType indexType;
+- bool isDirty;
++ const std::vector<IndexRange> ranges;
++ const gl::DrawElementsType indexType;
+ };
+- RestartRangeCache mRestartRangeCache;
++ std::optional<RestartRangeCache> mRestartRangeCache;
+ std::vector<IndexRange> mRestartIndices;
+ };
+
diff --git a/src/libANGLE/renderer/metal/BufferMtl.mm b/src/libANGLE/renderer/metal/BufferMtl.mm
-index 279923ff2cc0a3fa2f3259d36de9375cc19be576..900aea8afb94ae32b37711ddb8136c43b0308b49 100644
+index 279923ff2cc0a3fa2f3259d36de9375cc19be576..1766256930914b030119724f01d2adb2f54269a2 100644
--- a/src/libANGLE/renderer/metal/BufferMtl.mm
+++ b/src/libANGLE/renderer/metal/BufferMtl.mm
@@ -365,7 +365,7 @@
@@ -325,6 +371,48 @@
}
}
+@@ -395,7 +395,7 @@
+ buffer.convertedBuffer = nullptr;
+ buffer.convertedOffset = 0;
+ }
+- mRestartRangeCache.markDirty();
++ mRestartRangeCache.reset();
+ }
+
+ void BufferMtl::clearConversionBuffers()
+@@ -403,7 +403,7 @@
+ mVertexConversionBuffers.clear();
+ mIndexConversionBuffers.clear();
+ mUniformConversionBuffers.clear();
+- mRestartRangeCache.markDirty();
++ mRestartRangeCache.reset();
+ }
+
+ template <typename T>
+@@ -433,9 +433,9 @@
+ const std::vector<IndexRange> &BufferMtl::getRestartIndices(ContextMtl *ctx,
+ gl::DrawElementsType indexType)
+ {
+- if (!mRestartRangeCache || mRestartRangeCache.indexType != indexType)
++ if (!mRestartRangeCache || mRestartRangeCache->indexType != indexType)
+ {
+- mRestartRangeCache.markDirty();
++ mRestartRangeCache.reset();
+ std::vector<IndexRange> ranges;
+ switch (indexType)
+ {
+@@ -451,9 +451,9 @@
+ default:
+ ASSERT(false);
+ }
+- mRestartRangeCache = RestartRangeCache(std::move(ranges), indexType);
++ mRestartRangeCache.emplace(std::move(ranges), indexType);
+ }
+- return mRestartRangeCache.ranges;
++ return mRestartRangeCache->ranges;
+ }
+
+ const std::vector<IndexRange> BufferMtl::getRestartIndicesFromClientData(
@@ -520,7 +520,7 @@
default:
// dynamic buffer, allow up to 10 update per frame/encoding without
@@ -738,16 +826,3 @@
AutoObjCPtr<NSError *> *error);
bool SupportsAppleGPUFamily(id<MTLDevice> device, uint8_t appleFamily);
-diff --git a/src/tests/angle_unittests.gni b/src/tests/angle_unittests.gni
-index 613e0790b9347b454e2473ef40a8025cf052dfa8..252a207642689795c90465e1688303de96cfaa2a 100644
---- a/src/tests/angle_unittests.gni
-+++ b/src/tests/angle_unittests.gni
-@@ -167,6 +167,8 @@ if (is_android) {
- [ "compiler_tests/ImmutableString_test_autogen.cpp" ]
- }
-
-+angle_unittests_msl_sources = [ "../tests/compiler_tests/MSLOutput_test.cpp" ]
-+
- if (!is_android && !is_fuchsia) {
- angle_unittests_sources += [ "test_utils/runner/TestSuite_unittest.cpp" ]
- }
Modified: trunk/Source/ThirdParty/ANGLE/scripts/run_code_generation.py (293419 => 293420)
--- trunk/Source/ThirdParty/ANGLE/scripts/run_code_generation.py 2022-04-26 08:15:05 UTC (rev 293419)
+++ trunk/Source/ThirdParty/ANGLE/scripts/run_code_generation.py 2022-04-26 10:29:11 UTC (rev 293420)
@@ -254,11 +254,8 @@
f = open(os.path.basename(script), "r")
if subprocess.call([get_executable_name(f.readline()),
os.path.basename(script)]) != 0:
- print('Error Running ' + name + ' code generator')
sys.exit(1)
f.close()
- else:
- print('Verifying ' + name + ' code generator')
# Update the hash dictionary.
all_new_hashes[fname] = new_hashes