Merge mozilla-central to fx-team

This commit is contained in:
Carsten "Tomcat" Book 2015-02-23 13:41:24 +01:00
commit f633fa7bf2
62 changed files with 493 additions and 172 deletions

View 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;
}

View 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>

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"
}

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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">

View File

@ -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.

View File

@ -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">

View File

@ -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">

View File

@ -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();

View File

@ -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);

View File

@ -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();
}

View File

@ -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;
}
}

View File

@ -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

View File

@ -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);

View File

@ -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;
}
}
}

View File

@ -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

View File

@ -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());

View File

@ -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)
{ }

View File

@ -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_);

View File

@ -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);

View File

@ -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

View File

@ -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);
}
}
}

View 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>

View 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>

View File

@ -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

View 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&shy;se<br>ma&shy;ße
</div>
<div style="width:0px;">
MAS&shy;SE<br>MA&shy;SSE
</div>
<div style="width:0px;">
Mas&shy;se<br>Ma&shy;ße
</div>
</body>
</html>

View 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>

View File

@ -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

View File

@ -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

View File

@ -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',

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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;

View File

@ -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)

View File

@ -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",

View File

@ -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));
}
}

View File

@ -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)"],