From 07cc276a105db66241481585212ed701a408b917 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sun, 7 Apr 2024 23:29:39 +0200 Subject: [PATCH 1/7] Issue #2470 - Check for failure of getting IDXGIKeyedMutex. --- gfx/thebes/D3D11Checks.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/gfx/thebes/D3D11Checks.cpp b/gfx/thebes/D3D11Checks.cpp index b5be58ff53..9619884472 100644 --- a/gfx/thebes/D3D11Checks.cpp +++ b/gfx/thebes/D3D11Checks.cpp @@ -246,7 +246,11 @@ DoesTextureSharingWorkInternal(ID3D11Device *device, DXGI_FORMAT format, UINT bi } RefPtr sourceSharedMutex; - texture->QueryInterface(__uuidof(IDXGIKeyedMutex), (void**)getter_AddRefs(sourceSharedMutex)); + HRESULT hr = texture->QueryInterface(__uuidof(IDXGIKeyedMutex), (void**)getter_AddRefs(sourceSharedMutex)); + if (FAILED(hr) || !sourceSharedMutex) { + gfxCriticalNote << "Failed to acquire IDXGIKeyedMutex; texture sharing disabled."; + return false; + } if (FAILED(sourceSharedMutex->AcquireSync(0, 30*1000))) { gfxCriticalError() << "DoesD3D11TextureSharingWork_SourceMutexTimeout"; // only wait for 30 seconds @@ -306,9 +310,12 @@ DoesTextureSharingWorkInternal(ID3D11Device *device, DXGI_FORMAT format, UINT bi } RefPtr sharedMutex; - sharedResource->QueryInterface(__uuidof(IDXGIKeyedMutex), (void**)getter_AddRefs(sharedMutex)); - { - HRESULT hr; + hr = sharedResource->QueryInterface(__uuidof(IDXGIKeyedMutex), (void**)getter_AddRefs(sharedMutex)); + if (FAILED(hr) || !sharedMutex) { + gfxCriticalNote << "Failed to acquire IDXGIKeyedMutex; texture sharing disabled."; + return false; + } + { // Scope for mutex lock. AutoTextureLock lock(sharedMutex, hr, 30*1000); if (FAILED(hr)) { gfxCriticalError() << "DoesD3D11TextureSharingWork_AcquireSyncTimeout"; From f2c576b12c38bbeeaaa11020766beb4fe72bb826 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sat, 13 Apr 2024 12:07:46 +0200 Subject: [PATCH 2/7] Issue #2472 - Enable dialog element by default. While work is still on-going to get layering/modal right, this should be enabled by default for web compatibility reasons. --- modules/libpref/init/all.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index 17c6021044..85aacfd61b 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -5178,7 +5178,7 @@ pref("narrate.filter-voices", true); pref("dom.audiochannel.mutedByDefault", false); // HTML element -pref("dom.dialog_element.enabled", false); +pref("dom.dialog_element.enabled", true); // Enable
and tags. pref("dom.details_element.enabled", true); From 2811d30051ebd7958cbc256da631adad18a0aaa6 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sun, 14 Apr 2024 17:48:12 +0200 Subject: [PATCH 3/7] [DOM] Add nullcheck on mDoc in GetEventTargetParent --- dom/base/nsGlobalWindow.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp index 75d3c1861a..3ef2f6cd8c 100644 --- a/dom/base/nsGlobalWindow.cpp +++ b/dom/base/nsGlobalWindow.cpp @@ -3545,7 +3545,9 @@ nsGlobalWindow::GetEventTargetParent(EventChainPreVisitor& aVisitor) aVisitor.mCanHandle = true; // Middle/right click shouldn't dispatch click event, use auxclick to instead. - if (mDoc->IsXULDocument()) { + // Note: mDoc should always exist here, but check just in case someone yanked + // it out from under us. + if (mDoc && mDoc->IsXULDocument()) { aVisitor.mForceContentDispatch = true; //FIXME! Bug 329119 } if (msg == eResize && aVisitor.mEvent->IsTrusted()) { From 35d7a1fe5ab3668e1f963a1bfa080b35ee82be2f Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sun, 14 Apr 2024 20:47:17 +0200 Subject: [PATCH 4/7] Issue #2503 - Part 1: add CPU IS support flags to Navigator interface --- dom/base/Navigator.cpp | 12 ++++++++++++ dom/base/Navigator.h | 2 ++ dom/webidl/Navigator.webidl | 4 ++++ 3 files changed, 18 insertions(+) diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp index a507dea841..0f7f2b756e 100644 --- a/dom/base/Navigator.cpp +++ b/dom/base/Navigator.cpp @@ -678,6 +678,18 @@ Navigator::CpuHasSSE2() return mozilla::supports_sse2(); } +bool +Navigator::CpuHasAVX() +{ + return mozilla::supports_avx(); +} + +bool +Navigator::CpuHasAVX2() +{ + return mozilla::supports_avx2(); +} + void Navigator::RefreshMIMEArray() { diff --git a/dom/base/Navigator.h b/dom/base/Navigator.h index 69626d1a7c..10f9573ee9 100644 --- a/dom/base/Navigator.h +++ b/dom/base/Navigator.h @@ -173,6 +173,8 @@ public: bool JavaEnabled(ErrorResult& aRv); uint64_t HardwareConcurrency(); bool CpuHasSSE2(); + bool CpuHasAVX(); + bool CpuHasAVX2(); bool TaintEnabled() { return false; diff --git a/dom/webidl/Navigator.webidl b/dom/webidl/Navigator.webidl index 60ed84d535..f2212de392 100644 --- a/dom/webidl/Navigator.webidl +++ b/dom/webidl/Navigator.webidl @@ -211,6 +211,10 @@ partial interface Navigator { */ [ChromeOnly] readonly attribute boolean cpuHasSSE2; + [ChromeOnly] + readonly attribute boolean cpuHasAVX; + [ChromeOnly] + readonly attribute boolean cpuHasAVX2; }; // nsIDOMNavigatorDesktopNotification From a211c7d7f3a77b950db66b5269f78d92652df1f5 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sun, 14 Apr 2024 21:01:31 +0200 Subject: [PATCH 5/7] Issue #2503 - Part 2: Add CPU IS support flags to UpdateUtils URL substitutions. --- toolkit/modules/UpdateUtils.jsm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/toolkit/modules/UpdateUtils.jsm b/toolkit/modules/UpdateUtils.jsm index 5acf395d3d..80cddfd369 100644 --- a/toolkit/modules/UpdateUtils.jsm +++ b/toolkit/modules/UpdateUtils.jsm @@ -81,7 +81,10 @@ this.UpdateUtils = { [/%PLATFORM_VERSION%/g, Services.appinfo.platformVersion], [/%DISTRIBUTION%/g, distribution], [/%DISTRIBUTION_VERSION%/g, distributionVersion], - [/%LOCALE%/g, this.Locale] + [/%LOCALE%/g, this.Locale], + [/%CPU_SSE2%/g, navigator.cpuHasSSE2], + [/%CPU_AVX%/g, navigator.cpuHasAVX], + [/%CPU_AVX2%/g, navigator.cpuHasAVX2] ]; substs.forEach(([_subst, _value]) => aUpdateURL = aUpdateURL.replace(_subst, _value)); From baf98e0ddec11de8f38270593146674fd76d0b93 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sun, 14 Apr 2024 21:57:48 +0200 Subject: [PATCH 6/7] Issue #2503 - Part 2b: Fix missing navigator in UpdateUtils. --- toolkit/modules/UpdateUtils.jsm | 1 + 1 file changed, 1 insertion(+) diff --git a/toolkit/modules/UpdateUtils.jsm b/toolkit/modules/UpdateUtils.jsm index 80cddfd369..31a9e933e0 100644 --- a/toolkit/modules/UpdateUtils.jsm +++ b/toolkit/modules/UpdateUtils.jsm @@ -66,6 +66,7 @@ this.UpdateUtils = { let custom = prefBranch.getCharPref(PREF_APP_UPDATE_CUSTOM, ""); let distribution = prefBranch.getCharPref(PREF_APP_DISTRIBUTION, "default"); let distributionVersion = prefBranch.getCharPref(PREF_APP_DISTRIBUTION_VERSION, "default"); + let navigator = Services.appShell.hiddenDOMWindow.navigator; let substs = [ [/%ID%/g, Services.appinfo.ID], From 407a79e79f75a1de2af5588d8d54e853683af43f Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sun, 14 Apr 2024 21:58:20 +0200 Subject: [PATCH 7/7] Issue #2503 - Part 3: Add CPU capabilities to about:support. --- toolkit/content/aboutSupport.js | 4 ++++ toolkit/content/aboutSupport.xhtml | 9 +++++++++ toolkit/locales/en-US/chrome/global/aboutSupport.dtd | 1 + 3 files changed, 14 insertions(+) diff --git a/toolkit/content/aboutSupport.js b/toolkit/content/aboutSupport.js index f9a0abcb0e..fccb99e810 100644 --- a/toolkit/content/aboutSupport.js +++ b/toolkit/content/aboutSupport.js @@ -39,6 +39,10 @@ var snapshotFormatters = { $("application-box").textContent = data.name; $("useragent-box").textContent = data.userAgent; $("os-box").textContent = data.osVersion; + let cpucaps = navigator.cpuHasSSE2?"SSE2 ":""; + cpucaps += navigator.cpuHasAVX?"AVX ":""; + cpucaps += navigator.cpuHasAVX2?"AVX2 ":""; + $("cpucap-box").textContent = cpucaps; $("binary-box").textContent = Services.dirsvc.get("XREExeF", Ci.nsIFile).path; $("supportLink").href = data.supportURL; let version = Services.appinfo.version; diff --git a/toolkit/content/aboutSupport.xhtml b/toolkit/content/aboutSupport.xhtml index 8afee18676..b9d61e2982 100644 --- a/toolkit/content/aboutSupport.xhtml +++ b/toolkit/content/aboutSupport.xhtml @@ -142,6 +142,15 @@ + + + &aboutSupport.appBasicsCPUCaps; + + + + + + &aboutSupport.appBasicsBinary; diff --git a/toolkit/locales/en-US/chrome/global/aboutSupport.dtd b/toolkit/locales/en-US/chrome/global/aboutSupport.dtd index f827268b43..96d9deef0d 100644 --- a/toolkit/locales/en-US/chrome/global/aboutSupport.dtd +++ b/toolkit/locales/en-US/chrome/global/aboutSupport.dtd @@ -47,6 +47,7 @@ Windows/Mac use the term "Folder" instead of "Directory" --> +