searching for reviewer(sotaro)
0781afa3bb7919d268f976ca2d0f9604eb6afa5a: Bug 1770560 [Linux] Move GetAsSourceSurface() implementation from DMABUFSurfaceImage to DMABufSurface r=sotaro,jgilbert
stransky <stransky@redhat.com> - Mon, 06 Jun 2022 13:31:03 +0000 - rev 695370
Push 2894 by ffxbld-merge at Mon, 18 Jul 2022 15:03:28 +0000
Bug 1770560 [Linux] Move GetAsSourceSurface() implementation from DMABUFSurfaceImage to DMABufSurface r=sotaro,jgilbert Both DMABUFSurfaceImage and DMABufSurface use its own headless GL context to create GL texture from DMABufSurface. Let's unity that in DMABufSurface and use only one shared GL context for it. Depends on D146989 Differential Revision: https://phabricator.services.mozilla.com/D146990
98e9e39c076ed74e960036cf23ebb1abf313283b: Bug 1770560 [Linux] Implement GLBlitHelper::Blit(DMABufSurface* surface,...) to blit DMABufSurface directly r=sotaro,jgilbert
stransky <stransky@redhat.com> - Mon, 06 Jun 2022 13:31:03 +0000 - rev 695369
Push 2894 by ffxbld-merge at Mon, 18 Jul 2022 15:03:28 +0000
Bug 1770560 [Linux] Implement GLBlitHelper::Blit(DMABufSurface* surface,...) to blit DMABufSurface directly r=sotaro,jgilbert Differential Revision: https://phabricator.services.mozilla.com/D146989
f7e0860e5d7ef3a950ac31f121e476526d908f9c: Bug 1759784 [Linux] Store logical and aligned surface size for DMABufSurfaceYUV r=sotaro
stransky <stransky@redhat.com> - Sat, 14 May 2022 06:48:36 +0000 - rev 692634
Push 2877 by ffxbld-merge at Mon, 20 Jun 2022 11:01:28 +0000
Bug 1759784 [Linux] Store logical and aligned surface size for DMABufSurfaceYUV r=sotaro There may be added pixels to VA-API decoded surface to keep 16px alignment. Store the aligned size internaly as widthAligned/heightAligned and use that to create EGLImage only. Depends on D146084 Differential Revision: https://phabricator.services.mozilla.com/D146085
64aa5dcbb275e88added8ed7962233ba30c16ce0: Bug 1759784 [Linux] Add widthAligned / heightAligned to SurfaceDescriptorDMABuf r=sotaro
stransky <stransky@redhat.com> - Sat, 14 May 2022 06:48:36 +0000 - rev 692633
Push 2877 by ffxbld-merge at Mon, 20 Jun 2022 11:01:28 +0000
Bug 1759784 [Linux] Add widthAligned / heightAligned to SurfaceDescriptorDMABuf r=sotaro We need transfer aligned surface size, VA-API add extra width/height to decoded surface to keep 16px alignment and some GL drivers (like AMD) refuses to create EGLImage when stride and width does not match (Bug 1724385). Differential Revision: https://phabricator.services.mozilla.com/D146084
bef9104f01c528a0b0fac514ebcf35b505924224: Bug 1756598 [Linux] Make GL context creation thread safe r=sotaro,jgilbert
stransky <stransky@redhat.com> - Mon, 09 May 2022 17:52:11 +0000 - rev 692036
Push 2877 by ffxbld-merge at Mon, 20 Jun 2022 11:01:28 +0000
Bug 1756598 [Linux] Make GL context creation thread safe r=sotaro,jgilbert Differential Revision: https://phabricator.services.mozilla.com/D144284
624ae1b1ac6520a02172c8df3d805b48cd30ee96: Bug 1766377 - Fix remaining sign-compare warnings in Windows builds. r=rkraesig,gsvelto,media-playback-reviewers,gfx-reviewers,bryce,sotaro
Mike Hommey <mh+mozilla@glandium.org> - Fri, 29 Apr 2022 09:14:12 +0000 - rev 690737
Push 2861 by ffxbld-merge at Mon, 23 May 2022 13:50:24 +0000
Bug 1766377 - Fix remaining sign-compare warnings in Windows builds. r=rkraesig,gsvelto,media-playback-reviewers,gfx-reviewers,bryce,sotaro browser/components/shell/WindowsUserChoice.cpp(233,23): error: comparison of integers of different signs: 'int' and 'const size_t' (aka 'const unsigned long long') [-Werror,-Wsign-compare] for (int j = 0; j < DWORDS_PER_BLOCK; ++j) { ~ ^ ~~~~~~~~~~~~~~~~ browser/components/shell/WindowsUserChoice.cpp(388,21): error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long long') [-Werror,-Wsign-compare] for (int i = 0; i < ArrayLength(exts); ++i) { ~ ^ ~~~~~~~~~~~~~~~~~ browser/components/shell/nsWindowsShellService.cpp(1225,21): error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long long') [-Werror,-Wsign-compare] for (int i = 0; i < ArrayLength(shortcutCSIDLs); ++i) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ browser/components/shell/nsWindowsShellService.cpp(1492,21): error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long long') [-Werror,-Wsign-compare] for (int i = 0; i < ArrayLength(folders); ++i) { ~ ^ ~~~~~~~~~~~~~~~~~~~~ dom/media/platforms/wmf/MFTDecoder.cpp(85,23): error: comparison of integers of different signs: 'int' and 'UINT32' (aka 'unsigned int') [-Werror,-Wsign-compare] for (int i = 1; i < actsNum; i++) { ~ ^ ~~~~~~~ gfx/2d/Factory.cpp(1276,21): error: comparison of integers of different signs: 'int' and 'uint32_t' (aka 'unsigned int') [-Werror,-Wsign-compare] for (int y = 0; y < height; y++) { ~ ^ ~~~~~~ gfx/layers/d3d11/CompositorD3D11.cpp(1096,36): error: comparison of integers of different signs: 'UINT' (aka 'unsigned int') and 'int' [-Werror,-Wsign-compare] swapDesc.BufferDesc.Height == mSize.height) || ~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~ gfx/layers/d3d11/CompositorD3D11.cpp(1095,35): error: comparison of integers of different signs: 'UINT' (aka 'unsigned int') and 'int' [-Werror,-Wsign-compare] if (((swapDesc.BufferDesc.Width == mSize.width && ~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~ gfx/layers/d3d11/TextureD3D11.cpp(1278,30): error: comparison of integers of different signs: 'UINT' (aka 'unsigned int') and 'int' [-Werror,-Wsign-compare] currentDesc.Height != mSize.height || ~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~ gfx/layers/d3d11/TextureD3D11.cpp(1277,29): error: comparison of integers of different signs: 'UINT' (aka 'unsigned int') and 'int' [-Werror,-Wsign-compare] if (currentDesc.Width != mSize.width || ~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~ gfx/layers/ipc/ContentCompositorBridgeParent.cpp(248,19): error: comparison of integers of different signs: 'const uint32_t' (aka 'const unsigned int') and 'int32_t' (aka 'int') [-Werror,-Wsign-compare] if (sequenceNum == status.sequenceNumber() && !dm->HasDeviceReset()) { ~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~ gfx/thebes/D3D11Checks.cpp(129,21): error: comparison of integers of different signs: 'int' and 'unsigned int' [-Werror,-Wsign-compare] if (resultColor != 0xffffff00) { ~~~~~~~~~~~ ^ ~~~~~~~~~~ gfx/thebes/D3D11Checks.cpp(154,23): error: comparison of integers of different signs: 'int' and 'unsigned long long' [-Werror,-Wsign-compare] for (int i = 0; i < PR_ARRAY_SIZE(checkModules); i += 1) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ gfx/thebes/D3D11Checks.cpp(409,14): error: comparison of integers of different signs: 'int32_t' (aka 'int') and 'UINT' (aka 'unsigned int') [-Werror,-Wsign-compare] if (vendor != desc.VendorId) { ~~~~~~ ^ ~~~~~~~~~~~~~ gfx/thebes/gfxDWriteFontList.cpp(1248,39): error: comparison of integers of different signs: 'unsigned int' and 'int' [-Werror,-Wsign-compare] addFamily(names[index], index != sysLocIndex); ~~~~~ ^ ~~~~~~~~~~~ intl/lwbrk/nsUniscribeBreaker.cpp(121,21): error: comparison of integers of different signs: 'int' and 'uint32_t' (aka 'unsigned int') [-Werror,-Wsign-compare] for (int i = 0; i < aLength; ++i) { ~ ^ ~~~~~~~ intl/lwbrk/nsUniscribeBreaker.cpp(132,23): error: comparison of integers of different signs: 'int' and 'uint32_t' (aka 'unsigned int') [-Werror,-Wsign-compare] for (int i = 0; i < aLength; ++i) { ~ ^ ~~~~~~~ intl/lwbrk/nsUniscribeBreaker.cpp(138,23): error: comparison of integers of different signs: 'int' and 'uint32_t' (aka 'unsigned int') [-Werror,-Wsign-compare] for (int i = 0; i < aLength; ++i) { ~ ^ ~~~~~~~ mozglue/misc/PreXULSkeletonUI.cpp(319,26): error: comparison of integers of different signs: 'std::basic_string<char>::size_type' (aka 'unsigned long long') and 'int' [-Werror,-Wsign-compare] while (line.length() > whitespace && ~~~~~~~~~~~~~ ^ ~~~~~~~~~~ mozglue/misc/PreXULSkeletonUI.cpp(1003,21): error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long long') [-Werror,-Wsign-compare] for (int i = 1; i < noPlaceholderSpans.length(); i++) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ mozglue/misc/PreXULSkeletonUI.cpp(1708,21): error: comparison of integers of different signs: 'int' and 'unsigned long long' [-Werror,-Wsign-compare] for (int i = 0; i < dataLen / (2 * sizeof(double)); i++) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ security/sandbox/chromium-shim/sandbox/win/permissionsService.cpp(40,16): error: comparison of integers of different signs: 'int' and 'const std::basic_string<wchar_t>::size_type' (aka 'const unsigned long long') [-Werror,-Wsign-compare] if (slashIdx != std::wstring::npos) { ~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~ toolkit/components/aboutthirdparty/tests/gtest/TestAboutThirdParty.cpp(107,21): error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long long') [-Werror,-Wsign-compare] for (int i = 0; i < ArrayLength(kDirectoriesUnsorted); ++i) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ toolkit/crashreporter/breakpad-client/windows/crash_generation/crash_generation_server.cc(957,23): error: comparison of integers of different signs: 'int' and 'const size_t' (aka 'const unsigned long long') [-Werror,-Wsign-compare] for (int i = 0; i < kExceptionAppMemoryRegions; i++) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~ toolkit/crashreporter/client/crashreporter_win.cpp(373,21): error: comparison of integers of different signs: 'int' and 'unsigned long long' [-Werror,-Wsign-compare] for (int i = 0; i < sizeof(kDefaultAttachedBottom) / sizeof(UINT); i++) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ toolkit/crashreporter/client/crashreporter_win.cpp(671,21): error: comparison of integers of different signs: 'int' and 'unsigned long long' [-Werror,-Wsign-compare] for (int i = 0; i < sizeof(controls) / sizeof(controls[0]); i++) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ toolkit/crashreporter/client/crashreporter_win.cpp(1048,21): error: comparison of integers of different signs: 'int' and 'unsigned long long' [-Werror,-Wsign-compare] for (int i = 0; i < sizeof(kDefaultAttachedBottom) / sizeof(UINT); i++) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ toolkit/mozapps/defaultagent/SetDefaultBrowser.cpp(248,21): error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long long') [-Werror,-Wsign-compare] for (int i = 0; i < mozilla::ArrayLength(associations); ++i) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ toolkit/system/windowsproxy/ProxyUtils.cpp(27,36): error: comparison of integers of different signs: 'const int' and 'nsTArray_base::size_type' (aka 'unsigned long long') [-Werror,-Wsign-compare] if (i < addr.Length()) { ~ ^ ~~~~~~~~~~~~~ toolkit/xre/dllservices/mozglue/interceptor/Arm64.h(178,28): error: comparison of integers of different signs: 'int32_t' (aka 'int') and 'unsigned int' [-Werror,-Wsign-compare] if (signbits && signbits != 0xFE000000) { ~~~~~~~~ ^ ~~~~~~~~~~ obj-build/dist/include/gtest/gtest.h(1842,54): note: expanded from macro 'EXPECT_EQ' EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2) ^ obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned int' and 'const int' [-Werror,-Wsign-compare] if (lhs == rhs) { ~~~ ^ ~~~ obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned int, int>' requested here return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs); ^ toolkit/xre/dllservices/tests/gtest/TestUntrustedModules.cpp(35,5): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned int, int, nullptr>' requested here EXPECT_EQ(mCounters.Count(), N); ^ obj-build/dist/include/gtest/gtest.h(1842,54): note: expanded from macro 'EXPECT_EQ' EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2) ^ toolkit/xre/dllservices/tests/gtest/TestUntrustedModules.cpp(210,28): note: in instantiation of function template specialization 'ModuleLoadCounter::Remains<1>' requested here EXPECT_TRUE(waitForOne.Remains({kTestModules[0]}, {0})); ^ toolkit/xre/test/gtest/TestAssembleCommandLineWin.cpp(139,21): error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long long') [-Werror,-Wsign-compare] for (int i = 0; i < ArrayLength(kExpectedArgsW); ++i) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ toolkit/xre/test/gtest/TestAssembleCommandLineWin.cpp(151,21): error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long long') [-Werror,-Wsign-compare] for (int i = 0; i < ArrayLength(kExpectedArgsW); ++i) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ toolkit/xre/test/gtest/TestAssembleCommandLineWin.cpp(164,21): error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long long') [-Werror,-Wsign-compare] for (int i = 0; i < ArrayLength(kExpectedArgsW); ++i) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const int' and 'const unsigned long long' [-Werror,-Wsign-compare] if (lhs == rhs) { ~~~ ^ ~~~ obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<int, unsigned long long>' requested here return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs); ^ toolkit/xre/test/gtest/TestAssembleCommandLineWin.cpp(138,3): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<int, unsigned long long, nullptr>' requested here EXPECT_EQ(len, ArrayLength(kExpectedArgsW)); ^ widget/windows/TSFTextStore.cpp(3455,28): error: comparison of integers of different signs: 'uint32_t' (aka 'unsigned int') and 'long' [-Werror,-Wsign-compare] range.mEndOffset == end - mComposition->StartOffset() && ~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ widget/windows/TSFTextStore.cpp(3454,30): error: comparison of integers of different signs: 'uint32_t' (aka 'unsigned int') and 'long' [-Werror,-Wsign-compare] if (range.mStartOffset == start - mComposition->StartOffset() && ~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ xpfe/appshell/AppWindow.cpp(1900,21): error: comparison of integers of different signs: 'int' and 'uint32_t' (aka 'unsigned int') [-Werror,-Wsign-compare] for (int i = 0; i < toolbarSprings->Length(); i++) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~ Differential Revision: https://phabricator.services.mozilla.com/D144695
38403cbd82e61b2fe9bcb89a6e9dc09f59872c19: Bug 1766377 - Fix sign-compare warnings related to Windows constants. r=rkraesig,gfx-reviewers,sotaro
Mike Hommey <mh+mozilla@glandium.org> - Fri, 29 Apr 2022 09:14:11 +0000 - rev 690734
Push 2861 by ffxbld-merge at Mon, 23 May 2022 13:50:24 +0000
Bug 1766377 - Fix sign-compare warnings related to Windows constants. r=rkraesig,gfx-reviewers,sotaro obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned long' and 'const long' [-Werror,-Wsign-compare] if (lhs == rhs) { ~~~ ^ ~~~ obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned long, long>' requested here return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs); ^ toolkit/components/maintenanceservice/tests/gtest/ServiceStartInteractiveOnly.cpp(51,3): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned long, long, nullptr>' requested here ASSERT_EQ(GetLastError(), ERROR_ACCESS_DENIED); ^ obj-build/dist/include/gtest/gtest.h(1871,31): note: expanded from macro 'ASSERT_EQ' ^ obj-build/dist/include/gtest/gtest.h(1855,54): note: expanded from macro 'GTEST_ASSERT_EQ' ASSERT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2) ^ obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned long' and 'const long' [-Werror,-Wsign-compare] if (lhs == rhs) { ~~~ ^ ~~~ obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned long, long>' requested here return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs); ^ toolkit/library/gtest/TestUCRTDepends.cpp(52,5): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned long, long, nullptr>' requested here EXPECT_EQ(GetLastError(), ERROR_FILE_NOT_FOUND); ^ obj-build/dist/include/gtest/gtest.h(1842,54): note: expanded from macro 'EXPECT_EQ' EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2) ^ ipc/chromium/src/base/thread_local_win.cc(18,14): error: comparison of integers of different signs: 'base::ThreadLocalPlatform::SlotType' (aka 'int') and 'DWORD' (aka 'unsigned long') [-Werror,-Wsign-compare] CHECK(slot != TLS_OUT_OF_INDEXES); ~~~~ ^ ~~~~~~~~~~~~~~~~~~ ipc/glue/WindowsMessageLoop.cpp(381,44): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'int' [-Werror,-Wsign-compare] if (objId == OBJID_CLIENT || objId == MOZOBJID_UIAROOT) { ~~~~~ ^ ~~~~~~~~~~~~~~~~ ipc/glue/WindowsMessageLoop.cpp(381,19): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'LONG' (aka 'long') [-Werror,-Wsign-compare] if (objId == OBJID_CLIENT || objId == MOZOBJID_UIAROOT) { ~~~~~ ^ ~~~~~~~~~~~~ obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned long' and 'const long' [-Werror,-Wsign-compare] if (lhs == rhs) { ~~~ ^ ~~~ obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned long, long>' requested here return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs); ^ xpcom/tests/windows/TestPoisonIOInterposer.cpp(108,5): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned long, long, nullptr>' requested here EXPECT_EQ(::GetLastError(), ERROR_IO_PENDING); ^ obj-build/dist/include/gtest/gtest.h(1842,54): note: expanded from macro 'EXPECT_EQ' EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2) ^ gfx/thebes/gfxGDIFont.cpp(454,13): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'HRESULT' (aka 'long') [-Werror,-Wsign-compare] if (ret == E_PENDING) { ~~~ ^ ~~~~~~~~~ accessible/windows/msaa/Compatibility.cpp(120,21): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'HRESULT' (aka 'long') [-Werror,-Wsign-compare] if (exceptionCode == RPC_E_CANTCALLOUT_ININPUTSYNCCALL && NS_IsMainThread()) { ~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ widget/windows/WinIMEHandler.cpp(166,35): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'LONG' (aka 'long') [-Werror,-Wsign-compare] static_cast<DWORD>(aLParam) == OBJID_CARET) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~ widget/windows/nsWindow.cpp(541,37): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'LONG' (aka 'long') [-Werror,-Wsign-compare] static_cast<DWORD>(aLParam) != OBJID_CLIENT || ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~ Differential Revision: https://phabricator.services.mozilla.com/D144692
6335511477a464e13ccd21cbca2988b9a83d063c: Bug 1766377 - Fix remaining sign-compare warnings in Windows builds. r=rkraesig,gsvelto,media-playback-reviewers,gfx-reviewers,bryce,sotaro
Mike Hommey <mh+mozilla@glandium.org> - Fri, 29 Apr 2022 00:43:32 +0000 - rev 690720
Push 2861 by ffxbld-merge at Mon, 23 May 2022 13:50:24 +0000
Bug 1766377 - Fix remaining sign-compare warnings in Windows builds. r=rkraesig,gsvelto,media-playback-reviewers,gfx-reviewers,bryce,sotaro browser/components/shell/WindowsUserChoice.cpp(233,23): error: comparison of integers of different signs: 'int' and 'const size_t' (aka 'const unsigned long long') [-Werror,-Wsign-compare] for (int j = 0; j < DWORDS_PER_BLOCK; ++j) { ~ ^ ~~~~~~~~~~~~~~~~ browser/components/shell/WindowsUserChoice.cpp(388,21): error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long long') [-Werror,-Wsign-compare] for (int i = 0; i < ArrayLength(exts); ++i) { ~ ^ ~~~~~~~~~~~~~~~~~ browser/components/shell/nsWindowsShellService.cpp(1225,21): error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long long') [-Werror,-Wsign-compare] for (int i = 0; i < ArrayLength(shortcutCSIDLs); ++i) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ browser/components/shell/nsWindowsShellService.cpp(1492,21): error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long long') [-Werror,-Wsign-compare] for (int i = 0; i < ArrayLength(folders); ++i) { ~ ^ ~~~~~~~~~~~~~~~~~~~~ dom/media/platforms/wmf/MFTDecoder.cpp(85,23): error: comparison of integers of different signs: 'int' and 'UINT32' (aka 'unsigned int') [-Werror,-Wsign-compare] for (int i = 1; i < actsNum; i++) { ~ ^ ~~~~~~~ gfx/2d/Factory.cpp(1276,21): error: comparison of integers of different signs: 'int' and 'uint32_t' (aka 'unsigned int') [-Werror,-Wsign-compare] for (int y = 0; y < height; y++) { ~ ^ ~~~~~~ gfx/layers/d3d11/CompositorD3D11.cpp(1096,36): error: comparison of integers of different signs: 'UINT' (aka 'unsigned int') and 'int' [-Werror,-Wsign-compare] swapDesc.BufferDesc.Height == mSize.height) || ~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~ gfx/layers/d3d11/CompositorD3D11.cpp(1095,35): error: comparison of integers of different signs: 'UINT' (aka 'unsigned int') and 'int' [-Werror,-Wsign-compare] if (((swapDesc.BufferDesc.Width == mSize.width && ~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~ gfx/layers/d3d11/TextureD3D11.cpp(1278,30): error: comparison of integers of different signs: 'UINT' (aka 'unsigned int') and 'int' [-Werror,-Wsign-compare] currentDesc.Height != mSize.height || ~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~ gfx/layers/d3d11/TextureD3D11.cpp(1277,29): error: comparison of integers of different signs: 'UINT' (aka 'unsigned int') and 'int' [-Werror,-Wsign-compare] if (currentDesc.Width != mSize.width || ~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~ gfx/layers/ipc/ContentCompositorBridgeParent.cpp(248,19): error: comparison of integers of different signs: 'const uint32_t' (aka 'const unsigned int') and 'int32_t' (aka 'int') [-Werror,-Wsign-compare] if (sequenceNum == status.sequenceNumber() && !dm->HasDeviceReset()) { ~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~ gfx/thebes/D3D11Checks.cpp(129,21): error: comparison of integers of different signs: 'int' and 'unsigned int' [-Werror,-Wsign-compare] if (resultColor != 0xffffff00) { ~~~~~~~~~~~ ^ ~~~~~~~~~~ gfx/thebes/D3D11Checks.cpp(154,23): error: comparison of integers of different signs: 'int' and 'unsigned long long' [-Werror,-Wsign-compare] for (int i = 0; i < PR_ARRAY_SIZE(checkModules); i += 1) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ gfx/thebes/D3D11Checks.cpp(409,14): error: comparison of integers of different signs: 'int32_t' (aka 'int') and 'UINT' (aka 'unsigned int') [-Werror,-Wsign-compare] if (vendor != desc.VendorId) { ~~~~~~ ^ ~~~~~~~~~~~~~ gfx/thebes/gfxDWriteFontList.cpp(1248,39): error: comparison of integers of different signs: 'unsigned int' and 'int' [-Werror,-Wsign-compare] addFamily(names[index], index != sysLocIndex); ~~~~~ ^ ~~~~~~~~~~~ intl/lwbrk/nsUniscribeBreaker.cpp(121,21): error: comparison of integers of different signs: 'int' and 'uint32_t' (aka 'unsigned int') [-Werror,-Wsign-compare] for (int i = 0; i < aLength; ++i) { ~ ^ ~~~~~~~ intl/lwbrk/nsUniscribeBreaker.cpp(132,23): error: comparison of integers of different signs: 'int' and 'uint32_t' (aka 'unsigned int') [-Werror,-Wsign-compare] for (int i = 0; i < aLength; ++i) { ~ ^ ~~~~~~~ intl/lwbrk/nsUniscribeBreaker.cpp(138,23): error: comparison of integers of different signs: 'int' and 'uint32_t' (aka 'unsigned int') [-Werror,-Wsign-compare] for (int i = 0; i < aLength; ++i) { ~ ^ ~~~~~~~ mozglue/misc/PreXULSkeletonUI.cpp(319,26): error: comparison of integers of different signs: 'std::basic_string<char>::size_type' (aka 'unsigned long long') and 'int' [-Werror,-Wsign-compare] while (line.length() > whitespace && ~~~~~~~~~~~~~ ^ ~~~~~~~~~~ mozglue/misc/PreXULSkeletonUI.cpp(1003,21): error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long long') [-Werror,-Wsign-compare] for (int i = 1; i < noPlaceholderSpans.length(); i++) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ mozglue/misc/PreXULSkeletonUI.cpp(1708,21): error: comparison of integers of different signs: 'int' and 'unsigned long long' [-Werror,-Wsign-compare] for (int i = 0; i < dataLen / (2 * sizeof(double)); i++) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ security/sandbox/chromium-shim/sandbox/win/permissionsService.cpp(40,16): error: comparison of integers of different signs: 'int' and 'const std::basic_string<wchar_t>::size_type' (aka 'const unsigned long long') [-Werror,-Wsign-compare] if (slashIdx != std::wstring::npos) { ~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~ toolkit/components/aboutthirdparty/tests/gtest/TestAboutThirdParty.cpp(107,21): error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long long') [-Werror,-Wsign-compare] for (int i = 0; i < ArrayLength(kDirectoriesUnsorted); ++i) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ toolkit/crashreporter/breakpad-client/windows/crash_generation/crash_generation_server.cc(957,23): error: comparison of integers of different signs: 'int' and 'const size_t' (aka 'const unsigned long long') [-Werror,-Wsign-compare] for (int i = 0; i < kExceptionAppMemoryRegions; i++) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~ toolkit/crashreporter/client/crashreporter_win.cpp(373,21): error: comparison of integers of different signs: 'int' and 'unsigned long long' [-Werror,-Wsign-compare] for (int i = 0; i < sizeof(kDefaultAttachedBottom) / sizeof(UINT); i++) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ toolkit/crashreporter/client/crashreporter_win.cpp(671,21): error: comparison of integers of different signs: 'int' and 'unsigned long long' [-Werror,-Wsign-compare] for (int i = 0; i < sizeof(controls) / sizeof(controls[0]); i++) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ toolkit/crashreporter/client/crashreporter_win.cpp(1048,21): error: comparison of integers of different signs: 'int' and 'unsigned long long' [-Werror,-Wsign-compare] for (int i = 0; i < sizeof(kDefaultAttachedBottom) / sizeof(UINT); i++) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ toolkit/mozapps/defaultagent/SetDefaultBrowser.cpp(248,21): error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long long') [-Werror,-Wsign-compare] for (int i = 0; i < mozilla::ArrayLength(associations); ++i) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ toolkit/system/windowsproxy/ProxyUtils.cpp(27,36): error: comparison of integers of different signs: 'const int' and 'nsTArray_base::size_type' (aka 'unsigned long long') [-Werror,-Wsign-compare] if (i < addr.Length()) { ~ ^ ~~~~~~~~~~~~~ toolkit/xre/dllservices/mozglue/interceptor/Arm64.h(178,28): error: comparison of integers of different signs: 'int32_t' (aka 'int') and 'unsigned int' [-Werror,-Wsign-compare] if (signbits && signbits != 0xFE000000) { ~~~~~~~~ ^ ~~~~~~~~~~ obj-build/dist/include/gtest/gtest.h(1842,54): note: expanded from macro 'EXPECT_EQ' EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2) ^ obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned int' and 'const int' [-Werror,-Wsign-compare] if (lhs == rhs) { ~~~ ^ ~~~ obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned int, int>' requested here return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs); ^ toolkit/xre/dllservices/tests/gtest/TestUntrustedModules.cpp(35,5): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned int, int, nullptr>' requested here EXPECT_EQ(mCounters.Count(), N); ^ obj-build/dist/include/gtest/gtest.h(1842,54): note: expanded from macro 'EXPECT_EQ' EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2) ^ toolkit/xre/dllservices/tests/gtest/TestUntrustedModules.cpp(210,28): note: in instantiation of function template specialization 'ModuleLoadCounter::Remains<1>' requested here EXPECT_TRUE(waitForOne.Remains({kTestModules[0]}, {0})); ^ toolkit/xre/test/gtest/TestAssembleCommandLineWin.cpp(139,21): error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long long') [-Werror,-Wsign-compare] for (int i = 0; i < ArrayLength(kExpectedArgsW); ++i) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ toolkit/xre/test/gtest/TestAssembleCommandLineWin.cpp(151,21): error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long long') [-Werror,-Wsign-compare] for (int i = 0; i < ArrayLength(kExpectedArgsW); ++i) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ toolkit/xre/test/gtest/TestAssembleCommandLineWin.cpp(164,21): error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long long') [-Werror,-Wsign-compare] for (int i = 0; i < ArrayLength(kExpectedArgsW); ++i) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const int' and 'const unsigned long long' [-Werror,-Wsign-compare] if (lhs == rhs) { ~~~ ^ ~~~ obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<int, unsigned long long>' requested here return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs); ^ toolkit/xre/test/gtest/TestAssembleCommandLineWin.cpp(138,3): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<int, unsigned long long, nullptr>' requested here EXPECT_EQ(len, ArrayLength(kExpectedArgsW)); ^ widget/windows/TSFTextStore.cpp(3455,28): error: comparison of integers of different signs: 'uint32_t' (aka 'unsigned int') and 'long' [-Werror,-Wsign-compare] range.mEndOffset == end - mComposition->StartOffset() && ~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ widget/windows/TSFTextStore.cpp(3454,30): error: comparison of integers of different signs: 'uint32_t' (aka 'unsigned int') and 'long' [-Werror,-Wsign-compare] if (range.mStartOffset == start - mComposition->StartOffset() && ~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ xpfe/appshell/AppWindow.cpp(1900,21): error: comparison of integers of different signs: 'int' and 'uint32_t' (aka 'unsigned int') [-Werror,-Wsign-compare] for (int i = 0; i < toolbarSprings->Length(); i++) { ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~ Differential Revision: https://phabricator.services.mozilla.com/D144695
1a6583d6e52ebd036e616d82521e804e962bce22: Bug 1766377 - Fix sign-compare warnings related to Windows constants. r=rkraesig,gfx-reviewers,sotaro
Mike Hommey <mh+mozilla@glandium.org> - Fri, 29 Apr 2022 00:43:31 +0000 - rev 690717
Push 2861 by ffxbld-merge at Mon, 23 May 2022 13:50:24 +0000
Bug 1766377 - Fix sign-compare warnings related to Windows constants. r=rkraesig,gfx-reviewers,sotaro obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned long' and 'const long' [-Werror,-Wsign-compare] if (lhs == rhs) { ~~~ ^ ~~~ obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned long, long>' requested here return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs); ^ toolkit/components/maintenanceservice/tests/gtest/ServiceStartInteractiveOnly.cpp(51,3): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned long, long, nullptr>' requested here ASSERT_EQ(GetLastError(), ERROR_ACCESS_DENIED); ^ obj-build/dist/include/gtest/gtest.h(1871,31): note: expanded from macro 'ASSERT_EQ' ^ obj-build/dist/include/gtest/gtest.h(1855,54): note: expanded from macro 'GTEST_ASSERT_EQ' ASSERT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2) ^ obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned long' and 'const long' [-Werror,-Wsign-compare] if (lhs == rhs) { ~~~ ^ ~~~ obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned long, long>' requested here return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs); ^ toolkit/library/gtest/TestUCRTDepends.cpp(52,5): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned long, long, nullptr>' requested here EXPECT_EQ(GetLastError(), ERROR_FILE_NOT_FOUND); ^ obj-build/dist/include/gtest/gtest.h(1842,54): note: expanded from macro 'EXPECT_EQ' EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2) ^ ipc/chromium/src/base/thread_local_win.cc(18,14): error: comparison of integers of different signs: 'base::ThreadLocalPlatform::SlotType' (aka 'int') and 'DWORD' (aka 'unsigned long') [-Werror,-Wsign-compare] CHECK(slot != TLS_OUT_OF_INDEXES); ~~~~ ^ ~~~~~~~~~~~~~~~~~~ ipc/glue/WindowsMessageLoop.cpp(381,44): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'int' [-Werror,-Wsign-compare] if (objId == OBJID_CLIENT || objId == MOZOBJID_UIAROOT) { ~~~~~ ^ ~~~~~~~~~~~~~~~~ ipc/glue/WindowsMessageLoop.cpp(381,19): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'LONG' (aka 'long') [-Werror,-Wsign-compare] if (objId == OBJID_CLIENT || objId == MOZOBJID_UIAROOT) { ~~~~~ ^ ~~~~~~~~~~~~ obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned long' and 'const long' [-Werror,-Wsign-compare] if (lhs == rhs) { ~~~ ^ ~~~ obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned long, long>' requested here return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs); ^ xpcom/tests/windows/TestPoisonIOInterposer.cpp(108,5): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned long, long, nullptr>' requested here EXPECT_EQ(::GetLastError(), ERROR_IO_PENDING); ^ obj-build/dist/include/gtest/gtest.h(1842,54): note: expanded from macro 'EXPECT_EQ' EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2) ^ gfx/thebes/gfxGDIFont.cpp(454,13): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'HRESULT' (aka 'long') [-Werror,-Wsign-compare] if (ret == E_PENDING) { ~~~ ^ ~~~~~~~~~ accessible/windows/msaa/Compatibility.cpp(120,21): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'HRESULT' (aka 'long') [-Werror,-Wsign-compare] if (exceptionCode == RPC_E_CANTCALLOUT_ININPUTSYNCCALL && NS_IsMainThread()) { ~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ widget/windows/WinIMEHandler.cpp(166,35): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'LONG' (aka 'long') [-Werror,-Wsign-compare] static_cast<DWORD>(aLParam) == OBJID_CARET) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~ widget/windows/nsWindow.cpp(541,37): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'LONG' (aka 'long') [-Werror,-Wsign-compare] static_cast<DWORD>(aLParam) != OBJID_CLIENT || ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~ Differential Revision: https://phabricator.services.mozilla.com/D144692
3b45988779a8ff00c0df909ffdb603d6cfe16e36: Bug 1758227 - Add 3 more fuzziness pixels for tier2 android tests r=gfx-reviewers,sotaro
Glenn Watson <git@intuitionlibrary.com> - Mon, 07 Mar 2022 00:46:30 +0000 - rev 684254
Push 2808 by ffxbld-merge at Mon, 28 Mar 2022 15:42:33 +0000
Bug 1758227 - Add 3 more fuzziness pixels for tier2 android tests r=gfx-reviewers,sotaro Differential Revision: https://phabricator.services.mozilla.com/D140455
015fea9ab135be1846cfe5ee8f161e7bc5d22691: Bug 1750858 - Respect mPicSize in WebRender. r=sotaro
Lee Salzman <lsalzman@mozilla.com> - Tue, 22 Feb 2022 17:56:30 +0000 - rev 682966
Push 2808 by ffxbld-merge at Mon, 28 Mar 2022 15:42:33 +0000
Bug 1750858 - Respect mPicSize in WebRender. r=sotaro This makes WR properly handle mPicSize when RenderBufferTextureHost is used. The main change is that we need to take care to pass in display().Size() from the descriptor, and then further use that to carefully limit the size of the CbCr texture, as it doesn't necessarily maintain an appropriate half-sized scale with respect to the Y texture if it is padded. Given that mPicSize should now actually work, we should no longer need any of the previous mCroppedSize mechanisms that were added to work around this, and so they are removed in this patch. Differential Revision: https://phabricator.services.mozilla.com/D139267
e499bb902659e65d470ec1d0ee503f96667671d3: Bug 1754978 - Part 1. Refactor CompositableHandle infrastructure to allow in-process driven handles. r=sotaro
Andrew Osmond <aosmond@mozilla.com> - Fri, 18 Feb 2022 15:59:12 +0000 - rev 682751
Push 2808 by ffxbld-merge at Mon, 28 Mar 2022 15:42:33 +0000
Bug 1754978 - Part 1. Refactor CompositableHandle infrastructure to allow in-process driven handles. r=sotaro For WebGPU, we produce the textures in the compositor process and the content process doesn't need to be that involved except for hooking up the texture to the display list. Currently this is done via an external image ID. Given that WebGPU needs to work with OffscreenCanvas, it would be best if its display pipeline was consistent whether it was gotten from an HTMLCanvasElement, OffscreenCanvas on the main thread, or on a worker thread. As such, using an AsyncImagePipeline would be best. However there is no real need to bounce the handles across process boundaries. Hence this patch which adds CompositableInProcessManager. This static class is responsible for collecting WebRenderImageHost objects backed by TextureHost objects which do not leave the compositor process. This will allow WebGPUParent to schedule compositions directly in future patches. Differential Revision: https://phabricator.services.mozilla.com/D138588
98983bf9eaed6ed5ac6227ea669492cfc6c51e0a: Bug 1754978 - Part 1. Refactor CompositableHandle infrastructure to allow in-process driven handles. r=sotaro
Andrew Osmond <aosmond@mozilla.com> - Wed, 16 Feb 2022 22:23:19 +0000 - rev 682545
Push 2808 by ffxbld-merge at Mon, 28 Mar 2022 15:42:33 +0000
Bug 1754978 - Part 1. Refactor CompositableHandle infrastructure to allow in-process driven handles. r=sotaro For WebGPU, we produce the textures in the compositor process and the content process doesn't need to be that involved except for hooking up the texture to the display list. Currently this is done via an external image ID. Given that WebGPU needs to work with OffscreenCanvas, it would be best if its display pipeline was consistent whether it was gotten from an HTMLCanvasElement, OffscreenCanvas on the main thread, or on a worker thread. As such, using an AsyncImagePipeline would be best. However there is no real need to bounce the handles across process boundaries. Hence this patch which adds CompositableInProcessManager. This static class is responsible for collecting WebRenderImageHost objects backed by TextureHost objects which do not leave the compositor process. This will allow WebGPUParent to schedule compositions directly in future patches. Differential Revision: https://phabricator.services.mozilla.com/D138588
555a3481ee4d49d8ca0097d6897021c93e667675: Bug 1713276 - part1 : allocate shmem for ffmpeg to store decoded data directly. r=stransky,gfx-reviewers,sotaro,jgilbert,media-playback-reviewers
alwu <alwu@mozilla.com> - Tue, 25 Jan 2022 02:44:59 +0000 - rev 679723
Push 2774 by ffxbld-merge at Mon, 28 Feb 2022 09:53:44 +0000
Bug 1713276 - part1 : allocate shmem for ffmpeg to store decoded data directly. r=stransky,gfx-reviewers,sotaro,jgilbert,media-playback-reviewers This implements a customized buffer allocator for ffmpeg decoder to allow it to store decoded data on shmem, so decoded data can be shared with the compositor process without doing extra copy. As ffmpeg decoder needs a special alignment which will be larger than the actual image, we would need to crop the planes by telling plane descriptor correct place size in order to display image correctly. Otherwise, showing a larger image causes visible incorrect border on the right and bottom of the actual image. This will help improve the performance of software decoding while using ffmpeg and ffvpx, which is about h264 and vpx on Linux, vpx on Windows and MacOS. Inaddition, Here is a result [1] showing that how much improvement using shmem can help. [1] https://bit.ly/3dy4rya Differential Revision: https://phabricator.services.mozilla.com/D130220
b2676297c6ff11eacc8bd959d28abd0e8cdbc0cf: Bug 1713276 - part1 : allocate shmem for ffmpeg to store decoded data directly. r=stransky,gfx-reviewers,sotaro,jgilbert,media-playback-reviewers
alwu <alwu@mozilla.com> - Sat, 22 Jan 2022 17:25:22 +0000 - rev 679590
Push 2774 by ffxbld-merge at Mon, 28 Feb 2022 09:53:44 +0000
Bug 1713276 - part1 : allocate shmem for ffmpeg to store decoded data directly. r=stransky,gfx-reviewers,sotaro,jgilbert,media-playback-reviewers This implements a customized buffer allocator for ffmpeg decoder to allow it to store decoded data on shmem, so decoded data can be shared with the compositor process without doing extra copy. As ffmpeg decoder needs a special alignment which will be larger than the actual image, we would need to crop the planes by telling plane descriptor correct place size in order to display image correctly. Otherwise, showing a larger image causes visible incorrect border on the right and bottom of the actual image. This will help improve the performance of software decoding while using ffmpeg and ffvpx, which is about h264 and vpx on Linux, vpx on Windows and MacOS. Inaddition, Here is a result [1] showing that how much improvement using shmem can help. [1] https://bit.ly/3dy4rya Differential Revision: https://phabricator.services.mozilla.com/D130220
002c71e3c3f77c6a7f21dcb0d831d6609559b6ed: Bug 1713276 - part1 : allocate shmem for ffmpeg to store decoded data directly. r=stransky,gfx-reviewers,sotaro,jgilbert,media-playback-reviewers
alwu <alwu@mozilla.com> - Thu, 20 Jan 2022 23:53:10 +0000 - rev 679443
Push 2774 by ffxbld-merge at Mon, 28 Feb 2022 09:53:44 +0000
Bug 1713276 - part1 : allocate shmem for ffmpeg to store decoded data directly. r=stransky,gfx-reviewers,sotaro,jgilbert,media-playback-reviewers This implements a customized buffer allocator for ffmpeg decoder to allow it to store decoded data on shmem, so decoded data can be shared with the compositor process without doing extra copy. As ffmpeg decoder needs a special alignment which will be larger than the actual image, we would need to crop the planes by telling plane descriptor correct place size in order to display image correctly. Otherwise, showing a larger image causes visible incorrect border on the right and bottom of the actual image. This will help improve the performance of software decoding while using ffmpeg and ffvpx, which is about h264 and vpx on Linux, vpx on Windows and MacOS. Inaddition, Here is a result [1] showing that how much improvement using shmem can help. [1] https://bit.ly/3dy4rya Differential Revision: https://phabricator.services.mozilla.com/D130220
f8814abefa20065745cbc74d0668e5e52f4705c6: Bug 1713276 - part1 : allocate shmem for ffmpeg to store decoded data directly. r=stransky,gfx-reviewers,sotaro,jgilbert,media-playback-reviewers
alwu <alwu@mozilla.com> - Thu, 20 Jan 2022 05:50:54 +0000 - rev 679326
Push 2774 by ffxbld-merge at Mon, 28 Feb 2022 09:53:44 +0000
Bug 1713276 - part1 : allocate shmem for ffmpeg to store decoded data directly. r=stransky,gfx-reviewers,sotaro,jgilbert,media-playback-reviewers This implements a customized buffer allocator for ffmpeg decoder to allow it to store decoded data on shmem, so decoded data can be shared with the compositor process without doing extra copy. As ffmpeg decoder needs a special alignment which will be larger than the actual image, we would need to crop the planes by telling plane descriptor correct place size in order to display image correctly. Otherwise, showing a larger image causes visible incorrect border on the right and bottom of the actual image. This will help improve the performance of software decoding while using ffmpeg and ffvpx, which is about h264 and vpx on Linux, vpx on Windows and MacOS. Inaddition, Here is a result [1] showing that how much improvement using shmem can help. [1] https://bit.ly/3dy4rya Differential Revision: https://phabricator.services.mozilla.com/D130220
13ce7037ff27f15be5c2219c1c77c4288f6b5904: Bug 1713276 - part1 : allocate shmem for ffmpeg to store decoded data directly. r=stransky,gfx-reviewers,sotaro,jgilbert,media-playback-reviewers
alwu <alwu@mozilla.com> - Thu, 20 Jan 2022 04:11:48 +0000 - rev 679321
Push 2774 by ffxbld-merge at Mon, 28 Feb 2022 09:53:44 +0000
Bug 1713276 - part1 : allocate shmem for ffmpeg to store decoded data directly. r=stransky,gfx-reviewers,sotaro,jgilbert,media-playback-reviewers This implements a customized buffer allocator for ffmpeg decoder to allow it to store decoded data on shmem, so decoded data can be shared with the compositor process without doing extra copy. As ffmpeg decoder needs a special alignment which will be larger than the actual image, we would need to crop the planes by telling plane descriptor correct place size in order to display image correctly. Otherwise, showing a larger image causes visible incorrect border on the right and bottom of the actual image. This will help improve the performance of software decoding while using ffmpeg and ffvpx, which is about h264 and vpx on Linux, vpx on Windows and MacOS. Inaddition, Here is a result [1] showing that how much improvement using shmem can help. [1] https://bit.ly/3dy4rya Differential Revision: https://phabricator.services.mozilla.com/D130220
45e17ed872759e070c9354a39045e667e68a76fb: Bug 1747299 - [UniqueBuffer] Use UniqueBuffer::Take instead of copy constructors for void*. r=gfx-reviewers,sotaro
Kelsey Gilbert <jgilbert@mozilla.com> - Sat, 25 Dec 2021 00:31:48 +0000 - rev 677416
Push 2757 by ffxbld-merge at Mon, 31 Jan 2022 17:15:09 +0000
Bug 1747299 - [UniqueBuffer] Use UniqueBuffer::Take instead of copy constructors for void*. r=gfx-reviewers,sotaro Differential Revision: https://phabricator.services.mozilla.com/D134589
b0abf3cd1bcb2380964159a904f3bbfdb334b4ac: Bug 1747299 - [UniqueBuffer] Only free if non-null. r=gfx-reviewers,sotaro
Kelsey Gilbert <jgilbert@mozilla.com> - Sat, 25 Dec 2021 00:31:48 +0000 - rev 677415
Push 2757 by ffxbld-merge at Mon, 31 Jan 2022 17:15:09 +0000
Bug 1747299 - [UniqueBuffer] Only free if non-null. r=gfx-reviewers,sotaro This was actually showing up in profiles when we were unconditionally calling free(nullptr) rather than branching. Differential Revision: https://phabricator.services.mozilla.com/D134537
bb0a2ae7c99684152f29b22ba1aa31b3ae1beb5e: Bug 1746135 - Fix a crash on (some) tier2 Android. r=gfx-reviewers,sotaro
Kelsey Gilbert <jgilbert@mozilla.com> - Thu, 16 Dec 2021 08:01:42 +0000 - rev 676341
Push 2757 by ffxbld-merge at Mon, 31 Jan 2022 17:15:09 +0000
Bug 1746135 - Fix a crash on (some) tier2 Android. r=gfx-reviewers,sotaro Differential Revision: https://phabricator.services.mozilla.com/D133972
a87211c8eedde447aec9e270172948f51b8b510e: Bug 1745976 - Try enabling reuse-decoder-device on Nightly. r=sotaro
Jeff Muizelaar <jmuizelaar@mozilla.com> - Wed, 15 Dec 2021 01:49:11 +0000 - rev 676146
Push 2757 by ffxbld-merge at Mon, 31 Jan 2022 17:15:09 +0000
Bug 1745976 - Try enabling reuse-decoder-device on Nightly. r=sotaro Previously we saw a bunch of nvidia driver crashes (bug 1313883) when doing this, but doing so will let us avoid a copy of the texture data so it's worth investigating further. Differential Revision: https://phabricator.services.mozilla.com/D133755
db7955ab0f0dea616c70b167611baae1b251a614: Bug 1744225 - Correct early beta variable name guarding preference in StaticPrefs.yaml r=sotaro
Narcis Beleuzu <nbeleuzu@mozilla.com> - Tue, 07 Dec 2021 03:33:29 +0000 - rev 675255
Push 2757 by ffxbld-merge at Mon, 31 Jan 2022 17:15:09 +0000
Bug 1744225 - Correct early beta variable name guarding preference in StaticPrefs.yaml r=sotaro Differential Revision: https://phabricator.services.mozilla.com/D132775
177b9b34f45ea1ec013a4c7577cdc76481f1e4aa: Bug 1744225 - Correct early beta variable name guarding preference in StaticPrefs.yaml r=sotaro, a=dsmith
Narcis Beleuzu <nbeleuzu@mozilla.com> - Tue, 07 Dec 2021 03:33:29 +0000 - rev 674888
Push 2724 by ffxbld-merge at Mon, 03 Jan 2022 22:10:59 +0000
Bug 1744225 - Correct early beta variable name guarding preference in StaticPrefs.yaml r=sotaro, a=dsmith Differential Revision: https://phabricator.services.mozilla.com/D132775
73dd7c0c9c113117d7aa55c086cbdda479c25ef0: Bug 1743577 [Linux] Support color ranges by VA-API, r=sotaro,jgilbert
stransky <stransky@redhat.com> - Thu, 02 Dec 2021 09:32:45 +0000 - rev 674682
Push 2724 by ffxbld-merge at Mon, 03 Jan 2022 22:10:59 +0000
Bug 1743577 [Linux] Support color ranges by VA-API, r=sotaro,jgilbert Get frame color range from ffmpeg by av_frame_get_color_range() (we do the same for non VA-API path), store to DMABufSurface and propagate to rendering thread. Differential Revision: https://phabricator.services.mozilla.com/D132469
89a712ca53421bf177089d6053c5130c496132a5: Bug 1742006 - Remove two unused nsRect union methods. r=gfx-reviewers,sotaro
Ting-Yu Lin <tlin@mozilla.com> - Mon, 22 Nov 2021 03:26:18 +0000 - rev 673533
Push 2724 by ffxbld-merge at Mon, 03 Jan 2022 22:10:59 +0000
Bug 1742006 - Remove two unused nsRect union methods. r=gfx-reviewers,sotaro nsRect's Union ond UnionEdges are already saturating operations, so we don't need these two methods. Differential Revision: https://phabricator.services.mozilla.com/D131567
9b6abfc76fd59d88ae961a77bb4f6692948bd0c3: Bug 1742010 - File descriptor leak when serializing into SurfaceDescriptorAndroidHardwareBuffer. r=sotaro,gfx-reviewers
Andrew Osmond <aosmond@mozilla.com> - Fri, 19 Nov 2021 02:07:53 +0000 - rev 673400
Push 2724 by ffxbld-merge at Mon, 03 Jan 2022 22:10:59 +0000
Bug 1742010 - File descriptor leak when serializing into SurfaceDescriptorAndroidHardwareBuffer. r=sotaro,gfx-reviewers We accidently duplicate the file descriptor when serializing because we hit a constructor for ipc::FileDescriptor which duplicates the handle instead of just taking it. This means we are supposed to close it explicitly but we've already forgotten about it. We should just do a move instead to avoid this. Differential Revision: https://phabricator.services.mozilla.com/D131569
b193f2e7a6a5d1f042c957ea4acd5c89bf210512: Bug 1740165 properly serialize mUseWebGPU r=sotaro
Dzmitry Malyshau <kvark@fastmail.com> - Thu, 18 Nov 2021 17:13:10 +0000 - rev 673361
Push 2724 by ffxbld-merge at Mon, 03 Jan 2022 22:10:59 +0000
Bug 1740165 properly serialize mUseWebGPU r=sotaro Differential Revision: https://phabricator.services.mozilla.com/D131448
1e37fc4a7f53910c62b18bf24ec69fea6d954ac5: Bug 1736266 - Remove unused DidCompositeObserver. r=sotaro
Jeff Muizelaar <jmuizelaar@mozilla.com> - Tue, 19 Oct 2021 00:55:30 +0000 - rev 669801
Push 2706 by ffxbld-merge at Mon, 29 Nov 2021 10:48:10 +0000
Bug 1736266 - Remove unused DidCompositeObserver. r=sotaro This was added in bug 1320864 and looks like it was used for plugins. Differential Revision: https://phabricator.services.mozilla.com/D128735
5a3793dc1a2aa43a0b368ef012e30299b4625eff: Bug 1735261 - Remove unused LayersHelpers. r=gfx-reviewers,sotaro
Jeff Muizelaar <jmuizelaar@mozilla.com> - Tue, 12 Oct 2021 13:59:44 +0000 - rev 669046
Push 2706 by ffxbld-merge at Mon, 29 Nov 2021 10:48:10 +0000
Bug 1735261 - Remove unused LayersHelpers. r=gfx-reviewers,sotaro Differential Revision: https://phabricator.services.mozilla.com/D128154
939865fe1522f8ac8af85b0dc3504f7cf0302a6e: Bug 1735260 - Remove unused PAINT_BUILD_LAYERS_TIME metric. r=gfx-reviewers,sotaro
Jeff Muizelaar <jmuizelaar@mozilla.com> - Tue, 12 Oct 2021 13:59:01 +0000 - rev 669045
Push 2706 by ffxbld-merge at Mon, 29 Nov 2021 10:48:10 +0000
Bug 1735260 - Remove unused PAINT_BUILD_LAYERS_TIME metric. r=gfx-reviewers,sotaro Differential Revision: https://phabricator.services.mozilla.com/D128153
9fcf1f9ef0e71a241b50df4f158fa4936da30a8b: Bug 1734368 [Wayland] Use async FlushRendering on Wayland, r=sotaro
stransky <stransky@redhat.com> - Sat, 09 Oct 2021 15:26:49 +0000 - rev 668808
Push 2706 by ffxbld-merge at Mon, 29 Nov 2021 10:48:10 +0000
Bug 1734368 [Wayland] Use async FlushRendering on Wayland, r=sotaro Synced FlushRendering() causes deadlock on Wayland. Main thread is blocked at MessageChannel::WaitForSyncNotify() and it's not processing events from system. Rendering thread is blocked at RendererOGL::UpdateAndRender() / eglQuerySurface(). Mesa is waiting for free back buffer at get_back_bo(), it's spinning wl_display_roundtrip_queue() and waiting for free buffer but it doesn't get one as main loop is blocked. Differential Revision: https://phabricator.services.mozilla.com/D127878
4ad22daf744b49726e02bcf489591fd8edb96a25: Bug 1718414 - Stop canvas from initializing D3D in locked-down content process when GPU process fails r=sotaro,bobowen
Chris Martin <cmartin@mozilla.com> - Wed, 29 Sep 2021 15:00:19 +0000 - rev 666911
Push 2678 by ffxbld-merge at Mon, 25 Oct 2021 16:40:31 +0000
Bug 1718414 - Stop canvas from initializing D3D in locked-down content process when GPU process fails r=sotaro,bobowen Before Win32k Lockdown, Canvas would ensure that it would get the fastest possible implementation by initializing devices in content process before allocating persistent buffers for its backing. However, with Win32k Lockdown it's no longer possible, as initializing Direct3D and Direct2D make Win32k calls that crash the locked-down content process. This issue is generally solved by Remote Canvas; however, Remote Canvas is disabled if the GPU process is disabled. If that happens, the current behavior is to attempt to initialize hardware acceleration again, causing a crash when Win32k Lockdown is in effect. This patch changes the behavior so that the devices will not initialize if they are in a locked-down content process, even if Remote Canvas is disabled. The effect is that Canvas will fall back to using Skia for everything. Differential Revision: https://phabricator.services.mozilla.com/D126761
f57cc8ebb29eed45c5092e54b93377c24ff76edc: Bug 1730701 - Read the blob tile size pref when starting up. r=gfx-reviewers,sotaro
Nicolas Silva <nsilva@mozilla.com> - Fri, 17 Sep 2021 12:33:02 +0000 - rev 665531
Push 2678 by ffxbld-merge at Mon, 25 Oct 2021 16:40:31 +0000
Bug 1730701 - Read the blob tile size pref when starting up. r=gfx-reviewers,sotaro Without this change it is only applied when the pref change on the existing windows (new windows get a default value). Differential Revision: https://phabricator.services.mozilla.com/D125547
3ad99165adbd8f98b8921a9f5e6f80627028ffd4: Bug 1723315 - Ensure there's no pending paint requests before taking a snapshot. r=sotaro
Hiroyuki Ikezoe <hikezoe.birchill@mozilla.com> - Thu, 26 Aug 2021 05:24:29 +0000 - rev 663013
Push 2668 by ffxbld-merge at Mon, 27 Sep 2021 21:09:23 +0000
Bug 1723315 - Ensure there's no pending paint requests before taking a snapshot. r=sotaro There's no handy way to use functions in paint_listener.js inside extension's popup document's context, if paint_listener.js gets loaded with a script tag inside the document, it doesn't allow us using nsIDOMWindowUtils since it is in extension's privilege. Running a similar chunk of the function code in SpecialPowers.spawn is the simplest way to use the function. Differential Revision: https://phabricator.services.mozilla.com/D123588
d4a6fa9f6a20432c5a16d9b146ffbcbb61d164d4: Bug 1722450 [Wayland] Pause compositor when screen scale changes and content is not updated yet, r=sotaro
stransky <stransky@redhat.com> - Wed, 11 Aug 2021 07:48:53 +0000 - rev 661576
Push 2668 by ffxbld-merge at Mon, 27 Sep 2021 21:09:23 +0000
Bug 1722450 [Wayland] Pause compositor when screen scale changes and content is not updated yet, r=sotaro We need to track window compositor state in various cases, when compositor is paused after window creation, when compositor is paused for hidden window (EGLSurface is missing) and paused compositor when layout is not updated yet and drawing will lead to incorrect / obsoleted window content. In this patch we track compositor state by WindowCompositorState atomic enum (because it can be accessed from Compositor thread) and two private methods (PauseCompositorHiddenWindow and ResumeCompositorHiddenWindow) and two public ones (PauseCompositor() and ResumeCompositor). Private interface is used by nsWindow when EGLSurface is missing so we can't render to window - it's initial compositor pause and pause when window is hidden. Public interface is used by nsWindow and WebRender compositor to disable/enable rendering when window content is updated. When compositor is disabled by public interface it will be enabled automatically after a timeout (1s) or when content layout is updated. Changes in the patch: - Implement GtkCompositorWidget::RemoteLayoutSizeUpdated() to notify GtkCompositorWidget widget about layout size update in content process. - Track nsWindow compositor state by WindowCompositorState - Implement nsWindow::PauseCompositorHiddenWindow() and ResumeCompositorHiddenWindow() to handle internal nsWindow states. - Implement nsWindow::PauseCompositor() and nsWindow::ResumeCompositor() to allow compositor pause/resume during content layout updates. - Use timeout to resume compositor paused by public interface as a fallback when content is not updated or it takes too long. Differential Revision: https://phabricator.services.mozilla.com/D121650
5ce67b8f87a674a5594084a1756ae6102bcff021: Bug 1717451 [Wayland] Pause compositor only on accelerated backends, r=sotaro
stransky <stransky@redhat.com> - Mon, 19 Jul 2021 07:14:17 +0000 - rev 658672
Push 2645 by ffxbld-merge at Mon, 30 Aug 2021 17:46:27 +0000
Bug 1717451 [Wayland] Pause compositor only on accelerated backends, r=sotaro Differential Revision: https://phabricator.services.mozilla.com/D119963
c75f4ae449378437bbd05fd00bfdbe1bf5e125de: Bug 1717451 [Wayland] Disable remote rendering to closed popups, r=sotaro
stransky <stransky@redhat.com> - Mon, 19 Jul 2021 07:14:02 +0000 - rev 658671
Push 2645 by ffxbld-merge at Mon, 30 Aug 2021 17:46:27 +0000
Bug 1717451 [Wayland] Disable remote rendering to closed popups, r=sotaro When we close popup window we also pause compositor as EGL surface is deleted and we can't paint into it. Paused compositor leads to pending WebRender transactions at nsRefreshDriver which has a bit though limit here and when we hit it nsRefreshDriver stops to issue rendering event for all windows. To avoid that when a window is hidden and compositor paused also clear pending WebRender transactions. Differential Revision: https://phabricator.services.mozilla.com/D119962
001fa442c03ede5fe24ea4c4036056e16be69d0f: Bug 1712588 Implement DMABufSurface::GetAsSourceSurface. r=sotaro,jgilbert
Emilio Cobos Álvarez <emilio@crisal.io> - Thu, 15 Jul 2021 16:19:51 +0000 - rev 658360
Push 2645 by ffxbld-merge at Mon, 30 Aug 2021 17:46:27 +0000
Bug 1712588 Implement DMABufSurface::GetAsSourceSurface. r=sotaro,jgilbert Differential Revision: https://phabricator.services.mozilla.com/D116411
4054c870a437f15f34c7c0ad70b054adb2bb3b52: Bug 1719367 - Hook up default clear color to RenderCompositorLayersSWGL. r=sotaro
Jamie Nicol <jnicol@mozilla.com> - Thu, 08 Jul 2021 11:46:37 +0000 - rev 657566
Push 2623 by ffxbld-merge at Mon, 02 Aug 2021 14:47:51 +0000
Bug 1719367 - Hook up default clear color to RenderCompositorLayersSWGL. r=sotaro Fenix makes use of the default clear color by setting it to a dark color when the dark theme is enabled to avoid white flashes while pages are loading. In bug 1663732 we hooked this functionality up to webrender, however, it was only used by the draw compositor. Now with software webrender on Android, we sometimes use RenderCompositorLayersSWGL rather than the draw compositor, and users are therefore experiencing white flashes during page loads. This adds a clear_color argument to StartCompositing(), which RenderCompositorLayersSWGL uses to set the CompositorOGL's clear color. This patch also makes Renderer::clear_color not an Option type, as we only ever used it in Some form, and that simplifies the FFI. Differential Revision: https://phabricator.services.mozilla.com/D119272
b5ad7d43bc540fa62fcb4969c053af70cf7292d9: Bug 1719367 - Hook up default clear color to RenderCompositorLayersSWGL. r=sotaro
Jamie Nicol <jnicol@mozilla.com> - Thu, 08 Jul 2021 09:01:28 +0000 - rev 657553
Push 2623 by ffxbld-merge at Mon, 02 Aug 2021 14:47:51 +0000
Bug 1719367 - Hook up default clear color to RenderCompositorLayersSWGL. r=sotaro Fenix makes use of the default clear color by setting it to a dark color when the dark theme is enabled to avoid white flashes while pages are loading. In bug 1663732 we hooked this functionality up to webrender, however, it was only used by the draw compositor. Now with software webrender on Android, we sometimes use RenderCompositorLayersSWGL rather than the draw compositor, and users are therefore experiencing white flashes during page loads. This adds a clear_color argument to StartCompositing(), which RenderCompositorLayersSWGL uses to set the CompositorOGL's clear color. This patch also makes Renderer::clear_color not an Option type, as we only ever used it in Some form, and that simplifies the FFI. Differential Revision: https://phabricator.services.mozilla.com/D119272
4521e7060665c63ba37bbf91541b5ea24cd66ad0: Bug 1712367. Avoid TexSubImage ES slow path. r=jgilbert,sotaro
Jeff Muizelaar <jmuizelaar@mozilla.com> - Thu, 17 Jun 2021 13:24:05 +0000 - rev 656171
Push 2623 by ffxbld-merge at Mon, 02 Aug 2021 14:47:51 +0000
Bug 1712367. Avoid TexSubImage ES slow path. r=jgilbert,sotaro Instead of drawing updates into the correct spot in the destination DataSourceSurface we just use it as scratch space and always draw in the top-left with stride = bpp*width. We add a dstOffset to the upload functions to support using a subsurface. Differential Revision: https://phabricator.services.mozilla.com/D116501
c77fc5fac5aeaf3d1b496edd14efc4e09dcc8230: Bug 1714511 - use vqmovun_s16 for packing pixels. r=sotaro
Lee Salzman <lsalzman@mozilla.com> - Tue, 15 Jun 2021 01:32:36 +0000 - rev 655579
Push 2623 by ffxbld-merge at Mon, 02 Aug 2021 14:47:51 +0000
Bug 1714511 - use vqmovun_s16 for packing pixels. r=sotaro vqmovn_u16 is very different semantically then _mm_packus_epi16. _mm_packus_epi16 treats the input as signed 16-bit integers and narrows to unsigned 8-bit. vqmovn_u16, however, is an unsigned to unsigned narrow. vqmovun_s16 does what we actually need here, which is to treated the input as signed 16-bit and narrow to unsigned 8-bit. Differential Revision: https://phabricator.services.mozilla.com/D117705
61c572d87d1656208556cc01220644e386529146: Bug 1708446 - Add a browser mochitest to make sure the jank notification works properly for popup windows in the browser process. r=boris,botond,sotaro
Hiroyuki Ikezoe <hikezoe.birchill@mozilla.com> - Tue, 01 Jun 2021 00:32:27 +0000 - rev 654024
Push 2623 by ffxbld-merge at Mon, 02 Aug 2021 14:47:51 +0000
Bug 1708446 - Add a browser mochitest to make sure the jank notification works properly for popup windows in the browser process. r=boris,botond,sotaro Differential Revision: https://phabricator.services.mozilla.com/D116186
b50708896f2d7e754c75b8da2f1e977f9e28afc6: Bug 1714511 - use vqmovun_s16 for packing pixels. r=sotaro, a=jcristau
Lee Salzman <lsalzman@mozilla.com> - Tue, 15 Jun 2021 01:32:36 +0000 - rev 653815
Push 2604 by ffxbld-merge at Mon, 05 Jul 2021 16:09:16 +0000
Bug 1714511 - use vqmovun_s16 for packing pixels. r=sotaro, a=jcristau vqmovn_u16 is very different semantically then _mm_packus_epi16. _mm_packus_epi16 treats the input as signed 16-bit integers and narrows to unsigned 8-bit. vqmovn_u16, however, is an unsigned to unsigned narrow. vqmovun_s16 does what we actually need here, which is to treated the input as signed 16-bit and narrow to unsigned 8-bit. Differential Revision: https://phabricator.services.mozilla.com/D117705
fde6c0289b49ce0ee70556ae33ca59dac5d56afd: Bug 1712492 [Wayland] Always clear widget background when use GPU process, r=sotaro
stransky <stransky@redhat.com> - Thu, 27 May 2021 06:19:10 +0000 - rev 653135
Push 2604 by ffxbld-merge at Mon, 05 Jul 2021 16:09:16 +0000
Bug 1712492 [Wayland] Always clear widget background when use GPU process, r=sotaro Differential Revision: https://phabricator.services.mozilla.com/D115981
4a58aec917b0e6960a0c81660a3942d33f455482: Bug 1629381 - CanvasRenderingContext2D.drawImage shouldn't throw for e.g <video> if there's no valid surface to draw. r=sotaro
Emilio Cobos Álvarez <emilio@crisal.io> - Tue, 25 May 2021 10:39:51 +0000 - rev 652810
Push 2604 by ffxbld-merge at Mon, 05 Jul 2021 16:09:16 +0000
Bug 1629381 - CanvasRenderingContext2D.drawImage shouldn't throw for e.g <video> if there's no valid surface to draw. r=sotaro As per spec see comment. Differential Revision: https://phabricator.services.mozilla.com/D103157
1273a2970c98aac86e07707ca487c13fda6545bf: Bug 1711211 - Ensure RenderCompositorOGLSWGL does a full render after EGL surface creation. r=sotaro
Jamie Nicol <jnicol@mozilla.com> - Wed, 19 May 2021 06:41:20 +0000 - rev 652215
Push 2604 by ffxbld-merge at Mon, 05 Jul 2021 16:09:16 +0000
Bug 1711211 - Ensure RenderCompositorOGLSWGL does a full render after EGL surface creation. r=sotaro RenderCompositorOGLSWGL will currently skip compositing if webrender decides that the dirty rect for a frame is empty. However, in cases where the EGL surface has been recreated we must perform a full composite, as the previous contents of the framebuffer has been lost. Not doing so is resulting in black screens being shown after restoring the app on android, or the contents of the previous tab being shown after switching to a new tab. In the future we will add proper partial rendering support by tracking buffer age and damage regions, and webrender will be able to force a full render when the buffer age is zero. Until that time, we can fix this bug by making RenderCompositorOGLSWGL::RequestFullRender() return true for the subsequent frame after the surface has been recreated. Differential Revision: https://phabricator.services.mozilla.com/D115342
ec86658fae7ff91d35d4f36d6c120d9e5f444093: Bug 1709493 - Don't call compositor begin_frame/end_frame unless actually rendering. r=sotaro,gfx-reviewers,gw
Lee Salzman <lsalzman@mozilla.com> - Thu, 06 May 2021 08:43:25 +0000 - rev 650911
Push 2604 by ffxbld-merge at Mon, 05 Jul 2021 16:09:16 +0000
Bug 1709493 - Don't call compositor begin_frame/end_frame unless actually rendering. r=sotaro,gfx-reviewers,gw If we're not actually rendering a frame, calling begin_frame/end_frame on the compositor without adding surfaces can cause us to render a blank frame. Avoid calling begin_frame/end_frame as well in this situation so that we don't accidentally do this. Differential Revision: https://phabricator.services.mozilla.com/D114316
365bfc91ddd5d9be1a5d5bee72377c025b099321: Bug 1708590 - Don't call add_surface or start_compositing unless actually rendering. r=sotaro
Lee Salzman <lsalzman@mozilla.com> - Fri, 30 Apr 2021 12:26:53 +0000 - rev 650383
Push 2604 by ffxbld-merge at Mon, 05 Jul 2021 16:09:16 +0000
Bug 1708590 - Don't call add_surface or start_compositing unless actually rendering. r=sotaro Rather than have SwCompositor or the individual RenderCompositors track this, it seems easier to just have WR itself avoid calling add_surface or start_compositing if we're inside an update. Differential Revision: https://phabricator.services.mozilla.com/D113953