mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Merge mozilla-central to fx-team
This commit is contained in:
commit
ecb8e9ce4d
7
b2g/chrome/content/blank.css
Normal file
7
b2g/chrome/content/blank.css
Normal file
@ -0,0 +1,7 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
body {
|
||||
background: black;
|
||||
}
|
10
b2g/chrome/content/blank.html
Normal file
10
b2g/chrome/content/blank.html
Normal file
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
- You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" href="blank.css" type="text/css" media="all" />
|
||||
</head>
|
||||
</html>
|
@ -9,10 +9,20 @@ html {
|
||||
height: 100%;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
iframe {
|
||||
overflow: hidden;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
border: none;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
@ -311,8 +311,7 @@ var shell = {
|
||||
systemAppFrame.setAttribute('mozbrowser', 'true');
|
||||
systemAppFrame.setAttribute('mozapp', manifestURL);
|
||||
systemAppFrame.setAttribute('allowfullscreen', 'true');
|
||||
systemAppFrame.setAttribute('style', "overflow: hidden; height: 100%; width: 100%; border: none; position: absolute; left: 0; top: 0; right: 0; bottom: 0;");
|
||||
systemAppFrame.setAttribute('src', "data:text/html;charset=utf-8,%3C!DOCTYPE html>%3Cbody style='background:black;");
|
||||
systemAppFrame.setAttribute('src', 'blank.html');
|
||||
let container = document.getElementById('container');
|
||||
#ifdef MOZ_WIDGET_COCOA
|
||||
// See shell.html
|
||||
|
@ -13,6 +13,8 @@ chrome.jar:
|
||||
* content/shell.html (content/shell.html)
|
||||
* content/shell.js (content/shell.js)
|
||||
content/shell.css (content/shell.css)
|
||||
content/blank.html (content/blank.html)
|
||||
content/blank.css (content/blank.css)
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
content/devtools/adb.js (content/devtools/adb.js)
|
||||
#endif
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="ef937d1aca7c4cf89ecb5cc43ae8c21c2000a9db">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a6881205deae450757a8d1e1ed65e5e5be0ec633"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="288bf1c58ef9ccecd68508978a0141ee71974681"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3905180d9e2dbe03d7ce3b3a6debe4d4adc938d1"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
|
@ -19,7 +19,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="a6881205deae450757a8d1e1ed65e5e5be0ec633"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="288bf1c58ef9ccecd68508978a0141ee71974681"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3905180d9e2dbe03d7ce3b3a6debe4d4adc938d1"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="93f9ba577f68d772093987c2f1c0a4ae293e1802"/>
|
||||
|
@ -17,7 +17,7 @@
|
||||
</project>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a6881205deae450757a8d1e1ed65e5e5be0ec633"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="288bf1c58ef9ccecd68508978a0141ee71974681"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3905180d9e2dbe03d7ce3b3a6debe4d4adc938d1"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="c42985975f2bbc42859b9136ed348186d989b93d"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="a1ddea3133e0807350326cee5dcf0d06fad00c08"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="ef937d1aca7c4cf89ecb5cc43ae8c21c2000a9db">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a6881205deae450757a8d1e1ed65e5e5be0ec633"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="288bf1c58ef9ccecd68508978a0141ee71974681"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3905180d9e2dbe03d7ce3b3a6debe4d4adc938d1"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
|
@ -19,7 +19,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="a6881205deae450757a8d1e1ed65e5e5be0ec633"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="288bf1c58ef9ccecd68508978a0141ee71974681"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3905180d9e2dbe03d7ce3b3a6debe4d4adc938d1"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="93f9ba577f68d772093987c2f1c0a4ae293e1802"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="ef937d1aca7c4cf89ecb5cc43ae8c21c2000a9db">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a6881205deae450757a8d1e1ed65e5e5be0ec633"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="288bf1c58ef9ccecd68508978a0141ee71974681"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3905180d9e2dbe03d7ce3b3a6debe4d4adc938d1"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
|
@ -17,7 +17,7 @@
|
||||
</project>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a6881205deae450757a8d1e1ed65e5e5be0ec633"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="288bf1c58ef9ccecd68508978a0141ee71974681"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3905180d9e2dbe03d7ce3b3a6debe4d4adc938d1"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="c42985975f2bbc42859b9136ed348186d989b93d"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="a1ddea3133e0807350326cee5dcf0d06fad00c08"/>
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"git": {
|
||||
"git_revision": "a6881205deae450757a8d1e1ed65e5e5be0ec633",
|
||||
"git_revision": "288bf1c58ef9ccecd68508978a0141ee71974681",
|
||||
"remote": "https://git.mozilla.org/releases/gaia.git",
|
||||
"branch": ""
|
||||
},
|
||||
"revision": "1438a6024d8aeb50a5a93a3844127908dc94acef",
|
||||
"revision": "8f31030bb6d1ccddf2fd1d757ffa9e1e47aab4ed",
|
||||
"repo_path": "integration/gaia-central"
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
</project>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a6881205deae450757a8d1e1ed65e5e5be0ec633"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="288bf1c58ef9ccecd68508978a0141ee71974681"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3905180d9e2dbe03d7ce3b3a6debe4d4adc938d1"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="c42985975f2bbc42859b9136ed348186d989b93d"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="a1ddea3133e0807350326cee5dcf0d06fad00c08"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="52775e03a2d8532429dff579cb2cd56718e488c3">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a6881205deae450757a8d1e1ed65e5e5be0ec633"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="288bf1c58ef9ccecd68508978a0141ee71974681"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3905180d9e2dbe03d7ce3b3a6debe4d4adc938d1"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
|
@ -838,12 +838,23 @@ just addresses the organization to follow, e.g. "This site is run by " -->
|
||||
<!ENTITY processHang.terminateProcess.label "Kill Web Process">
|
||||
<!ENTITY processHang.terminateProcess.accessKey "K">
|
||||
|
||||
<!ENTITY readingList.label "Reading List">
|
||||
<!ENTITY readingList.sidebar.commandKey "R">
|
||||
<!ENTITY emeLearnMoreContextMenu.label "Learn more about DRM…">
|
||||
<!ENTITY emeLearnMoreContextMenu.accesskey "D">
|
||||
|
||||
<!ENTITY emeNotificationsNotNow.label "Not now">
|
||||
<!ENTITY emeNotificationsNotNow.accesskey "N">
|
||||
<!ENTITY emeNotificationsDontAskAgain.label "Don't ask me again">
|
||||
<!ENTITY emeNotificationsDontAskAgain.accesskey "D">
|
||||
|
||||
<!ENTITY readingList.label "Reading List">
|
||||
<!ENTITY readingList.sidebar.commandKey "R">
|
||||
<!-- Pre-landed string for bug 1124400 -->
|
||||
<!ENTITY readingList.showSidebar.label "Show Reading List Sidebar">
|
||||
<!-- Pre-landed string for bug 1124153 -->
|
||||
<!ENTITY readingList.sidebar.showMore.label "Show more…">
|
||||
<!-- Pre-landed string for bug 1133662 -->
|
||||
<!ENTITY readingList.sidebar.emptyText "Add articles to your Reading List to save them for later and find them easily when you need them.">
|
||||
<!-- Pre-landed string for bug 1123525 -->
|
||||
<!ENTITY readingList.sidebar.delete.tooltip "Remove this from your Reading List">
|
||||
<!-- Pre-landed strings for bug 1123519 -->
|
||||
<!ENTITY readingList.sidebar.add.label "Add to Reading List">
|
||||
<!ENTITY readingList.sidebar.add.tooltip "Add this page to your Reading List">
|
||||
|
@ -651,3 +651,19 @@ appmenu.restartNeeded.description = Restart %S to apply updates
|
||||
appmenu.updateFailed.description = Background update failed, please download update
|
||||
appmenu.restartBrowserButton.label = Restart %S
|
||||
appmenu.downloadUpdateButton.label = Download Update
|
||||
|
||||
# Pre-landed string for bug 1124153
|
||||
# LOCALIZATION NOTE(readingList.sidebar.showMore.tooltip): %S is the number of items that will be added by clicking this button
|
||||
# Semicolon-separated list of plural forms. See:
|
||||
# http://developer.mozilla.org/en/docs/Localization_and_Plurals
|
||||
readingList.sidebar.showMore.tooltip = Show %S more item;Show %S more items
|
||||
# Pre-landed strings for bug 1131457 / bug 1131461
|
||||
readingList.urlbar.add = Add page to Reading List
|
||||
readingList.urlbar.addDone = Page added to Reading List
|
||||
readingList.urlbar.remove = Remove page from Reading List
|
||||
readingList.urlbar.removeDone = Page removed from Reading List
|
||||
# Pre-landed strings for bug 1133610 & bug 1133611
|
||||
# LOCALIZATION NOTE(readingList.promo.noSync.label): %S a link, using the text from readingList.promo.noSync.link
|
||||
readingList.promo.noSync.label = Access your Reading List on all your devices. %S
|
||||
readingList.promo.noSync.link = Get started with Sync.
|
||||
readingList.promo.hasSync.label = You can now access your Reading List on all your devices connected by Sync.
|
||||
|
@ -26,6 +26,8 @@
|
||||
<!ENTITY syncMy.label "Sync My">
|
||||
<!ENTITY engine.bookmarks.label "Bookmarks">
|
||||
<!ENTITY engine.bookmarks.accesskey "m">
|
||||
<!ENTITY engine.readinglist.label "Reading List">
|
||||
<!ENTITY engine.readinglist.accesskey "L">
|
||||
<!ENTITY engine.tabs.label "Tabs">
|
||||
<!ENTITY engine.tabs.accesskey "T">
|
||||
<!ENTITY engine.history.label "History">
|
||||
|
@ -15,6 +15,8 @@
|
||||
-->
|
||||
<!ENTITY engine.bookmarks.label "Bookmarks">
|
||||
<!ENTITY engine.bookmarks.accesskey "m">
|
||||
<!ENTITY engine.readinglist.label "Reading List">
|
||||
<!ENTITY engine.readinglist.accesskey "L">
|
||||
<!ENTITY engine.history.label "History">
|
||||
<!ENTITY engine.history.accesskey "r">
|
||||
<!ENTITY engine.tabs.label "Tabs">
|
||||
|
@ -825,7 +825,7 @@ SyncObjectD3D11::FinalizeFrame()
|
||||
if (mD3D10SyncedTextures.size()) {
|
||||
RefPtr<IDXGIKeyedMutex> mutex;
|
||||
hr = mD3D10Texture->QueryInterface((IDXGIKeyedMutex**)byRef(mutex));
|
||||
hr = mutex->AcquireSync(0, 10000);
|
||||
hr = mutex->AcquireSync(0, 20000);
|
||||
|
||||
if (hr == WAIT_TIMEOUT) {
|
||||
MOZ_CRASH();
|
||||
|
@ -159,6 +159,16 @@ GetBackendName(mozilla::gfx::BackendType aBackend)
|
||||
MOZ_CRASH("Incomplete switch");
|
||||
}
|
||||
|
||||
enum class DeviceResetReason
|
||||
{
|
||||
OK = 0,
|
||||
HUNG,
|
||||
REMOVED,
|
||||
RESET,
|
||||
DRIVER_ERROR,
|
||||
INVALID_CALL
|
||||
};
|
||||
|
||||
class gfxPlatform {
|
||||
friend class SRGBOverrideObserver;
|
||||
|
||||
@ -435,7 +445,7 @@ public:
|
||||
// check whether format is supported on a platform or not (if unclear, returns true)
|
||||
virtual bool IsFontFormatSupported(nsIURI *aFontURI, uint32_t aFormatFlags) { return false; }
|
||||
|
||||
virtual bool DidRenderingDeviceReset() { return false; }
|
||||
virtual bool DidRenderingDeviceReset(DeviceResetReason* aResetReason = nullptr) { return false; }
|
||||
|
||||
void GetPrefFonts(nsIAtom *aLanguage, nsString& array, bool aAppendUnicode = true);
|
||||
|
||||
|
@ -103,38 +103,41 @@ public:
|
||||
|
||||
// Public textrun API for general use
|
||||
|
||||
bool IsClusterStart(uint32_t aPos) {
|
||||
bool IsClusterStart(uint32_t aPos) const {
|
||||
NS_ASSERTION(aPos < GetLength(), "aPos out of range");
|
||||
return mCharacterGlyphs[aPos].IsClusterStart();
|
||||
}
|
||||
bool IsLigatureGroupStart(uint32_t aPos) {
|
||||
bool IsLigatureGroupStart(uint32_t aPos) const {
|
||||
NS_ASSERTION(aPos < GetLength(), "aPos out of range");
|
||||
return mCharacterGlyphs[aPos].IsLigatureGroupStart();
|
||||
}
|
||||
bool CanBreakLineBefore(uint32_t aPos) {
|
||||
NS_ASSERTION(aPos < GetLength(), "aPos out of range");
|
||||
return mCharacterGlyphs[aPos].CanBreakBefore() ==
|
||||
CompressedGlyph::FLAG_BREAK_TYPE_NORMAL;
|
||||
bool CanBreakLineBefore(uint32_t aPos) const {
|
||||
return CanBreakBefore(aPos) == CompressedGlyph::FLAG_BREAK_TYPE_NORMAL;
|
||||
}
|
||||
bool CanHyphenateBefore(uint32_t aPos) {
|
||||
NS_ASSERTION(aPos < GetLength(), "aPos out of range");
|
||||
return mCharacterGlyphs[aPos].CanBreakBefore() ==
|
||||
CompressedGlyph::FLAG_BREAK_TYPE_HYPHEN;
|
||||
bool CanHyphenateBefore(uint32_t aPos) const {
|
||||
return CanBreakBefore(aPos) == CompressedGlyph::FLAG_BREAK_TYPE_HYPHEN;
|
||||
}
|
||||
|
||||
bool CharIsSpace(uint32_t aPos) {
|
||||
// Returns a gfxShapedText::CompressedGlyph::FLAG_BREAK_TYPE_* value
|
||||
// as defined in gfxFont.h (may be NONE, NORMAL or HYPHEN).
|
||||
uint8_t CanBreakBefore(uint32_t aPos) const {
|
||||
NS_ASSERTION(aPos < GetLength(), "aPos out of range");
|
||||
return mCharacterGlyphs[aPos].CanBreakBefore();
|
||||
}
|
||||
|
||||
bool CharIsSpace(uint32_t aPos) const {
|
||||
NS_ASSERTION(aPos < GetLength(), "aPos out of range");
|
||||
return mCharacterGlyphs[aPos].CharIsSpace();
|
||||
}
|
||||
bool CharIsTab(uint32_t aPos) {
|
||||
bool CharIsTab(uint32_t aPos) const {
|
||||
NS_ASSERTION(aPos < GetLength(), "aPos out of range");
|
||||
return mCharacterGlyphs[aPos].CharIsTab();
|
||||
}
|
||||
bool CharIsNewline(uint32_t aPos) {
|
||||
bool CharIsNewline(uint32_t aPos) const {
|
||||
NS_ASSERTION(aPos < GetLength(), "aPos out of range");
|
||||
return mCharacterGlyphs[aPos].CharIsNewline();
|
||||
}
|
||||
bool CharIsLowSurrogate(uint32_t aPos) {
|
||||
bool CharIsLowSurrogate(uint32_t aPos) const {
|
||||
NS_ASSERTION(aPos < GetLength(), "aPos out of range");
|
||||
return mCharacterGlyphs[aPos].CharIsLowSurrogate();
|
||||
}
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include "mozilla/WindowsVersion.h"
|
||||
#include "nsServiceManagerUtils.h"
|
||||
#include "nsTArray.h"
|
||||
#include "mozilla/Telemetry.h"
|
||||
|
||||
#include "nsIWindowsRegKey.h"
|
||||
#include "nsIFile.h"
|
||||
@ -474,7 +475,9 @@ gfxWindowsPlatform::UpdateRenderMode()
|
||||
* desktop.
|
||||
*/
|
||||
bool didReset = false;
|
||||
if (DidRenderingDeviceReset()) {
|
||||
DeviceResetReason resetReason = DeviceResetReason::OK;
|
||||
if (DidRenderingDeviceReset(&resetReason)) {
|
||||
Telemetry::Accumulate(Telemetry::DEVICE_RESET_REASON, uint32_t(resetReason));
|
||||
mD3D11DeviceInitialized = false;
|
||||
mD3D11Device = nullptr;
|
||||
mD3D11ContentDevice = nullptr;
|
||||
@ -1140,10 +1143,35 @@ gfxWindowsPlatform::IsFontFormatSupported(nsIURI *aFontURI, uint32_t aFormatFlag
|
||||
}
|
||||
|
||||
bool
|
||||
gfxWindowsPlatform::DidRenderingDeviceReset()
|
||||
gfxWindowsPlatform::DidRenderingDeviceReset(DeviceResetReason* aResetReason)
|
||||
{
|
||||
if (aResetReason) {
|
||||
*aResetReason = DeviceResetReason::OK;
|
||||
}
|
||||
|
||||
if (mD3D11Device) {
|
||||
if (mD3D11Device->GetDeviceRemovedReason() != S_OK) {
|
||||
HRESULT hr = mD3D11Device->GetDeviceRemovedReason();
|
||||
if (hr != S_OK) {
|
||||
if (aResetReason) {
|
||||
switch (hr) {
|
||||
case DXGI_ERROR_DEVICE_HUNG:
|
||||
*aResetReason = DeviceResetReason::HUNG;
|
||||
break;
|
||||
case DXGI_ERROR_DEVICE_REMOVED:
|
||||
*aResetReason = DeviceResetReason::REMOVED;
|
||||
break;
|
||||
case DXGI_ERROR_DEVICE_RESET:
|
||||
*aResetReason = DeviceResetReason::RESET;
|
||||
break;
|
||||
case DXGI_ERROR_DRIVER_INTERNAL_ERROR:
|
||||
*aResetReason = DeviceResetReason::DRIVER_ERROR;
|
||||
break;
|
||||
case DXGI_ERROR_INVALID_CALL:
|
||||
*aResetReason = DeviceResetReason::INVALID_CALL;
|
||||
default:
|
||||
MOZ_ASSERT(false);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -210,7 +210,7 @@ public:
|
||||
*/
|
||||
virtual bool IsFontFormatSupported(nsIURI *aFontURI, uint32_t aFormatFlags);
|
||||
|
||||
virtual bool DidRenderingDeviceReset();
|
||||
virtual bool DidRenderingDeviceReset(DeviceResetReason* aResetReason = nullptr);
|
||||
|
||||
// ClearType is not always enabled even when available (e.g. Windows XP)
|
||||
// if either of these prefs are enabled and apply, use ClearType rendering
|
||||
|
@ -7806,7 +7806,7 @@ CodeGenerator::visitGetNameCache(LGetNameCache *ins)
|
||||
addCache(ins, allocateCache(cache));
|
||||
}
|
||||
|
||||
typedef bool (*NameICFn)(JSContext *, size_t, HandleObject, MutableHandleValue);
|
||||
typedef bool (*NameICFn)(JSContext *, HandleScript, size_t, HandleObject, MutableHandleValue);
|
||||
const VMFunction NameIC::UpdateInfo = FunctionInfo<NameICFn>(NameIC::update);
|
||||
|
||||
void
|
||||
@ -7817,6 +7817,7 @@ CodeGenerator::visitNameIC(OutOfLineUpdateCache *ool, DataPtr<NameIC> &ic)
|
||||
|
||||
pushArg(ic->scopeChainReg());
|
||||
pushArg(Imm32(ool->getCacheIndex()));
|
||||
pushArg(ImmGCPtr(gen->info().script()));
|
||||
callVM(NameIC::UpdateInfo, lir);
|
||||
StoreValueTo(ic->outputReg()).generate(this);
|
||||
restoreLiveIgnore(lir, StoreValueTo(ic->outputReg()).clobbered());
|
||||
@ -7883,9 +7884,9 @@ CodeGenerator::visitGetPropertyCacheT(LGetPropertyCacheT *ins)
|
||||
ins->mir()->profilerLeavePc());
|
||||
}
|
||||
|
||||
typedef bool (*GetPropertyICFn)(JSContext *, size_t, HandleObject, MutableHandleValue);
|
||||
const VMFunction GetPropertyIC::UpdateInfo =
|
||||
FunctionInfo<GetPropertyICFn>(GetPropertyIC::update);
|
||||
typedef bool (*GetPropertyICFn)(JSContext *, HandleScript, size_t, HandleObject,
|
||||
MutableHandleValue);
|
||||
const VMFunction GetPropertyIC::UpdateInfo = FunctionInfo<GetPropertyICFn>(GetPropertyIC::update);
|
||||
|
||||
void
|
||||
CodeGenerator::visitGetPropertyIC(OutOfLineUpdateCache *ool, DataPtr<GetPropertyIC> &ic)
|
||||
@ -7903,6 +7904,7 @@ CodeGenerator::visitGetPropertyIC(OutOfLineUpdateCache *ool, DataPtr<GetProperty
|
||||
|
||||
pushArg(ic->object());
|
||||
pushArg(Imm32(ool->getCacheIndex()));
|
||||
pushArg(ImmGCPtr(gen->info().script()));
|
||||
callVM(GetPropertyIC::UpdateInfo, lir);
|
||||
StoreValueTo(ic->output()).generate(this);
|
||||
restoreLiveIgnore(lir, StoreValueTo(ic->output()).clobbered());
|
||||
@ -7945,9 +7947,9 @@ CodeGenerator::visitGetElementCacheT(LGetElementCacheT *ins)
|
||||
mir->allowDoubleResult(), mir->profilerLeavePc());
|
||||
}
|
||||
|
||||
typedef bool (*GetElementICFn)(JSContext *, size_t, HandleObject, HandleValue, MutableHandleValue);
|
||||
const VMFunction GetElementIC::UpdateInfo =
|
||||
FunctionInfo<GetElementICFn>(GetElementIC::update);
|
||||
typedef bool (*GetElementICFn)(JSContext *, HandleScript, size_t, HandleObject, HandleValue,
|
||||
MutableHandleValue);
|
||||
const VMFunction GetElementIC::UpdateInfo = FunctionInfo<GetElementICFn>(GetElementIC::update);
|
||||
|
||||
void
|
||||
CodeGenerator::visitGetElementIC(OutOfLineUpdateCache *ool, DataPtr<GetElementIC> &ic)
|
||||
@ -7958,6 +7960,7 @@ CodeGenerator::visitGetElementIC(OutOfLineUpdateCache *ool, DataPtr<GetElementIC
|
||||
pushArg(ic->index());
|
||||
pushArg(ic->object());
|
||||
pushArg(Imm32(ool->getCacheIndex()));
|
||||
pushArg(ImmGCPtr(gen->info().script()));
|
||||
callVM(GetElementIC::UpdateInfo, lir);
|
||||
StoreValueTo(ic->output()).generate(this);
|
||||
restoreLiveIgnore(lir, StoreValueTo(ic->output()).clobbered());
|
||||
@ -8002,9 +8005,9 @@ CodeGenerator::visitSetElementCacheT(LSetElementCacheT *ins)
|
||||
ins->mir()->profilerLeavePc());
|
||||
}
|
||||
|
||||
typedef bool (*SetElementICFn)(JSContext *, size_t, HandleObject, HandleValue, HandleValue);
|
||||
const VMFunction SetElementIC::UpdateInfo =
|
||||
FunctionInfo<SetElementICFn>(SetElementIC::update);
|
||||
typedef bool (*SetElementICFn)(JSContext *, HandleScript, size_t, HandleObject, HandleValue,
|
||||
HandleValue);
|
||||
const VMFunction SetElementIC::UpdateInfo = FunctionInfo<SetElementICFn>(SetElementIC::update);
|
||||
|
||||
void
|
||||
CodeGenerator::visitSetElementIC(OutOfLineUpdateCache *ool, DataPtr<SetElementIC> &ic)
|
||||
@ -8016,6 +8019,7 @@ CodeGenerator::visitSetElementIC(OutOfLineUpdateCache *ool, DataPtr<SetElementIC
|
||||
pushArg(ic->index());
|
||||
pushArg(ic->object());
|
||||
pushArg(Imm32(ool->getCacheIndex()));
|
||||
pushArg(ImmGCPtr(gen->info().script()));
|
||||
callVM(SetElementIC::UpdateInfo, lir);
|
||||
restoreLive(lir);
|
||||
|
||||
@ -8033,9 +8037,8 @@ CodeGenerator::visitBindNameCache(LBindNameCache *ins)
|
||||
addCache(ins, allocateCache(cache));
|
||||
}
|
||||
|
||||
typedef JSObject *(*BindNameICFn)(JSContext *, size_t, HandleObject);
|
||||
const VMFunction BindNameIC::UpdateInfo =
|
||||
FunctionInfo<BindNameICFn>(BindNameIC::update);
|
||||
typedef JSObject *(*BindNameICFn)(JSContext *, HandleScript, size_t, HandleObject);
|
||||
const VMFunction BindNameIC::UpdateInfo = FunctionInfo<BindNameICFn>(BindNameIC::update);
|
||||
|
||||
void
|
||||
CodeGenerator::visitBindNameIC(OutOfLineUpdateCache *ool, DataPtr<BindNameIC> &ic)
|
||||
@ -8045,6 +8048,7 @@ CodeGenerator::visitBindNameIC(OutOfLineUpdateCache *ool, DataPtr<BindNameIC> &i
|
||||
|
||||
pushArg(ic->scopeChainReg());
|
||||
pushArg(Imm32(ool->getCacheIndex()));
|
||||
pushArg(ImmGCPtr(gen->info().script()));
|
||||
callVM(BindNameIC::UpdateInfo, lir);
|
||||
StoreRegisterTo(ic->outputReg()).generate(this);
|
||||
restoreLiveIgnore(lir, StoreRegisterTo(ic->outputReg()).clobbered());
|
||||
@ -8138,9 +8142,8 @@ CodeGenerator::visitSetPropertyCacheT(LSetPropertyCacheT *ins)
|
||||
ins->mir()->profilerLeavePc());
|
||||
}
|
||||
|
||||
typedef bool (*SetPropertyICFn)(JSContext *, size_t, HandleObject, HandleValue);
|
||||
const VMFunction SetPropertyIC::UpdateInfo =
|
||||
FunctionInfo<SetPropertyICFn>(SetPropertyIC::update);
|
||||
typedef bool (*SetPropertyICFn)(JSContext *, HandleScript, size_t, HandleObject, HandleValue);
|
||||
const VMFunction SetPropertyIC::UpdateInfo = FunctionInfo<SetPropertyICFn>(SetPropertyIC::update);
|
||||
|
||||
void
|
||||
CodeGenerator::visitSetPropertyIC(OutOfLineUpdateCache *ool, DataPtr<SetPropertyIC> &ic)
|
||||
@ -8151,6 +8154,7 @@ CodeGenerator::visitSetPropertyIC(OutOfLineUpdateCache *ool, DataPtr<SetProperty
|
||||
pushArg(ic->value());
|
||||
pushArg(ic->object());
|
||||
pushArg(Imm32(ool->getCacheIndex()));
|
||||
pushArg(ImmGCPtr(gen->info().script()));
|
||||
callVM(SetPropertyIC::UpdateInfo, lir);
|
||||
restoreLive(lir);
|
||||
|
||||
|
@ -471,6 +471,20 @@ IonCache::initializeAddCacheState(LInstruction *ins, AddCacheState *addState)
|
||||
{
|
||||
}
|
||||
|
||||
static void *
|
||||
GetReturnAddressToIonCode(JSContext *cx)
|
||||
{
|
||||
JitFrameIterator iter(cx);
|
||||
MOZ_ASSERT(iter.type() == JitFrame_Exit);
|
||||
|
||||
void *returnAddr = iter.returnAddress();
|
||||
#ifdef DEBUG
|
||||
++iter;
|
||||
MOZ_ASSERT(iter.isIonJS());
|
||||
#endif
|
||||
return returnAddr;
|
||||
}
|
||||
|
||||
static void
|
||||
GeneratePrototypeGuards(JSContext *cx, IonScript *ion, MacroAssembler &masm, JSObject *obj,
|
||||
JSObject *holder, Register objectReg, Register scratchReg,
|
||||
@ -1243,7 +1257,7 @@ IsCacheableArrayLength(JSContext *cx, HandleObject obj, HandlePropertyName name,
|
||||
|
||||
template <class GetPropCache>
|
||||
static GetPropertyIC::NativeGetPropCacheability
|
||||
CanAttachNativeGetProp(typename GetPropCache::Context cx, const GetPropCache &cache,
|
||||
CanAttachNativeGetProp(JSContext *cx, const GetPropCache &cache,
|
||||
HandleObject obj, HandlePropertyName name,
|
||||
MutableHandleNativeObject holder, MutableHandleShape shape,
|
||||
bool skipArrayLen = false)
|
||||
@ -1311,7 +1325,7 @@ CanAttachNativeGetProp(typename GetPropCache::Context cx, const GetPropCache &ca
|
||||
}
|
||||
|
||||
bool
|
||||
GetPropertyIC::allowArrayLength(Context cx, HandleObject obj) const
|
||||
GetPropertyIC::allowArrayLength(JSContext *cx, HandleObject obj) const
|
||||
{
|
||||
if (!idempotent())
|
||||
return true;
|
||||
@ -1814,8 +1828,7 @@ GetPropertyIC::tryAttachArgumentsLength(JSContext *cx, HandleScript outerScript,
|
||||
|
||||
bool
|
||||
GetPropertyIC::tryAttachStub(JSContext *cx, HandleScript outerScript, IonScript *ion,
|
||||
HandleObject obj, HandlePropertyName name,
|
||||
void *returnAddr, bool *emitted)
|
||||
HandleObject obj, HandlePropertyName name, bool *emitted)
|
||||
{
|
||||
MOZ_ASSERT(!*emitted);
|
||||
|
||||
@ -1825,6 +1838,8 @@ GetPropertyIC::tryAttachStub(JSContext *cx, HandleScript outerScript, IonScript
|
||||
if (!*emitted && !tryAttachArgumentsLength(cx, outerScript, ion, obj, name, emitted))
|
||||
return false;
|
||||
|
||||
void *returnAddr = GetReturnAddressToIonCode(cx);
|
||||
|
||||
if (!*emitted && !tryAttachProxy(cx, outerScript, ion, obj, name, returnAddr, emitted))
|
||||
return false;
|
||||
|
||||
@ -1844,11 +1859,9 @@ GetPropertyIC::tryAttachStub(JSContext *cx, HandleScript outerScript, IonScript
|
||||
}
|
||||
|
||||
/* static */ bool
|
||||
GetPropertyIC::update(JSContext *cx, size_t cacheIndex,
|
||||
GetPropertyIC::update(JSContext *cx, HandleScript outerScript, size_t cacheIndex,
|
||||
HandleObject obj, MutableHandleValue vp)
|
||||
{
|
||||
void *returnAddr;
|
||||
RootedScript outerScript(cx, GetTopJitJSScript(cx, &returnAddr));
|
||||
IonScript *ion = outerScript->ionScript();
|
||||
|
||||
GetPropertyIC &cache = ion->getCache(cacheIndex).toGetProperty();
|
||||
@ -1865,7 +1878,7 @@ GetPropertyIC::update(JSContext *cx, size_t cacheIndex,
|
||||
// limit. Once we can make calls from within generated stubs, a new call
|
||||
// stub will be generated instead and the previous stubs unlinked.
|
||||
bool emitted = false;
|
||||
if (!cache.tryAttachStub(cx, outerScript, ion, obj, name, returnAddr, &emitted))
|
||||
if (!cache.tryAttachStub(cx, outerScript, ion, obj, name, &emitted))
|
||||
return false;
|
||||
|
||||
if (cache.idempotent() && !emitted) {
|
||||
@ -2933,12 +2946,10 @@ CanAttachSetUnboxed(JSContext *cx, HandleObject obj, HandleId id, ConstantOrRegi
|
||||
}
|
||||
|
||||
bool
|
||||
SetPropertyIC::update(JSContext *cx, size_t cacheIndex, HandleObject obj,
|
||||
SetPropertyIC::update(JSContext *cx, HandleScript outerScript, size_t cacheIndex, HandleObject obj,
|
||||
HandleValue value)
|
||||
{
|
||||
void *returnAddr;
|
||||
RootedScript script(cx, GetTopJitJSScript(cx, &returnAddr));
|
||||
IonScript *ion = script->ionScript();
|
||||
IonScript *ion = outerScript->ionScript();
|
||||
SetPropertyIC &cache = ion->getCache(cacheIndex).toSetProperty();
|
||||
RootedPropertyName name(cx, cache.name());
|
||||
RootedId id(cx, AtomToId(name));
|
||||
@ -2953,26 +2964,27 @@ SetPropertyIC::update(JSContext *cx, size_t cacheIndex, HandleObject obj,
|
||||
bool addedSetterStub = false;
|
||||
if (cache.canAttachStub() && !obj->watched()) {
|
||||
if (!addedSetterStub && obj->is<ProxyObject>()) {
|
||||
void *returnAddr = GetReturnAddressToIonCode(cx);
|
||||
if (IsCacheableDOMProxy(obj)) {
|
||||
DOMProxyShadowsResult shadows = GetDOMProxyShadowsCheck()(cx, obj, id);
|
||||
if (shadows == ShadowCheckFailed)
|
||||
return false;
|
||||
if (shadows == Shadows) {
|
||||
if (!cache.attachDOMProxyShadowed(cx, script, ion, obj, returnAddr))
|
||||
if (!cache.attachDOMProxyShadowed(cx, outerScript, ion, obj, returnAddr))
|
||||
return false;
|
||||
addedSetterStub = true;
|
||||
} else {
|
||||
MOZ_ASSERT(shadows == DoesntShadow || shadows == DoesntShadowUnique);
|
||||
if (shadows == DoesntShadowUnique)
|
||||
cache.reset();
|
||||
if (!cache.attachDOMProxyUnshadowed(cx, script, ion, obj, returnAddr))
|
||||
if (!cache.attachDOMProxyUnshadowed(cx, outerScript, ion, obj, returnAddr))
|
||||
return false;
|
||||
addedSetterStub = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!addedSetterStub && !cache.hasGenericProxyStub()) {
|
||||
if (!cache.attachGenericProxy(cx, script, ion, returnAddr))
|
||||
if (!cache.attachGenericProxy(cx, outerScript, ion, returnAddr))
|
||||
return false;
|
||||
addedSetterStub = true;
|
||||
}
|
||||
@ -2986,13 +2998,14 @@ SetPropertyIC::update(JSContext *cx, size_t cacheIndex, HandleObject obj,
|
||||
|
||||
if (!addedSetterStub && canCache == CanAttachSetSlot) {
|
||||
RootedNativeObject nobj(cx, &obj->as<NativeObject>());
|
||||
if (!cache.attachSetSlot(cx, script, ion, nobj, shape, checkTypeset))
|
||||
if (!cache.attachSetSlot(cx, outerScript, ion, nobj, shape, checkTypeset))
|
||||
return false;
|
||||
addedSetterStub = true;
|
||||
}
|
||||
|
||||
if (!addedSetterStub && canCache == CanAttachCallSetter) {
|
||||
if (!cache.attachCallSetter(cx, script, ion, obj, holder, shape, returnAddr))
|
||||
void *returnAddr = GetReturnAddressToIonCode(cx);
|
||||
if (!cache.attachCallSetter(cx, outerScript, ion, obj, holder, shape, returnAddr))
|
||||
return false;
|
||||
addedSetterStub = true;
|
||||
}
|
||||
@ -3004,7 +3017,7 @@ SetPropertyIC::update(JSContext *cx, size_t cacheIndex, HandleObject obj,
|
||||
cache.needsTypeBarrier(),
|
||||
&checkTypeset, &unboxedOffset, &unboxedType))
|
||||
{
|
||||
if (!cache.attachSetUnboxed(cx, script, ion, obj, id, unboxedOffset, unboxedType,
|
||||
if (!cache.attachSetUnboxed(cx, outerScript, ion, obj, id, unboxedOffset, unboxedType,
|
||||
checkTypeset))
|
||||
{
|
||||
return false;
|
||||
@ -3028,7 +3041,7 @@ SetPropertyIC::update(JSContext *cx, size_t cacheIndex, HandleObject obj,
|
||||
&checkTypeset))
|
||||
{
|
||||
RootedNativeObject nobj(cx, &obj->as<NativeObject>());
|
||||
if (!cache.attachAddSlot(cx, script, ion, nobj, oldShape, oldGroup, checkTypeset))
|
||||
if (!cache.attachAddSlot(cx, outerScript, ion, nobj, oldShape, oldGroup, checkTypeset))
|
||||
return false;
|
||||
addedSetterStub = true;
|
||||
}
|
||||
@ -3074,8 +3087,7 @@ EqualStringsHelper(JSString *str1, JSString *str2)
|
||||
|
||||
bool
|
||||
GetElementIC::attachGetProp(JSContext *cx, HandleScript outerScript, IonScript *ion,
|
||||
HandleObject obj, const Value &idval, HandlePropertyName name,
|
||||
void *returnAddr)
|
||||
HandleObject obj, const Value &idval, HandlePropertyName name)
|
||||
{
|
||||
MOZ_ASSERT(index().reg().hasValue());
|
||||
|
||||
@ -3155,7 +3167,9 @@ GetElementIC::attachGetProp(JSContext *cx, HandleScript outerScript, IonScript *
|
||||
&failures);
|
||||
} else {
|
||||
MOZ_ASSERT(canCache == GetPropertyIC::CanAttachCallGetter);
|
||||
|
||||
// Set the frame for bailout safety of the OOL call.
|
||||
void *returnAddr = GetReturnAddressToIonCode(cx);
|
||||
if (!GenerateCallGetter(cx, ion, masm, attacher, obj, name, holder, shape, liveRegs_,
|
||||
object(), output(), returnAddr, &failures))
|
||||
{
|
||||
@ -3506,11 +3520,9 @@ GetElementIC::attachArgumentsElement(JSContext *cx, HandleScript outerScript, Io
|
||||
}
|
||||
|
||||
bool
|
||||
GetElementIC::update(JSContext *cx, size_t cacheIndex, HandleObject obj,
|
||||
GetElementIC::update(JSContext *cx, HandleScript outerScript, size_t cacheIndex, HandleObject obj,
|
||||
HandleValue idval, MutableHandleValue res)
|
||||
{
|
||||
void *returnAddr;
|
||||
RootedScript outerScript(cx, GetTopJitJSScript(cx, &returnAddr));
|
||||
IonScript *ion = outerScript->ionScript();
|
||||
GetElementIC &cache = ion->getCache(cacheIndex).toGetElement();
|
||||
RootedScript script(cx);
|
||||
@ -3547,7 +3559,7 @@ GetElementIC::update(JSContext *cx, size_t cacheIndex, HandleObject obj,
|
||||
}
|
||||
if (!attachedStub && cache.monitoredResult() && canAttachGetProp(obj, idval, id)) {
|
||||
RootedPropertyName name(cx, JSID_TO_ATOM(id)->asPropertyName());
|
||||
if (!cache.attachGetProp(cx, outerScript, ion, obj, idval, name, returnAddr))
|
||||
if (!cache.attachGetProp(cx, outerScript, ion, obj, idval, name))
|
||||
return false;
|
||||
attachedStub = true;
|
||||
}
|
||||
@ -3897,10 +3909,9 @@ SetElementIC::attachTypedArrayElement(JSContext *cx, HandleScript outerScript, I
|
||||
}
|
||||
|
||||
bool
|
||||
SetElementIC::update(JSContext *cx, size_t cacheIndex, HandleObject obj,
|
||||
SetElementIC::update(JSContext *cx, HandleScript outerScript, size_t cacheIndex, HandleObject obj,
|
||||
HandleValue idval, HandleValue value)
|
||||
{
|
||||
RootedScript outerScript(cx, GetTopJitJSScript(cx));
|
||||
IonScript *ion = outerScript->ionScript();
|
||||
SetElementIC &cache = ion->getCache(cacheIndex).toSetElement();
|
||||
|
||||
@ -4066,9 +4077,9 @@ IsCacheableNonGlobalScopeChain(JSObject *scopeChain, JSObject *holder)
|
||||
}
|
||||
|
||||
JSObject *
|
||||
BindNameIC::update(JSContext *cx, size_t cacheIndex, HandleObject scopeChain)
|
||||
BindNameIC::update(JSContext *cx, HandleScript outerScript, size_t cacheIndex,
|
||||
HandleObject scopeChain)
|
||||
{
|
||||
RootedScript outerScript(cx, GetTopJitJSScript(cx));
|
||||
IonScript *ion = outerScript->ionScript();
|
||||
BindNameIC &cache = ion->getCache(cacheIndex).toBindName();
|
||||
HandlePropertyName name = cache.name();
|
||||
@ -4216,11 +4227,9 @@ IsCacheableNameCallGetter(HandleObject scopeChain, HandleObject obj, HandleObjec
|
||||
}
|
||||
|
||||
bool
|
||||
NameIC::update(JSContext *cx, size_t cacheIndex, HandleObject scopeChain,
|
||||
NameIC::update(JSContext *cx, HandleScript outerScript, size_t cacheIndex, HandleObject scopeChain,
|
||||
MutableHandleValue vp)
|
||||
{
|
||||
void *returnAddr;
|
||||
RootedScript outerScript(cx, GetTopJitJSScript(cx, &returnAddr));
|
||||
IonScript *ion = outerScript->ionScript();
|
||||
|
||||
NameIC &cache = ion->getCache(cacheIndex).toName();
|
||||
@ -4253,8 +4262,12 @@ NameIC::update(JSContext *cx, size_t cacheIndex, HandleObject scopeChain,
|
||||
return false;
|
||||
}
|
||||
} else if (IsCacheableNameCallGetter(scopeChain, obj, holder, shape)) {
|
||||
if (!cache.attachCallGetter(cx, outerScript, ion, scopeChain, obj, holder, shape, returnAddr))
|
||||
void *returnAddr = GetReturnAddressToIonCode(cx);
|
||||
if (!cache.attachCallGetter(cx, outerScript, ion, scopeChain, obj, holder, shape,
|
||||
returnAddr))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -638,16 +638,14 @@ class GetPropertyIC : public RepatchIonCache
|
||||
};
|
||||
|
||||
// Helpers for CanAttachNativeGetProp
|
||||
typedef JSContext * Context;
|
||||
bool allowArrayLength(Context cx, HandleObject obj) const;
|
||||
bool allowArrayLength(JSContext *cx, HandleObject obj) const;
|
||||
bool allowGetters() const {
|
||||
return monitoredResult() && !idempotent();
|
||||
}
|
||||
|
||||
// Attach the proper stub, if possible
|
||||
bool tryAttachStub(JSContext *cx, HandleScript outerScript, IonScript *ion,
|
||||
HandleObject obj, HandlePropertyName name,
|
||||
void *returnAddr, bool *emitted);
|
||||
HandleObject obj, HandlePropertyName name, bool *emitted);
|
||||
|
||||
bool tryAttachProxy(JSContext *cx, HandleScript outerScript, IonScript *ion,
|
||||
HandleObject obj, HandlePropertyName name,
|
||||
@ -678,7 +676,8 @@ class GetPropertyIC : public RepatchIonCache
|
||||
bool tryAttachArgumentsLength(JSContext *cx, HandleScript outerScript, IonScript *ion,
|
||||
HandleObject obj, HandlePropertyName name, bool *emitted);
|
||||
|
||||
static bool update(JSContext *cx, size_t cacheIndex, HandleObject obj, MutableHandleValue vp);
|
||||
static bool update(JSContext *cx, HandleScript outerScript, size_t cacheIndex,
|
||||
HandleObject obj, MutableHandleValue vp);
|
||||
};
|
||||
|
||||
class SetPropertyIC : public RepatchIonCache
|
||||
@ -764,7 +763,8 @@ class SetPropertyIC : public RepatchIonCache
|
||||
bool attachDOMProxyUnshadowed(JSContext *cx, HandleScript outerScript, IonScript *ion,
|
||||
HandleObject obj, void *returnAddr);
|
||||
|
||||
static bool update(JSContext *cx, size_t cacheIndex, HandleObject obj, HandleValue value);
|
||||
static bool update(JSContext *cx, HandleScript outerScript, size_t cacheIndex,
|
||||
HandleObject obj, HandleValue value);
|
||||
};
|
||||
|
||||
class GetElementIC : public RepatchIonCache
|
||||
@ -846,8 +846,7 @@ class GetElementIC : public RepatchIonCache
|
||||
TypedOrValueRegister output);
|
||||
|
||||
bool attachGetProp(JSContext *cx, HandleScript outerScript, IonScript *ion,
|
||||
HandleObject obj, const Value &idval, HandlePropertyName name,
|
||||
void *returnAddr);
|
||||
HandleObject obj, const Value &idval, HandlePropertyName name);
|
||||
|
||||
bool attachDenseElement(JSContext *cx, HandleScript outerScript, IonScript *ion,
|
||||
HandleObject obj, const Value &idval);
|
||||
@ -859,8 +858,8 @@ class GetElementIC : public RepatchIonCache
|
||||
HandleObject obj);
|
||||
|
||||
static bool
|
||||
update(JSContext *cx, size_t cacheIndex, HandleObject obj, HandleValue idval,
|
||||
MutableHandleValue vp);
|
||||
update(JSContext *cx, HandleScript outerScript, size_t cacheIndex, HandleObject obj,
|
||||
HandleValue idval, MutableHandleValue vp);
|
||||
|
||||
void incFailedUpdates() {
|
||||
failedUpdates_++;
|
||||
@ -954,8 +953,8 @@ class SetElementIC : public RepatchIonCache
|
||||
HandleObject tarr);
|
||||
|
||||
static bool
|
||||
update(JSContext *cx, size_t cacheIndex, HandleObject obj, HandleValue idval,
|
||||
HandleValue value);
|
||||
update(JSContext *cx, HandleScript outerScript, size_t cacheIndex, HandleObject obj,
|
||||
HandleValue idval, HandleValue value);
|
||||
};
|
||||
|
||||
class BindNameIC : public RepatchIonCache
|
||||
@ -992,7 +991,7 @@ class BindNameIC : public RepatchIonCache
|
||||
HandleObject scopeChain, HandleObject holder);
|
||||
|
||||
static JSObject *
|
||||
update(JSContext *cx, size_t cacheIndex, HandleObject scopeChain);
|
||||
update(JSContext *cx, HandleScript outerScript, size_t cacheIndex, HandleObject scopeChain);
|
||||
};
|
||||
|
||||
class NameIC : public RepatchIonCache
|
||||
@ -1043,7 +1042,8 @@ class NameIC : public RepatchIonCache
|
||||
HandleShape shape, void *returnAddr);
|
||||
|
||||
static bool
|
||||
update(JSContext *cx, size_t cacheIndex, HandleObject scopeChain, MutableHandleValue vp);
|
||||
update(JSContext *cx, HandleScript outerScript, size_t cacheIndex, HandleObject scopeChain,
|
||||
MutableHandleValue vp);
|
||||
};
|
||||
|
||||
#undef CACHE_HEADER
|
||||
|
@ -289,16 +289,12 @@ MakeFrameDescriptor(uint32_t frameSize, FrameType type)
|
||||
|
||||
// Returns the JSScript associated with the topmost JIT frame.
|
||||
inline JSScript *
|
||||
GetTopJitJSScript(JSContext *cx, void **returnAddrOut = nullptr)
|
||||
GetTopJitJSScript(JSContext *cx)
|
||||
{
|
||||
JitFrameIterator iter(cx);
|
||||
MOZ_ASSERT(iter.type() == JitFrame_Exit);
|
||||
++iter;
|
||||
|
||||
MOZ_ASSERT(iter.returnAddressToFp() != nullptr);
|
||||
if (returnAddrOut)
|
||||
*returnAddrOut = (void *) iter.returnAddressToFp();
|
||||
|
||||
if (iter.isBaselineStub()) {
|
||||
++iter;
|
||||
MOZ_ASSERT(iter.isBaselineJS());
|
||||
|
@ -36,10 +36,9 @@ namespace jit {
|
||||
// run before the constructors for static VMFunctions.
|
||||
/* static */ VMFunction *VMFunction::functions;
|
||||
|
||||
AutoDetectInvalidation::AutoDetectInvalidation(JSContext *cx, MutableHandleValue rval,
|
||||
IonScript *ionScript)
|
||||
AutoDetectInvalidation::AutoDetectInvalidation(JSContext *cx, MutableHandleValue rval)
|
||||
: cx_(cx),
|
||||
ionScript_(ionScript ? ionScript : GetTopJitJSScript(cx)->ionScript()),
|
||||
ionScript_(GetTopJitJSScript(cx)->ionScript()),
|
||||
rval_(rval),
|
||||
disabled_(false)
|
||||
{ }
|
||||
|
@ -617,7 +617,13 @@ class AutoDetectInvalidation
|
||||
void setReturnOverride();
|
||||
|
||||
public:
|
||||
AutoDetectInvalidation(JSContext *cx, MutableHandleValue rval, IonScript *ionScript = nullptr);
|
||||
AutoDetectInvalidation(JSContext *cx, MutableHandleValue rval, IonScript *ionScript)
|
||||
: cx_(cx), ionScript_(ionScript), rval_(rval), disabled_(false)
|
||||
{
|
||||
MOZ_ASSERT(ionScript);
|
||||
}
|
||||
|
||||
AutoDetectInvalidation(JSContext *cx, MutableHandleValue rval);
|
||||
|
||||
void disable() {
|
||||
MOZ_ASSERT(!disabled_);
|
||||
|
@ -598,7 +598,16 @@ nsFieldSetFrame::Reflow(nsPresContext* aPresContext,
|
||||
LogicalRect actualLegendRect = mLegendRect;
|
||||
actualLegendRect.Deflate(wm, legendMargin);
|
||||
LogicalPoint actualLegendPos(actualLegendRect.Origin(wm));
|
||||
legendReflowState->ApplyRelativePositioning(&actualLegendPos, containerWidth);
|
||||
|
||||
// Note that legend's writing mode may be different from the fieldset's,
|
||||
// so we need to convert offsets before applying them to it (bug 1134534).
|
||||
LogicalMargin offsets =
|
||||
legendReflowState->ComputedLogicalOffsets().
|
||||
ConvertTo(wm, legendReflowState->GetWritingMode());
|
||||
nsHTMLReflowState::ApplyRelativePositioning(legend, wm, offsets,
|
||||
&actualLegendPos,
|
||||
containerWidth);
|
||||
|
||||
legend->SetPosition(wm, actualLegendPos, containerWidth);
|
||||
nsContainerFrame::PositionFrameView(legend);
|
||||
nsContainerFrame::PositionChildViews(legend);
|
||||
|
@ -8524,6 +8524,7 @@ nsTextFrame::ReflowText(nsLineLayout& aLineLayout, nscoord aAvailableWidth,
|
||||
bool emptyTextAtStartOfLine = atStartOfLine && length == 0;
|
||||
if (!breakAfter && charsFit == length && !emptyTextAtStartOfLine &&
|
||||
transformedOffset + transformedLength == mTextRun->GetLength() &&
|
||||
!StyleContext()->IsInlineDescendantOfRuby() &&
|
||||
(mTextRun->GetFlags() & nsTextFrameUtils::TEXT_HAS_TRAILING_BREAK)) {
|
||||
// We placed all the text in the textrun and we have a break opportunity at
|
||||
// the end of the textrun. We need to record it because the following
|
||||
|
@ -571,8 +571,9 @@ nsCaseTransformTextRunFactory::TransformString(
|
||||
aCharsToMergeArray.AppendElement(false);
|
||||
if (aTextRun) {
|
||||
aStyleArray->AppendElement(charStyle);
|
||||
aCanBreakBeforeArray->AppendElement(inhibitBreakBefore ? false :
|
||||
aTextRun->CanBreakLineBefore(i));
|
||||
aCanBreakBeforeArray->AppendElement(
|
||||
inhibitBreakBefore ? gfxShapedText::CompressedGlyph::FLAG_BREAK_TYPE_NONE
|
||||
: aTextRun->CanBreakBefore(i));
|
||||
}
|
||||
|
||||
if (IS_IN_BMP(ch)) {
|
||||
@ -591,7 +592,8 @@ nsCaseTransformTextRunFactory::TransformString(
|
||||
aCharsToMergeArray.AppendElement(true);
|
||||
if (aTextRun) {
|
||||
aStyleArray->AppendElement(charStyle);
|
||||
aCanBreakBeforeArray->AppendElement(false);
|
||||
aCanBreakBeforeArray->AppendElement(
|
||||
gfxShapedText::CompressedGlyph::FLAG_BREAK_TYPE_NONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
5
layout/reftests/forms/fieldset/legend-rtl-ref.html
Normal file
5
layout/reftests/forms/fieldset/legend-rtl-ref.html
Normal file
@ -0,0 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<fieldset><legend style="position:relative;left:20px;">Legend</legend></fieldset>
|
||||
<fieldset dir="rtl"><legend style="position:relative;right:20px;">Legend</legend></fieldset>
|
||||
</html>
|
5
layout/reftests/forms/fieldset/legend-rtl.html
Normal file
5
layout/reftests/forms/fieldset/legend-rtl.html
Normal file
@ -0,0 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<fieldset><legend dir="rtl" style="position:relative;left:20px;">Legend</legend></fieldset>
|
||||
<fieldset dir="rtl"><legend dir="ltr" style="position:relative;right:20px;">Legend</legend></fieldset>
|
||||
</html>
|
@ -11,3 +11,4 @@ fuzzy-if(winWidget&&!layersGPUAccelerated,102,205) == positioned-container-1.htm
|
||||
test-pref(layout.css.sticky.enabled,true) skip-if(B2G&&browserIsRemote) == sticky-legend-1.html sticky-legend-1-ref.html
|
||||
== abs-pos-child-sizing.html abs-pos-child-sizing-ref.html
|
||||
== overflow-hidden.html overflow-hidden-ref.html
|
||||
== legend-rtl.html legend-rtl-ref.html
|
||||
|
18
layout/reftests/text/auto-hyphenation-transformed-1-ref.html
Normal file
18
layout/reftests/text/auto-hyphenation-transformed-1-ref.html
Normal file
@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test for auto hyphenation with text-transform</title>
|
||||
</head>
|
||||
<body>
|
||||
<div style="width:0px;">
|
||||
mas­se<br>ma­ße
|
||||
</div>
|
||||
<div style="width:0px;">
|
||||
MAS­SE<br>MA­SSE
|
||||
</div>
|
||||
<div style="width:0px;">
|
||||
Mas­se<br>Ma­ße
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
18
layout/reftests/text/auto-hyphenation-transformed-1.html
Normal file
18
layout/reftests/text/auto-hyphenation-transformed-1.html
Normal file
@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test for auto hyphenation with text-transform</title>
|
||||
</head>
|
||||
<body>
|
||||
<div style="width:0px; -moz-hyphens:auto">
|
||||
masse<br>maße
|
||||
</div>
|
||||
<div style="width:0px; -moz-hyphens:auto; text-transform:uppercase">
|
||||
masse<br>maße
|
||||
</div>
|
||||
<div style="width:0px; -moz-hyphens:auto; text-transform:capitalize">
|
||||
masse<br>maße
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -293,6 +293,8 @@ pref(gfx.font_rendering.graphite.enabled,true) HTTP(..) == glyph-decomposition-g
|
||||
== auto-hyphenation-tr-1.html auto-hyphenation-tr-1-ref.html
|
||||
== auto-hyphenation-uk-1.html auto-hyphenation-uk-1-ref.html
|
||||
|
||||
== auto-hyphenation-transformed-1.html auto-hyphenation-transformed-1-ref.html
|
||||
|
||||
# osx-font-smoothing - with and without subpixel AA, only under OSX
|
||||
fails-if(!cocoaWidget||OSX==1006||OSX==1007) != osx-font-smoothing.html osx-font-smoothing-ref.html
|
||||
fails-if(!cocoaWidget||OSX==1006||OSX==1007) != osx-font-smoothing-2.html osx-font-smoothing-2-notref.html
|
||||
|
@ -42,8 +42,8 @@ if CONFIG['VPX_X86_ASM']:
|
||||
SOURCES += files['X86-64_ASM']
|
||||
|
||||
# AVX2 only supported on
|
||||
# Darwin and mingw toolchains right now
|
||||
if CONFIG['OS_TARGET'] == 'Darwin' or (CONFIG['OS_TARGET'] == 'WINNT' and CONFIG['GNU_CC']):
|
||||
# Darwin and Windows toolchains right now
|
||||
if CONFIG['OS_TARGET'] in ('Darwin', 'WINNT'):
|
||||
SOURCES += files['AVX2']
|
||||
|
||||
#postproc is only enabled on x86 with asm
|
||||
|
@ -12,8 +12,8 @@ from pprint import pprint
|
||||
from StringIO import StringIO
|
||||
|
||||
PLATFORMS= [
|
||||
'x86-win32-vs8',
|
||||
'x86_64-win64-vs8',
|
||||
'x86-win32-vs12',
|
||||
'x86_64-win64-vs12',
|
||||
'x86-linux-gcc',
|
||||
'x86_64-linux-gcc',
|
||||
'generic-gnu',
|
||||
|
@ -9,7 +9,7 @@
|
||||
#if defined(_WIN64)
|
||||
/* 64 bit Windows */
|
||||
#ifdef _MSC_VER
|
||||
#include "vp8_rtcd_x86_64-win64-vs8.h"
|
||||
#include "vp8_rtcd_x86_64-win64-vs12.h"
|
||||
#else
|
||||
#include "vp8_rtcd_x86_64-win64-gcc.h"
|
||||
#endif
|
||||
@ -17,7 +17,7 @@
|
||||
#elif defined(_WIN32)
|
||||
/* 32 bit Windows, MSVC. */
|
||||
#ifdef _MSC_VER
|
||||
#include "vp8_rtcd_x86-win32-vs8.h"
|
||||
#include "vp8_rtcd_x86-win32-vs12.h"
|
||||
#else
|
||||
#include "vp8_rtcd_x86-win32-gcc.h"
|
||||
#endif
|
||||
|
@ -9,7 +9,7 @@
|
||||
#if defined(_WIN64)
|
||||
/* 64 bit Windows */
|
||||
#ifdef _MSC_VER
|
||||
#include "vp9_rtcd_x86_64-win64-vs8.h"
|
||||
#include "vp9_rtcd_x86_64-win64-vs12.h"
|
||||
#else
|
||||
#include "vp9_rtcd_x86_64-win64-gcc.h"
|
||||
#endif
|
||||
@ -17,7 +17,7 @@
|
||||
#elif defined(_WIN32)
|
||||
/* 32 bit Windows, MSVC. */
|
||||
#ifdef _MSC_VER
|
||||
#include "vp9_rtcd_x86-win32-vs8.h"
|
||||
#include "vp9_rtcd_x86-win32-vs12.h"
|
||||
#else
|
||||
#include "vp9_rtcd_x86-win32-gcc.h"
|
||||
#endif
|
||||
|
@ -31,11 +31,13 @@ extern "C" {
|
||||
|
||||
int64_t vp9_block_error_c(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
|
||||
int64_t vp9_block_error_sse2(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
|
||||
int64_t vp9_block_error_avx2(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
|
||||
RTCD_EXTERN int64_t (*vp9_block_error)(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
|
||||
|
||||
void vp9_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
void vp9_convolve8_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
void vp9_convolve8_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
void vp9_convolve8_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
RTCD_EXTERN void (*vp9_convolve8)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
|
||||
void vp9_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
@ -56,11 +58,13 @@ RTCD_EXTERN void (*vp9_convolve8_avg_vert)(const uint8_t *src, ptrdiff_t src_str
|
||||
void vp9_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
void vp9_convolve8_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
void vp9_convolve8_horiz_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
void vp9_convolve8_horiz_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
RTCD_EXTERN void (*vp9_convolve8_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
|
||||
void vp9_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
void vp9_convolve8_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
void vp9_convolve8_vert_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
void vp9_convolve8_vert_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
RTCD_EXTERN void (*vp9_convolve8_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
|
||||
void vp9_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
@ -223,6 +227,7 @@ RTCD_EXTERN void (*vp9_fdct16x16_1)(const int16_t *input, tran_low_t *output, in
|
||||
|
||||
void vp9_fdct32x32_c(const int16_t *input, tran_low_t *output, int stride);
|
||||
void vp9_fdct32x32_sse2(const int16_t *input, tran_low_t *output, int stride);
|
||||
void vp9_fdct32x32_avx2(const int16_t *input, tran_low_t *output, int stride);
|
||||
RTCD_EXTERN void (*vp9_fdct32x32)(const int16_t *input, tran_low_t *output, int stride);
|
||||
|
||||
void vp9_fdct32x32_1_c(const int16_t *input, tran_low_t *output, int stride);
|
||||
@ -231,6 +236,7 @@ RTCD_EXTERN void (*vp9_fdct32x32_1)(const int16_t *input, tran_low_t *output, in
|
||||
|
||||
void vp9_fdct32x32_rd_c(const int16_t *input, tran_low_t *output, int stride);
|
||||
void vp9_fdct32x32_rd_sse2(const int16_t *input, tran_low_t *output, int stride);
|
||||
void vp9_fdct32x32_rd_avx2(const int16_t *input, tran_low_t *output, int stride);
|
||||
RTCD_EXTERN void (*vp9_fdct32x32_rd)(const int16_t *input, tran_low_t *output, int stride);
|
||||
|
||||
void vp9_fdct4x4_c(const int16_t *input, tran_low_t *output, int stride);
|
||||
@ -275,6 +281,7 @@ RTCD_EXTERN void (*vp9_fwht4x4)(const int16_t *input, tran_low_t *output, int st
|
||||
|
||||
void vp9_get16x16var_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
|
||||
void vp9_get16x16var_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
|
||||
void vp9_get16x16var_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
|
||||
RTCD_EXTERN void (*vp9_get16x16var)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
|
||||
|
||||
void vp9_get8x8var_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
|
||||
@ -367,6 +374,7 @@ void vp9_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride
|
||||
|
||||
void vp9_lpf_horizontal_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
|
||||
void vp9_lpf_horizontal_16_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
|
||||
void vp9_lpf_horizontal_16_avx2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
|
||||
RTCD_EXTERN void (*vp9_lpf_horizontal_16)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
|
||||
|
||||
void vp9_lpf_horizontal_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
|
||||
@ -411,6 +419,7 @@ RTCD_EXTERN void (*vp9_lpf_vertical_8_dual)(uint8_t *s, int pitch, const uint8_t
|
||||
|
||||
unsigned int vp9_mse16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
|
||||
unsigned int vp9_mse16x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
|
||||
unsigned int vp9_mse16x16_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp9_mse16x16)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp9_mse16x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
|
||||
@ -517,6 +526,7 @@ void vp9_sad32x32x3_c(const uint8_t *src_ptr, int source_stride, const uint8_t *
|
||||
|
||||
void vp9_sad32x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp9_sad32x32x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp9_sad32x32x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp9_sad32x32x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp9_sad32x32x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
|
||||
@ -593,6 +603,7 @@ void vp9_sad64x64x3_c(const uint8_t *src_ptr, int source_stride, const uint8_t *
|
||||
|
||||
void vp9_sad64x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp9_sad64x64x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp9_sad64x64x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp9_sad64x64x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp9_sad64x64x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
|
||||
@ -674,6 +685,7 @@ RTCD_EXTERN unsigned int (*vp9_sub_pixel_avg_variance32x16)(const uint8_t *src_p
|
||||
unsigned int vp9_sub_pixel_avg_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
unsigned int vp9_sub_pixel_avg_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
unsigned int vp9_sub_pixel_avg_variance32x32_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
unsigned int vp9_sub_pixel_avg_variance32x32_avx2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
RTCD_EXTERN unsigned int (*vp9_sub_pixel_avg_variance32x32)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
|
||||
unsigned int vp9_sub_pixel_avg_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
@ -699,6 +711,7 @@ RTCD_EXTERN unsigned int (*vp9_sub_pixel_avg_variance64x32)(const uint8_t *src_p
|
||||
unsigned int vp9_sub_pixel_avg_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
unsigned int vp9_sub_pixel_avg_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
unsigned int vp9_sub_pixel_avg_variance64x64_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
unsigned int vp9_sub_pixel_avg_variance64x64_avx2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
RTCD_EXTERN unsigned int (*vp9_sub_pixel_avg_variance64x64)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
|
||||
unsigned int vp9_sub_pixel_avg_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
@ -739,6 +752,7 @@ RTCD_EXTERN unsigned int (*vp9_sub_pixel_variance32x16)(const uint8_t *src_ptr,
|
||||
unsigned int vp9_sub_pixel_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_sub_pixel_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_sub_pixel_variance32x32_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_sub_pixel_variance32x32_avx2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp9_sub_pixel_variance32x32)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp9_sub_pixel_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
@ -764,6 +778,7 @@ RTCD_EXTERN unsigned int (*vp9_sub_pixel_variance64x32)(const uint8_t *src_ptr,
|
||||
unsigned int vp9_sub_pixel_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_sub_pixel_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_sub_pixel_variance64x64_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_sub_pixel_variance64x64_avx2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp9_sub_pixel_variance64x64)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp9_sub_pixel_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
@ -822,6 +837,7 @@ RTCD_EXTERN void (*vp9_v_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const
|
||||
|
||||
unsigned int vp9_variance16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_variance16x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_variance16x16_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp9_variance16x16)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp9_variance16x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
@ -834,10 +850,12 @@ RTCD_EXTERN unsigned int (*vp9_variance16x8)(const uint8_t *src_ptr, int source_
|
||||
|
||||
unsigned int vp9_variance32x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_variance32x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_variance32x16_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp9_variance32x16)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp9_variance32x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_variance32x32_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp9_variance32x32)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp9_variance32x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
@ -854,10 +872,12 @@ RTCD_EXTERN unsigned int (*vp9_variance4x8)(const uint8_t *src_ptr, int source_s
|
||||
|
||||
unsigned int vp9_variance64x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_variance64x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_variance64x32_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp9_variance64x32)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp9_variance64x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_variance64x64_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp9_variance64x64)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp9_variance8x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
@ -884,9 +904,11 @@ static void setup_rtcd_internal(void)
|
||||
|
||||
vp9_block_error = vp9_block_error_c;
|
||||
if (flags & HAS_SSE2) vp9_block_error = vp9_block_error_sse2;
|
||||
if (flags & HAS_AVX2) vp9_block_error = vp9_block_error_avx2;
|
||||
vp9_convolve8 = vp9_convolve8_c;
|
||||
if (flags & HAS_SSE2) vp9_convolve8 = vp9_convolve8_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_convolve8 = vp9_convolve8_ssse3;
|
||||
if (flags & HAS_AVX2) vp9_convolve8 = vp9_convolve8_avx2;
|
||||
vp9_convolve8_avg = vp9_convolve8_avg_c;
|
||||
if (flags & HAS_SSE2) vp9_convolve8_avg = vp9_convolve8_avg_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_convolve8_avg = vp9_convolve8_avg_ssse3;
|
||||
@ -899,9 +921,11 @@ static void setup_rtcd_internal(void)
|
||||
vp9_convolve8_horiz = vp9_convolve8_horiz_c;
|
||||
if (flags & HAS_SSE2) vp9_convolve8_horiz = vp9_convolve8_horiz_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_convolve8_horiz = vp9_convolve8_horiz_ssse3;
|
||||
if (flags & HAS_AVX2) vp9_convolve8_horiz = vp9_convolve8_horiz_avx2;
|
||||
vp9_convolve8_vert = vp9_convolve8_vert_c;
|
||||
if (flags & HAS_SSE2) vp9_convolve8_vert = vp9_convolve8_vert_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_convolve8_vert = vp9_convolve8_vert_ssse3;
|
||||
if (flags & HAS_AVX2) vp9_convolve8_vert = vp9_convolve8_vert_avx2;
|
||||
vp9_convolve_avg = vp9_convolve_avg_c;
|
||||
if (flags & HAS_SSE2) vp9_convolve_avg = vp9_convolve_avg_sse2;
|
||||
vp9_convolve_copy = vp9_convolve_copy_c;
|
||||
@ -950,10 +974,12 @@ static void setup_rtcd_internal(void)
|
||||
if (flags & HAS_SSE2) vp9_fdct16x16_1 = vp9_fdct16x16_1_sse2;
|
||||
vp9_fdct32x32 = vp9_fdct32x32_c;
|
||||
if (flags & HAS_SSE2) vp9_fdct32x32 = vp9_fdct32x32_sse2;
|
||||
if (flags & HAS_AVX2) vp9_fdct32x32 = vp9_fdct32x32_avx2;
|
||||
vp9_fdct32x32_1 = vp9_fdct32x32_1_c;
|
||||
if (flags & HAS_SSE2) vp9_fdct32x32_1 = vp9_fdct32x32_1_sse2;
|
||||
vp9_fdct32x32_rd = vp9_fdct32x32_rd_c;
|
||||
if (flags & HAS_SSE2) vp9_fdct32x32_rd = vp9_fdct32x32_rd_sse2;
|
||||
if (flags & HAS_AVX2) vp9_fdct32x32_rd = vp9_fdct32x32_rd_avx2;
|
||||
vp9_fdct4x4 = vp9_fdct4x4_c;
|
||||
if (flags & HAS_SSE2) vp9_fdct4x4 = vp9_fdct4x4_sse2;
|
||||
vp9_fdct4x4_1 = vp9_fdct4x4_1_c;
|
||||
@ -975,6 +1001,7 @@ static void setup_rtcd_internal(void)
|
||||
if (flags & HAS_MMX) vp9_fwht4x4 = vp9_fwht4x4_mmx;
|
||||
vp9_get16x16var = vp9_get16x16var_c;
|
||||
if (flags & HAS_SSE2) vp9_get16x16var = vp9_get16x16var_sse2;
|
||||
if (flags & HAS_AVX2) vp9_get16x16var = vp9_get16x16var_avx2;
|
||||
vp9_get8x8var = vp9_get8x8var_c;
|
||||
if (flags & HAS_SSE2) vp9_get8x8var = vp9_get8x8var_sse2;
|
||||
vp9_get_mb_ss = vp9_get_mb_ss_c;
|
||||
@ -1019,6 +1046,7 @@ static void setup_rtcd_internal(void)
|
||||
if (flags & HAS_SSE2) vp9_iht8x8_64_add = vp9_iht8x8_64_add_sse2;
|
||||
vp9_lpf_horizontal_16 = vp9_lpf_horizontal_16_c;
|
||||
if (flags & HAS_SSE2) vp9_lpf_horizontal_16 = vp9_lpf_horizontal_16_sse2;
|
||||
if (flags & HAS_AVX2) vp9_lpf_horizontal_16 = vp9_lpf_horizontal_16_avx2;
|
||||
vp9_lpf_horizontal_4 = vp9_lpf_horizontal_4_c;
|
||||
if (flags & HAS_MMX) vp9_lpf_horizontal_4 = vp9_lpf_horizontal_4_mmx;
|
||||
vp9_lpf_horizontal_4_dual = vp9_lpf_horizontal_4_dual_c;
|
||||
@ -1041,6 +1069,7 @@ static void setup_rtcd_internal(void)
|
||||
if (flags & HAS_SSE2) vp9_lpf_vertical_8_dual = vp9_lpf_vertical_8_dual_sse2;
|
||||
vp9_mse16x16 = vp9_mse16x16_c;
|
||||
if (flags & HAS_SSE2) vp9_mse16x16 = vp9_mse16x16_sse2;
|
||||
if (flags & HAS_AVX2) vp9_mse16x16 = vp9_mse16x16_avx2;
|
||||
vp9_mse16x8 = vp9_mse16x8_c;
|
||||
if (flags & HAS_SSE2) vp9_mse16x8 = vp9_mse16x8_sse2;
|
||||
vp9_mse8x16 = vp9_mse8x16_c;
|
||||
@ -1083,6 +1112,7 @@ static void setup_rtcd_internal(void)
|
||||
if (flags & HAS_SSE2) vp9_sad32x32_avg = vp9_sad32x32_avg_sse2;
|
||||
vp9_sad32x32x4d = vp9_sad32x32x4d_c;
|
||||
if (flags & HAS_SSE2) vp9_sad32x32x4d = vp9_sad32x32x4d_sse2;
|
||||
if (flags & HAS_AVX2) vp9_sad32x32x4d = vp9_sad32x32x4d_avx2;
|
||||
vp9_sad32x64 = vp9_sad32x64_c;
|
||||
if (flags & HAS_SSE2) vp9_sad32x64 = vp9_sad32x64_sse2;
|
||||
vp9_sad32x64_avg = vp9_sad32x64_avg_c;
|
||||
@ -1115,6 +1145,7 @@ static void setup_rtcd_internal(void)
|
||||
if (flags & HAS_SSE2) vp9_sad64x64_avg = vp9_sad64x64_avg_sse2;
|
||||
vp9_sad64x64x4d = vp9_sad64x64x4d_c;
|
||||
if (flags & HAS_SSE2) vp9_sad64x64x4d = vp9_sad64x64x4d_sse2;
|
||||
if (flags & HAS_AVX2) vp9_sad64x64x4d = vp9_sad64x64x4d_avx2;
|
||||
vp9_sad8x16 = vp9_sad8x16_c;
|
||||
if (flags & HAS_SSE2) vp9_sad8x16 = vp9_sad8x16_sse2;
|
||||
vp9_sad8x16_avg = vp9_sad8x16_avg_c;
|
||||
@ -1152,6 +1183,7 @@ static void setup_rtcd_internal(void)
|
||||
vp9_sub_pixel_avg_variance32x32 = vp9_sub_pixel_avg_variance32x32_c;
|
||||
if (flags & HAS_SSE2) vp9_sub_pixel_avg_variance32x32 = vp9_sub_pixel_avg_variance32x32_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_avg_variance32x32 = vp9_sub_pixel_avg_variance32x32_ssse3;
|
||||
if (flags & HAS_AVX2) vp9_sub_pixel_avg_variance32x32 = vp9_sub_pixel_avg_variance32x32_avx2;
|
||||
vp9_sub_pixel_avg_variance32x64 = vp9_sub_pixel_avg_variance32x64_c;
|
||||
if (flags & HAS_SSE2) vp9_sub_pixel_avg_variance32x64 = vp9_sub_pixel_avg_variance32x64_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_avg_variance32x64 = vp9_sub_pixel_avg_variance32x64_ssse3;
|
||||
@ -1167,6 +1199,7 @@ static void setup_rtcd_internal(void)
|
||||
vp9_sub_pixel_avg_variance64x64 = vp9_sub_pixel_avg_variance64x64_c;
|
||||
if (flags & HAS_SSE2) vp9_sub_pixel_avg_variance64x64 = vp9_sub_pixel_avg_variance64x64_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_avg_variance64x64 = vp9_sub_pixel_avg_variance64x64_ssse3;
|
||||
if (flags & HAS_AVX2) vp9_sub_pixel_avg_variance64x64 = vp9_sub_pixel_avg_variance64x64_avx2;
|
||||
vp9_sub_pixel_avg_variance8x16 = vp9_sub_pixel_avg_variance8x16_c;
|
||||
if (flags & HAS_SSE2) vp9_sub_pixel_avg_variance8x16 = vp9_sub_pixel_avg_variance8x16_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_avg_variance8x16 = vp9_sub_pixel_avg_variance8x16_ssse3;
|
||||
@ -1191,6 +1224,7 @@ static void setup_rtcd_internal(void)
|
||||
vp9_sub_pixel_variance32x32 = vp9_sub_pixel_variance32x32_c;
|
||||
if (flags & HAS_SSE2) vp9_sub_pixel_variance32x32 = vp9_sub_pixel_variance32x32_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_variance32x32 = vp9_sub_pixel_variance32x32_ssse3;
|
||||
if (flags & HAS_AVX2) vp9_sub_pixel_variance32x32 = vp9_sub_pixel_variance32x32_avx2;
|
||||
vp9_sub_pixel_variance32x64 = vp9_sub_pixel_variance32x64_c;
|
||||
if (flags & HAS_SSE2) vp9_sub_pixel_variance32x64 = vp9_sub_pixel_variance32x64_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_variance32x64 = vp9_sub_pixel_variance32x64_ssse3;
|
||||
@ -1206,6 +1240,7 @@ static void setup_rtcd_internal(void)
|
||||
vp9_sub_pixel_variance64x64 = vp9_sub_pixel_variance64x64_c;
|
||||
if (flags & HAS_SSE2) vp9_sub_pixel_variance64x64 = vp9_sub_pixel_variance64x64_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_variance64x64 = vp9_sub_pixel_variance64x64_ssse3;
|
||||
if (flags & HAS_AVX2) vp9_sub_pixel_variance64x64 = vp9_sub_pixel_variance64x64_avx2;
|
||||
vp9_sub_pixel_variance8x16 = vp9_sub_pixel_variance8x16_c;
|
||||
if (flags & HAS_SSE2) vp9_sub_pixel_variance8x16 = vp9_sub_pixel_variance8x16_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_variance8x16 = vp9_sub_pixel_variance8x16_ssse3;
|
||||
@ -1235,14 +1270,17 @@ static void setup_rtcd_internal(void)
|
||||
if (flags & HAS_SSE) vp9_v_predictor_8x8 = vp9_v_predictor_8x8_sse;
|
||||
vp9_variance16x16 = vp9_variance16x16_c;
|
||||
if (flags & HAS_SSE2) vp9_variance16x16 = vp9_variance16x16_sse2;
|
||||
if (flags & HAS_AVX2) vp9_variance16x16 = vp9_variance16x16_avx2;
|
||||
vp9_variance16x32 = vp9_variance16x32_c;
|
||||
if (flags & HAS_SSE2) vp9_variance16x32 = vp9_variance16x32_sse2;
|
||||
vp9_variance16x8 = vp9_variance16x8_c;
|
||||
if (flags & HAS_SSE2) vp9_variance16x8 = vp9_variance16x8_sse2;
|
||||
vp9_variance32x16 = vp9_variance32x16_c;
|
||||
if (flags & HAS_SSE2) vp9_variance32x16 = vp9_variance32x16_sse2;
|
||||
if (flags & HAS_AVX2) vp9_variance32x16 = vp9_variance32x16_avx2;
|
||||
vp9_variance32x32 = vp9_variance32x32_c;
|
||||
if (flags & HAS_SSE2) vp9_variance32x32 = vp9_variance32x32_sse2;
|
||||
if (flags & HAS_AVX2) vp9_variance32x32 = vp9_variance32x32_avx2;
|
||||
vp9_variance32x64 = vp9_variance32x64_c;
|
||||
if (flags & HAS_SSE2) vp9_variance32x64 = vp9_variance32x64_sse2;
|
||||
vp9_variance4x4 = vp9_variance4x4_c;
|
||||
@ -1251,8 +1289,10 @@ static void setup_rtcd_internal(void)
|
||||
if (flags & HAS_SSE2) vp9_variance4x8 = vp9_variance4x8_sse2;
|
||||
vp9_variance64x32 = vp9_variance64x32_c;
|
||||
if (flags & HAS_SSE2) vp9_variance64x32 = vp9_variance64x32_sse2;
|
||||
if (flags & HAS_AVX2) vp9_variance64x32 = vp9_variance64x32_avx2;
|
||||
vp9_variance64x64 = vp9_variance64x64_c;
|
||||
if (flags & HAS_SSE2) vp9_variance64x64 = vp9_variance64x64_sse2;
|
||||
if (flags & HAS_AVX2) vp9_variance64x64 = vp9_variance64x64_avx2;
|
||||
vp9_variance8x16 = vp9_variance8x16_c;
|
||||
if (flags & HAS_SSE2) vp9_variance8x16 = vp9_variance8x16_sse2;
|
||||
vp9_variance8x4 = vp9_variance8x4_c;
|
@ -31,11 +31,13 @@ extern "C" {
|
||||
|
||||
int64_t vp9_block_error_c(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
|
||||
int64_t vp9_block_error_sse2(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
|
||||
#define vp9_block_error vp9_block_error_sse2
|
||||
int64_t vp9_block_error_avx2(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
|
||||
RTCD_EXTERN int64_t (*vp9_block_error)(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
|
||||
|
||||
void vp9_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
void vp9_convolve8_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
void vp9_convolve8_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
void vp9_convolve8_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
RTCD_EXTERN void (*vp9_convolve8)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
|
||||
void vp9_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
@ -56,11 +58,13 @@ RTCD_EXTERN void (*vp9_convolve8_avg_vert)(const uint8_t *src, ptrdiff_t src_str
|
||||
void vp9_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
void vp9_convolve8_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
void vp9_convolve8_horiz_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
void vp9_convolve8_horiz_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
RTCD_EXTERN void (*vp9_convolve8_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
|
||||
void vp9_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
void vp9_convolve8_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
void vp9_convolve8_vert_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
void vp9_convolve8_vert_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
RTCD_EXTERN void (*vp9_convolve8_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
|
||||
void vp9_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
|
||||
@ -223,7 +227,8 @@ void vp9_fdct16x16_1_sse2(const int16_t *input, tran_low_t *output, int stride);
|
||||
|
||||
void vp9_fdct32x32_c(const int16_t *input, tran_low_t *output, int stride);
|
||||
void vp9_fdct32x32_sse2(const int16_t *input, tran_low_t *output, int stride);
|
||||
#define vp9_fdct32x32 vp9_fdct32x32_sse2
|
||||
void vp9_fdct32x32_avx2(const int16_t *input, tran_low_t *output, int stride);
|
||||
RTCD_EXTERN void (*vp9_fdct32x32)(const int16_t *input, tran_low_t *output, int stride);
|
||||
|
||||
void vp9_fdct32x32_1_c(const int16_t *input, tran_low_t *output, int stride);
|
||||
void vp9_fdct32x32_1_sse2(const int16_t *input, tran_low_t *output, int stride);
|
||||
@ -231,7 +236,8 @@ void vp9_fdct32x32_1_sse2(const int16_t *input, tran_low_t *output, int stride);
|
||||
|
||||
void vp9_fdct32x32_rd_c(const int16_t *input, tran_low_t *output, int stride);
|
||||
void vp9_fdct32x32_rd_sse2(const int16_t *input, tran_low_t *output, int stride);
|
||||
#define vp9_fdct32x32_rd vp9_fdct32x32_rd_sse2
|
||||
void vp9_fdct32x32_rd_avx2(const int16_t *input, tran_low_t *output, int stride);
|
||||
RTCD_EXTERN void (*vp9_fdct32x32_rd)(const int16_t *input, tran_low_t *output, int stride);
|
||||
|
||||
void vp9_fdct4x4_c(const int16_t *input, tran_low_t *output, int stride);
|
||||
void vp9_fdct4x4_sse2(const int16_t *input, tran_low_t *output, int stride);
|
||||
@ -276,7 +282,8 @@ void vp9_fwht4x4_mmx(const int16_t *input, tran_low_t *output, int stride);
|
||||
|
||||
void vp9_get16x16var_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
|
||||
void vp9_get16x16var_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
|
||||
#define vp9_get16x16var vp9_get16x16var_sse2
|
||||
void vp9_get16x16var_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
|
||||
RTCD_EXTERN void (*vp9_get16x16var)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
|
||||
|
||||
void vp9_get8x8var_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
|
||||
void vp9_get8x8var_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
|
||||
@ -370,7 +377,8 @@ void vp9_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride
|
||||
|
||||
void vp9_lpf_horizontal_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
|
||||
void vp9_lpf_horizontal_16_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
|
||||
#define vp9_lpf_horizontal_16 vp9_lpf_horizontal_16_sse2
|
||||
void vp9_lpf_horizontal_16_avx2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
|
||||
RTCD_EXTERN void (*vp9_lpf_horizontal_16)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
|
||||
|
||||
void vp9_lpf_horizontal_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
|
||||
void vp9_lpf_horizontal_4_mmx(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
|
||||
@ -414,7 +422,8 @@ void vp9_lpf_vertical_8_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit0,
|
||||
|
||||
unsigned int vp9_mse16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
|
||||
unsigned int vp9_mse16x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
|
||||
#define vp9_mse16x16 vp9_mse16x16_sse2
|
||||
unsigned int vp9_mse16x16_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp9_mse16x16)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp9_mse16x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
|
||||
unsigned int vp9_mse16x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
|
||||
@ -524,7 +533,8 @@ void vp9_sad32x32x3_c(const uint8_t *src_ptr, int source_stride, const uint8_t *
|
||||
|
||||
void vp9_sad32x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp9_sad32x32x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
#define vp9_sad32x32x4d vp9_sad32x32x4d_sse2
|
||||
void vp9_sad32x32x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp9_sad32x32x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp9_sad32x32x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
|
||||
#define vp9_sad32x32x8 vp9_sad32x32x8_c
|
||||
@ -600,7 +610,8 @@ void vp9_sad64x64x3_c(const uint8_t *src_ptr, int source_stride, const uint8_t *
|
||||
|
||||
void vp9_sad64x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp9_sad64x64x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
#define vp9_sad64x64x4d vp9_sad64x64x4d_sse2
|
||||
void vp9_sad64x64x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp9_sad64x64x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp9_sad64x64x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
|
||||
#define vp9_sad64x64x8 vp9_sad64x64x8_c
|
||||
@ -681,6 +692,7 @@ RTCD_EXTERN unsigned int (*vp9_sub_pixel_avg_variance32x16)(const uint8_t *src_p
|
||||
unsigned int vp9_sub_pixel_avg_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
unsigned int vp9_sub_pixel_avg_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
unsigned int vp9_sub_pixel_avg_variance32x32_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
unsigned int vp9_sub_pixel_avg_variance32x32_avx2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
RTCD_EXTERN unsigned int (*vp9_sub_pixel_avg_variance32x32)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
|
||||
unsigned int vp9_sub_pixel_avg_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
@ -706,6 +718,7 @@ RTCD_EXTERN unsigned int (*vp9_sub_pixel_avg_variance64x32)(const uint8_t *src_p
|
||||
unsigned int vp9_sub_pixel_avg_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
unsigned int vp9_sub_pixel_avg_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
unsigned int vp9_sub_pixel_avg_variance64x64_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
unsigned int vp9_sub_pixel_avg_variance64x64_avx2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
RTCD_EXTERN unsigned int (*vp9_sub_pixel_avg_variance64x64)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
|
||||
unsigned int vp9_sub_pixel_avg_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
@ -746,6 +759,7 @@ RTCD_EXTERN unsigned int (*vp9_sub_pixel_variance32x16)(const uint8_t *src_ptr,
|
||||
unsigned int vp9_sub_pixel_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_sub_pixel_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_sub_pixel_variance32x32_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_sub_pixel_variance32x32_avx2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp9_sub_pixel_variance32x32)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp9_sub_pixel_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
@ -771,6 +785,7 @@ RTCD_EXTERN unsigned int (*vp9_sub_pixel_variance64x32)(const uint8_t *src_ptr,
|
||||
unsigned int vp9_sub_pixel_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_sub_pixel_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_sub_pixel_variance64x64_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_sub_pixel_variance64x64_avx2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp9_sub_pixel_variance64x64)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp9_sub_pixel_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
@ -830,7 +845,8 @@ void vp9_v_predictor_8x8_sse(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *ab
|
||||
|
||||
unsigned int vp9_variance16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_variance16x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp9_variance16x16 vp9_variance16x16_sse2
|
||||
unsigned int vp9_variance16x16_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp9_variance16x16)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp9_variance16x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_variance16x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
@ -842,11 +858,13 @@ unsigned int vp9_variance16x8_sse2(const uint8_t *src_ptr, int source_stride, co
|
||||
|
||||
unsigned int vp9_variance32x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_variance32x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp9_variance32x16 vp9_variance32x16_sse2
|
||||
unsigned int vp9_variance32x16_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp9_variance32x16)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp9_variance32x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp9_variance32x32 vp9_variance32x32_sse2
|
||||
unsigned int vp9_variance32x32_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp9_variance32x32)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp9_variance32x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_variance32x64_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
@ -862,11 +880,13 @@ unsigned int vp9_variance4x8_sse2(const uint8_t *src_ptr, int source_stride, con
|
||||
|
||||
unsigned int vp9_variance64x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_variance64x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp9_variance64x32 vp9_variance64x32_sse2
|
||||
unsigned int vp9_variance64x32_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp9_variance64x32)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp9_variance64x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp9_variance64x64 vp9_variance64x64_sse2
|
||||
unsigned int vp9_variance64x64_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp9_variance64x64)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp9_variance8x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp9_variance8x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
@ -890,8 +910,11 @@ static void setup_rtcd_internal(void)
|
||||
|
||||
(void)flags;
|
||||
|
||||
vp9_block_error = vp9_block_error_sse2;
|
||||
if (flags & HAS_AVX2) vp9_block_error = vp9_block_error_avx2;
|
||||
vp9_convolve8 = vp9_convolve8_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_convolve8 = vp9_convolve8_ssse3;
|
||||
if (flags & HAS_AVX2) vp9_convolve8 = vp9_convolve8_avx2;
|
||||
vp9_convolve8_avg = vp9_convolve8_avg_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_convolve8_avg = vp9_convolve8_avg_ssse3;
|
||||
vp9_convolve8_avg_horiz = vp9_convolve8_avg_horiz_sse2;
|
||||
@ -900,8 +923,10 @@ static void setup_rtcd_internal(void)
|
||||
if (flags & HAS_SSSE3) vp9_convolve8_avg_vert = vp9_convolve8_avg_vert_ssse3;
|
||||
vp9_convolve8_horiz = vp9_convolve8_horiz_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_convolve8_horiz = vp9_convolve8_horiz_ssse3;
|
||||
if (flags & HAS_AVX2) vp9_convolve8_horiz = vp9_convolve8_horiz_avx2;
|
||||
vp9_convolve8_vert = vp9_convolve8_vert_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_convolve8_vert = vp9_convolve8_vert_ssse3;
|
||||
if (flags & HAS_AVX2) vp9_convolve8_vert = vp9_convolve8_vert_avx2;
|
||||
vp9_d153_predictor_16x16 = vp9_d153_predictor_16x16_c;
|
||||
if (flags & HAS_SSSE3) vp9_d153_predictor_16x16 = vp9_d153_predictor_16x16_ssse3;
|
||||
vp9_d153_predictor_4x4 = vp9_d153_predictor_4x4_c;
|
||||
@ -932,11 +957,17 @@ static void setup_rtcd_internal(void)
|
||||
if (flags & HAS_SSSE3) vp9_d63_predictor_4x4 = vp9_d63_predictor_4x4_ssse3;
|
||||
vp9_d63_predictor_8x8 = vp9_d63_predictor_8x8_c;
|
||||
if (flags & HAS_SSSE3) vp9_d63_predictor_8x8 = vp9_d63_predictor_8x8_ssse3;
|
||||
vp9_fdct32x32 = vp9_fdct32x32_sse2;
|
||||
if (flags & HAS_AVX2) vp9_fdct32x32 = vp9_fdct32x32_avx2;
|
||||
vp9_fdct32x32_rd = vp9_fdct32x32_rd_sse2;
|
||||
if (flags & HAS_AVX2) vp9_fdct32x32_rd = vp9_fdct32x32_rd_avx2;
|
||||
vp9_fdct8x8 = vp9_fdct8x8_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_fdct8x8 = vp9_fdct8x8_ssse3;
|
||||
vp9_full_search_sad = vp9_full_search_sad_c;
|
||||
if (flags & HAS_SSE3) vp9_full_search_sad = vp9_full_search_sadx3;
|
||||
if (flags & HAS_SSE4_1) vp9_full_search_sad = vp9_full_search_sadx8;
|
||||
vp9_get16x16var = vp9_get16x16var_sse2;
|
||||
if (flags & HAS_AVX2) vp9_get16x16var = vp9_get16x16var_avx2;
|
||||
vp9_h_predictor_16x16 = vp9_h_predictor_16x16_c;
|
||||
if (flags & HAS_SSSE3) vp9_h_predictor_16x16 = vp9_h_predictor_16x16_ssse3;
|
||||
vp9_h_predictor_32x32 = vp9_h_predictor_32x32_c;
|
||||
@ -953,6 +984,10 @@ static void setup_rtcd_internal(void)
|
||||
if (flags & HAS_SSSE3) vp9_idct8x8_12_add = vp9_idct8x8_12_add_ssse3;
|
||||
vp9_idct8x8_64_add = vp9_idct8x8_64_add_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_idct8x8_64_add = vp9_idct8x8_64_add_ssse3;
|
||||
vp9_lpf_horizontal_16 = vp9_lpf_horizontal_16_sse2;
|
||||
if (flags & HAS_AVX2) vp9_lpf_horizontal_16 = vp9_lpf_horizontal_16_avx2;
|
||||
vp9_mse16x16 = vp9_mse16x16_sse2;
|
||||
if (flags & HAS_AVX2) vp9_mse16x16 = vp9_mse16x16_avx2;
|
||||
vp9_quantize_b = vp9_quantize_b_c;
|
||||
if (flags & HAS_SSSE3) vp9_quantize_b = vp9_quantize_b_ssse3;
|
||||
vp9_quantize_b_32x32 = vp9_quantize_b_32x32_c;
|
||||
@ -967,8 +1002,12 @@ static void setup_rtcd_internal(void)
|
||||
vp9_sad16x8x3 = vp9_sad16x8x3_c;
|
||||
if (flags & HAS_SSE3) vp9_sad16x8x3 = vp9_sad16x8x3_sse3;
|
||||
if (flags & HAS_SSSE3) vp9_sad16x8x3 = vp9_sad16x8x3_ssse3;
|
||||
vp9_sad32x32x4d = vp9_sad32x32x4d_sse2;
|
||||
if (flags & HAS_AVX2) vp9_sad32x32x4d = vp9_sad32x32x4d_avx2;
|
||||
vp9_sad4x4x3 = vp9_sad4x4x3_c;
|
||||
if (flags & HAS_SSE3) vp9_sad4x4x3 = vp9_sad4x4x3_sse3;
|
||||
vp9_sad64x64x4d = vp9_sad64x64x4d_sse2;
|
||||
if (flags & HAS_AVX2) vp9_sad64x64x4d = vp9_sad64x64x4d_avx2;
|
||||
vp9_sad8x16x3 = vp9_sad8x16x3_c;
|
||||
if (flags & HAS_SSE3) vp9_sad8x16x3 = vp9_sad8x16x3_sse3;
|
||||
vp9_sad8x8x3 = vp9_sad8x8x3_c;
|
||||
@ -983,6 +1022,7 @@ static void setup_rtcd_internal(void)
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_avg_variance32x16 = vp9_sub_pixel_avg_variance32x16_ssse3;
|
||||
vp9_sub_pixel_avg_variance32x32 = vp9_sub_pixel_avg_variance32x32_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_avg_variance32x32 = vp9_sub_pixel_avg_variance32x32_ssse3;
|
||||
if (flags & HAS_AVX2) vp9_sub_pixel_avg_variance32x32 = vp9_sub_pixel_avg_variance32x32_avx2;
|
||||
vp9_sub_pixel_avg_variance32x64 = vp9_sub_pixel_avg_variance32x64_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_avg_variance32x64 = vp9_sub_pixel_avg_variance32x64_ssse3;
|
||||
vp9_sub_pixel_avg_variance4x4 = vp9_sub_pixel_avg_variance4x4_sse;
|
||||
@ -993,6 +1033,7 @@ static void setup_rtcd_internal(void)
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_avg_variance64x32 = vp9_sub_pixel_avg_variance64x32_ssse3;
|
||||
vp9_sub_pixel_avg_variance64x64 = vp9_sub_pixel_avg_variance64x64_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_avg_variance64x64 = vp9_sub_pixel_avg_variance64x64_ssse3;
|
||||
if (flags & HAS_AVX2) vp9_sub_pixel_avg_variance64x64 = vp9_sub_pixel_avg_variance64x64_avx2;
|
||||
vp9_sub_pixel_avg_variance8x16 = vp9_sub_pixel_avg_variance8x16_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_avg_variance8x16 = vp9_sub_pixel_avg_variance8x16_ssse3;
|
||||
vp9_sub_pixel_avg_variance8x4 = vp9_sub_pixel_avg_variance8x4_sse2;
|
||||
@ -1009,6 +1050,7 @@ static void setup_rtcd_internal(void)
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_variance32x16 = vp9_sub_pixel_variance32x16_ssse3;
|
||||
vp9_sub_pixel_variance32x32 = vp9_sub_pixel_variance32x32_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_variance32x32 = vp9_sub_pixel_variance32x32_ssse3;
|
||||
if (flags & HAS_AVX2) vp9_sub_pixel_variance32x32 = vp9_sub_pixel_variance32x32_avx2;
|
||||
vp9_sub_pixel_variance32x64 = vp9_sub_pixel_variance32x64_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_variance32x64 = vp9_sub_pixel_variance32x64_ssse3;
|
||||
vp9_sub_pixel_variance4x4 = vp9_sub_pixel_variance4x4_sse;
|
||||
@ -1019,12 +1061,23 @@ static void setup_rtcd_internal(void)
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_variance64x32 = vp9_sub_pixel_variance64x32_ssse3;
|
||||
vp9_sub_pixel_variance64x64 = vp9_sub_pixel_variance64x64_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_variance64x64 = vp9_sub_pixel_variance64x64_ssse3;
|
||||
if (flags & HAS_AVX2) vp9_sub_pixel_variance64x64 = vp9_sub_pixel_variance64x64_avx2;
|
||||
vp9_sub_pixel_variance8x16 = vp9_sub_pixel_variance8x16_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_variance8x16 = vp9_sub_pixel_variance8x16_ssse3;
|
||||
vp9_sub_pixel_variance8x4 = vp9_sub_pixel_variance8x4_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_variance8x4 = vp9_sub_pixel_variance8x4_ssse3;
|
||||
vp9_sub_pixel_variance8x8 = vp9_sub_pixel_variance8x8_sse2;
|
||||
if (flags & HAS_SSSE3) vp9_sub_pixel_variance8x8 = vp9_sub_pixel_variance8x8_ssse3;
|
||||
vp9_variance16x16 = vp9_variance16x16_sse2;
|
||||
if (flags & HAS_AVX2) vp9_variance16x16 = vp9_variance16x16_avx2;
|
||||
vp9_variance32x16 = vp9_variance32x16_sse2;
|
||||
if (flags & HAS_AVX2) vp9_variance32x16 = vp9_variance32x16_avx2;
|
||||
vp9_variance32x32 = vp9_variance32x32_sse2;
|
||||
if (flags & HAS_AVX2) vp9_variance32x32 = vp9_variance32x32_avx2;
|
||||
vp9_variance64x32 = vp9_variance64x32_sse2;
|
||||
if (flags & HAS_AVX2) vp9_variance64x32 = vp9_variance64x32_avx2;
|
||||
vp9_variance64x64 = vp9_variance64x64_sse2;
|
||||
if (flags & HAS_AVX2) vp9_variance64x64 = vp9_variance64x64_avx2;
|
||||
}
|
||||
#endif
|
||||
|
@ -7,7 +7,7 @@
|
||||
%elifidn __OUTPUT_FORMAT__,macho64
|
||||
%include "vpx_config_x86_64-darwin9-gcc.asm"
|
||||
%elifidn __OUTPUT_FORMAT__,win32
|
||||
%include "vpx_config_x86-win32-vs8.asm"
|
||||
%include "vpx_config_x86-win32-vs12.asm"
|
||||
%elifidn __OUTPUT_FORMAT__,x64
|
||||
%include "vpx_config_x86_64-win64-vs8.asm"
|
||||
%include "vpx_config_x86_64-win64-vs12.asm"
|
||||
%endif
|
||||
|
@ -3,7 +3,7 @@
|
||||
#if defined(_WIN64)
|
||||
/* 64 bit Windows */
|
||||
#ifdef _MSC_VER
|
||||
#include "vpx_config_x86_64-win64-vs8.h"
|
||||
#include "vpx_config_x86_64-win64-vs12.h"
|
||||
#else
|
||||
#include "vpx_config_x86_64-win64-gcc.h"
|
||||
#endif
|
||||
@ -11,7 +11,7 @@
|
||||
#elif defined(_WIN32)
|
||||
/* 32 bit Windows, MSVC. */
|
||||
#ifdef _MSC_VER
|
||||
#include "vpx_config_x86-win32-vs8.h"
|
||||
#include "vpx_config_x86-win32-vs12.h"
|
||||
#else
|
||||
#include "vpx_config_x86-win32-gcc.h"
|
||||
#endif
|
||||
|
@ -17,8 +17,8 @@ HAVE_SSE2 equ 1
|
||||
HAVE_SSE3 equ 1
|
||||
HAVE_SSSE3 equ 1
|
||||
HAVE_SSE4_1 equ 1
|
||||
HAVE_AVX equ 0
|
||||
HAVE_AVX2 equ 0
|
||||
HAVE_AVX equ 1
|
||||
HAVE_AVX2 equ 1
|
||||
HAVE_ALTIVEC equ 0
|
||||
HAVE_VPX_PORTS equ 1
|
||||
HAVE_STDINT_H equ 0
|
@ -29,8 +29,8 @@
|
||||
#define HAVE_SSE3 1
|
||||
#define HAVE_SSSE3 1
|
||||
#define HAVE_SSE4_1 1
|
||||
#define HAVE_AVX 0
|
||||
#define HAVE_AVX2 0
|
||||
#define HAVE_AVX 1
|
||||
#define HAVE_AVX2 1
|
||||
#define HAVE_ALTIVEC 0
|
||||
#define HAVE_VPX_PORTS 1
|
||||
#define HAVE_STDINT_H 0
|
@ -17,8 +17,8 @@ HAVE_SSE2 equ 1
|
||||
HAVE_SSE3 equ 1
|
||||
HAVE_SSSE3 equ 1
|
||||
HAVE_SSE4_1 equ 1
|
||||
HAVE_AVX equ 0
|
||||
HAVE_AVX2 equ 0
|
||||
HAVE_AVX equ 1
|
||||
HAVE_AVX2 equ 1
|
||||
HAVE_ALTIVEC equ 0
|
||||
HAVE_VPX_PORTS equ 1
|
||||
HAVE_STDINT_H equ 0
|
@ -29,8 +29,8 @@
|
||||
#define HAVE_SSE3 1
|
||||
#define HAVE_SSSE3 1
|
||||
#define HAVE_SSE4_1 1
|
||||
#define HAVE_AVX 0
|
||||
#define HAVE_AVX2 0
|
||||
#define HAVE_AVX 1
|
||||
#define HAVE_AVX2 1
|
||||
#define HAVE_ALTIVEC 0
|
||||
#define HAVE_VPX_PORTS 1
|
||||
#define HAVE_STDINT_H 0
|
@ -9,7 +9,7 @@
|
||||
#if defined(_WIN64)
|
||||
/* 64 bit Windows */
|
||||
#ifdef _MSC_VER
|
||||
#include "vpx_scale_rtcd_x86_64-win64-vs8.h"
|
||||
#include "vpx_scale_rtcd_x86_64-win64-vs12.h"
|
||||
#else
|
||||
#include "vpx_scale_rtcd_x86_64-win64-gcc.h"
|
||||
#endif
|
||||
@ -17,7 +17,7 @@
|
||||
#elif defined(_WIN32)
|
||||
/* 32 bit Windows, MSVC. */
|
||||
#ifdef _MSC_VER
|
||||
#include "vpx_scale_rtcd_x86-win32-vs8.h"
|
||||
#include "vpx_scale_rtcd_x86-win32-vs12.h"
|
||||
#else
|
||||
#include "vpx_scale_rtcd_x86-win32-gcc.h"
|
||||
#endif
|
||||
|
@ -1107,7 +1107,8 @@ WebrtcVideoConduit::SendVideoFrame(unsigned char* video_frame,
|
||||
MediaConduitErrorCode
|
||||
WebrtcVideoConduit::ReceivedRTPPacket(const void *data, int len)
|
||||
{
|
||||
CSFLogDebug(logTag, "%s: Channel %d, Len %d ", __FUNCTION__, mChannel, len);
|
||||
CSFLogDebug(logTag, "%s: seq# %u, Channel %d, Len %d ", __FUNCTION__,
|
||||
(uint16_t) ntohs(((uint16_t*) data)[1]), mChannel, len);
|
||||
|
||||
// Media Engine should be receiving already.
|
||||
if(mEngineReceiving)
|
||||
|
@ -18,14 +18,16 @@
|
||||
namespace webrtc {
|
||||
namespace {
|
||||
|
||||
enum Nalu {
|
||||
kSlice = 1,
|
||||
kIdr = 5,
|
||||
kSei = 6,
|
||||
kSps = 7,
|
||||
kPps = 8,
|
||||
kStapA = 24,
|
||||
kFuA = 28
|
||||
enum Nalu { // 0-23 from H.264, 24-31 from RFC 6184
|
||||
kSlice = 1, // I/P/B slice
|
||||
kIdr = 5, // IDR slice
|
||||
kSei = 6, // Supplementary Enhancement Info
|
||||
kSeiRecPt = 6, // Recovery Point SEI Payload
|
||||
kSps = 7, // Sequence Parameter Set
|
||||
kPps = 8, // Picture Parameter Set
|
||||
kPrefix = 14, // Prefix
|
||||
kStapA = 24, // Single-Time Aggregation Packet Type A
|
||||
kFuA = 28 // Fragmentation Unit Type A
|
||||
};
|
||||
|
||||
static const size_t kNalHeaderSize = 1;
|
||||
@ -51,14 +53,38 @@ void ParseSingleNalu(RtpDepacketizer::ParsedPayload* parsed_payload,
|
||||
h264_header->stap_a = false;
|
||||
|
||||
uint8_t nal_type = payload_data[0] & kTypeMask;
|
||||
size_t offset = 0;
|
||||
if (nal_type == kStapA) {
|
||||
nal_type = payload_data[3] & kTypeMask;
|
||||
offset = 3;
|
||||
if (offset >= payload_data_length) {
|
||||
return; // XXX malformed
|
||||
}
|
||||
nal_type = payload_data[offset] & kTypeMask;
|
||||
h264_header->stap_a = true;
|
||||
}
|
||||
|
||||
// key frames start with SPS, PPS, IDR, or Recovery Point SEI
|
||||
// Recovery Point SEI's are used in AIR and GDR refreshes, which don't
|
||||
// send large iframes, and instead use forms of incremental/continuous refresh.
|
||||
switch (nal_type) {
|
||||
case kSei: // check if it is a Recovery Point SEI (aka GDR)
|
||||
if (offset+1 >= payload_data_length) {
|
||||
return; // XXX malformed
|
||||
}
|
||||
if (payload_data[offset+1] != kSeiRecPt) {
|
||||
parsed_payload->frame_type = kVideoFrameDelta;
|
||||
break; // some other form of SEI - not a keyframe
|
||||
}
|
||||
// else fall through since GDR is like IDR
|
||||
case kSps:
|
||||
case kPps:
|
||||
// These are always combined with other packets with the same timestamp...
|
||||
// XXX To support 'solitary' SPS/PPS/etc, either fix the jitter buffer to
|
||||
// accept multiple sessions with the same timestamp, or pass marker info
|
||||
// down into here (SPS/PPS as a pair without an kIdr NALU would still be
|
||||
// painful, but might work).
|
||||
h264_header->single_nalu = false;
|
||||
// fall through...
|
||||
case kIdr:
|
||||
parsed_payload->frame_type = kVideoFrameKey;
|
||||
break;
|
||||
|
@ -464,12 +464,23 @@ int VCMSessionInfo::InsertPacket(const VCMPacket& packet,
|
||||
return -2;
|
||||
|
||||
if (packet.codec == kVideoCodecH264) {
|
||||
frame_type_ = packet.frameType;
|
||||
// H.264 can have leading or trailing non-VCL (Video Coding Layer)
|
||||
// NALUs, such as SPS/PPS/SEI and others. Also, the RTP marker bit is
|
||||
// not reliable for the last packet of a frame (RFC 6184 5.1 - "Decoders
|
||||
// [] MUST NOT rely on this property"), so allow out-of-order packets to
|
||||
// update the first and last seq# range. Also mark as a key frame if
|
||||
// any packet is of that type.
|
||||
if (frame_type_ != kVideoFrameKey) {
|
||||
frame_type_ = packet.frameType;
|
||||
}
|
||||
if (packet.isFirstPacket &&
|
||||
(first_packet_seq_num_ == -1 ||
|
||||
IsNewerSequenceNumber(first_packet_seq_num_, packet.seqNum))) {
|
||||
first_packet_seq_num_ = packet.seqNum;
|
||||
}
|
||||
// Note: the code does *not* currently handle the Marker bit being totally
|
||||
// absent from a frame. It does not, however, depend on it being on the last
|
||||
// packet of the 'frame'/'session'.
|
||||
if (packet.markerBit &&
|
||||
(last_packet_seq_num_ == -1 ||
|
||||
IsNewerSequenceNumber(packet.seqNum, last_packet_seq_num_))) {
|
||||
@ -513,6 +524,9 @@ int VCMSessionInfo::InsertPacket(const VCMPacket& packet,
|
||||
|
||||
int returnLength = InsertBuffer(frame_buffer, packet_list_it);
|
||||
UpdateCompleteSession();
|
||||
// We call MakeDecodable() before decoding, which removes packets after a loss
|
||||
// (and which means h.264 mode 1 frames with a loss in the first packet will be
|
||||
// totally removed)
|
||||
if (decode_error_mode == kWithErrors)
|
||||
decodable_ = true;
|
||||
else if (decode_error_mode == kSelectiveErrors)
|
||||
|
@ -210,6 +210,12 @@
|
||||
"n_buckets": 50,
|
||||
"description": "Time spent on one asynchronous SnowWhite freeing (ms)"
|
||||
},
|
||||
"DEVICE_RESET_REASON": {
|
||||
"expires_in_version": "never",
|
||||
"kind": "enumerated",
|
||||
"n_values": 10,
|
||||
"description": "GPU Device Reset Reason (ok, hung, removed, reset, internal error, invalid call)"
|
||||
},
|
||||
"FORGET_SKIPPABLE_MAX": {
|
||||
"expires_in_version": "never",
|
||||
"kind": "exponential",
|
||||
|
@ -181,21 +181,24 @@ nsBaseWidget::Shutdown()
|
||||
mShutdownObserver = nullptr;
|
||||
}
|
||||
|
||||
static void DeferredDestroyCompositor(CompositorParent* aCompositorParent,
|
||||
CompositorChild* aCompositorChild)
|
||||
static void DeferredDestroyCompositor(nsRefPtr<CompositorParent> aCompositorParent,
|
||||
nsRefPtr<CompositorChild> aCompositorChild)
|
||||
{
|
||||
// Bug 848949 needs to be fixed before
|
||||
// we can close the channel properly
|
||||
//aCompositorChild->Close();
|
||||
aCompositorParent->Release();
|
||||
aCompositorChild->Release();
|
||||
}
|
||||
|
||||
void nsBaseWidget::DestroyCompositor()
|
||||
{
|
||||
if (mCompositorChild) {
|
||||
mCompositorChild->SendWillStop();
|
||||
mCompositorChild->Destroy();
|
||||
nsRefPtr<CompositorChild> compositorChild = mCompositorChild.forget();
|
||||
nsRefPtr<CompositorParent> compositorParent = mCompositorParent.forget();
|
||||
|
||||
compositorChild->SendWillStop();
|
||||
// New LayerManager, CompositorParent and CompositorChild might be created
|
||||
// as a result of internal GetLayerManager() call.
|
||||
compositorChild->Destroy();
|
||||
|
||||
// The call just made to SendWillStop can result in IPC from the
|
||||
// CompositorParent to the CompositorChild (e.g. caused by the destruction
|
||||
@ -204,13 +207,12 @@ void nsBaseWidget::DestroyCompositor()
|
||||
// events already in the MessageLoop get processed before the
|
||||
// CompositorChild is destroyed, so we add a task to the MessageLoop to
|
||||
// handle compositor desctruction.
|
||||
|
||||
// The DefferedDestroyCompositor task takes ownership of compositorParent and
|
||||
// will release them when it runs.
|
||||
MessageLoop::current()->PostTask(FROM_HERE,
|
||||
NewRunnableFunction(DeferredDestroyCompositor, mCompositorParent,
|
||||
mCompositorChild));
|
||||
// The DestroyCompositor task we just added to the MessageLoop will handle
|
||||
// releasing mCompositorParent and mCompositorChild.
|
||||
unused << mCompositorParent.forget();
|
||||
unused << mCompositorChild.forget();
|
||||
NewRunnableFunction(DeferredDestroyCompositor, compositorParent,
|
||||
compositorChild));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -55,7 +55,7 @@ var colors = {
|
||||
"-moz-buttondefault": ["rgb(220, 220, 220)"],
|
||||
"-moz-buttonhoverface": ["rgb(240, 240, 240)"],
|
||||
"-moz-buttonhovertext": ["rgb(0, 0, 0)"],
|
||||
"-moz-cellhighlight": ["rgb(212, 212, 212)"],
|
||||
"-moz-cellhighlight": ["rgb(212, 212, 212)", "rgb(220, 220, 220)"],
|
||||
"-moz-cellhighlighttext": ["rgb(0, 0, 0)"],
|
||||
"-moz-eventreerow": ["rgb(255, 255, 255)"],
|
||||
"-moz-field": ["rgb(255, 255, 255)"],
|
||||
|
Loading…
Reference in New Issue
Block a user