Bug 1617808 - Re-deliver PREFER_COMPOSITOR_SURFACE flag to WebRender r=gw

Differential Revision: https://phabricator.services.mozilla.com/D64007

--HG--
extra : moz-landing-system : lando
This commit is contained in:
sotaro 2020-03-10 03:52:08 +00:00
parent fbbb775ffc
commit 2fd8ffcf08
20 changed files with 211 additions and 190 deletions

View File

@ -150,28 +150,28 @@ uint32_t GPUVideoTextureHost::NumSubTextures() {
void GPUVideoTextureHost::PushResourceUpdates(
wr::TransactionBuilder& aResources, ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys, const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) {
const Range<wr::ImageKey>& aImageKeys, const wr::ExternalImageId& aExtID) {
MOZ_ASSERT(EnsureWrappedTextureHost());
if (!EnsureWrappedTextureHost()) {
return;
}
EnsureWrappedTextureHost()->PushResourceUpdates(
aResources, aOp, aImageKeys, aExtID, aPreferCompositorSurface);
EnsureWrappedTextureHost()->PushResourceUpdates(aResources, aOp, aImageKeys,
aExtID);
}
void GPUVideoTextureHost::PushDisplayItems(
wr::DisplayListBuilder& aBuilder, const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip, wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) {
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) {
MOZ_ASSERT(EnsureWrappedTextureHost());
MOZ_ASSERT(aImageKeys.length() > 0);
if (!EnsureWrappedTextureHost()) {
return;
}
EnsureWrappedTextureHost()->PushDisplayItems(aBuilder, aBounds, aClip,
aFilter, aImageKeys);
EnsureWrappedTextureHost()->PushDisplayItems(
aBuilder, aBounds, aClip, aFilter, aImageKeys, aPreferCompositorSurface);
}
} // namespace layers

View File

@ -56,13 +56,13 @@ class GPUVideoTextureHost : public TextureHost {
void PushResourceUpdates(wr::TransactionBuilder& aResources,
ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys,
const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) override;
const wr::ExternalImageId& aExtID) override;
void PushDisplayItems(wr::DisplayListBuilder& aBuilder,
const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip, wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) override;
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) override;
protected:
GPUVideoTextureHost(TextureFlags aFlags,

View File

@ -613,8 +613,7 @@ uint32_t BufferTextureHost::NumSubTextures() {
void BufferTextureHost::PushResourceUpdates(
wr::TransactionBuilder& aResources, ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys, const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) {
const Range<wr::ImageKey>& aImageKeys, const wr::ExternalImageId& aExtID) {
auto method = aOp == TextureHost::ADD_IMAGE
? &wr::TransactionBuilder::AddExternalImage
: &wr::TransactionBuilder::UpdateExternalImage;
@ -626,7 +625,7 @@ void BufferTextureHost::PushResourceUpdates(
wr::ImageDescriptor descriptor(
GetSize(),
ImageDataSerializer::ComputeRGBStride(GetFormat(), GetSize().width),
GetFormat(), aPreferCompositorSurface);
GetFormat());
(aResources.*method)(aImageKeys[0], descriptor, aExtID, imageType, 0);
} else {
MOZ_ASSERT(aImageKeys.length() == 3);
@ -634,34 +633,37 @@ void BufferTextureHost::PushResourceUpdates(
const layers::YCbCrDescriptor& desc = mDescriptor.get_YCbCrDescriptor();
wr::ImageDescriptor yDescriptor(
desc.ySize(), desc.yStride(),
SurfaceFormatForColorDepth(desc.colorDepth()),
aPreferCompositorSurface);
SurfaceFormatForColorDepth(desc.colorDepth()));
wr::ImageDescriptor cbcrDescriptor(
desc.cbCrSize(), desc.cbCrStride(),
SurfaceFormatForColorDepth(desc.colorDepth()),
aPreferCompositorSurface);
SurfaceFormatForColorDepth(desc.colorDepth()));
(aResources.*method)(aImageKeys[0], yDescriptor, aExtID, imageType, 0);
(aResources.*method)(aImageKeys[1], cbcrDescriptor, aExtID, imageType, 1);
(aResources.*method)(aImageKeys[2], cbcrDescriptor, aExtID, imageType, 2);
}
}
void BufferTextureHost::PushDisplayItems(
wr::DisplayListBuilder& aBuilder, const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip, wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) {
void BufferTextureHost::PushDisplayItems(wr::DisplayListBuilder& aBuilder,
const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip,
wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) {
if (GetFormat() != gfx::SurfaceFormat::YUV) {
MOZ_ASSERT(aImageKeys.length() == 1);
aBuilder.PushImage(aBounds, aClip, true, aFilter, aImageKeys[0],
!(mFlags & TextureFlags::NON_PREMULTIPLIED));
!(mFlags & TextureFlags::NON_PREMULTIPLIED),
wr::ColorF{1.0f, 1.0f, 1.0f, 1.0f},
aPreferCompositorSurface);
} else {
MOZ_ASSERT(aImageKeys.length() == 3);
const YCbCrDescriptor& desc = mDescriptor.get_YCbCrDescriptor();
aBuilder.PushYCbCrPlanarImage(
aBounds, aClip, true, aImageKeys[0], aImageKeys[1], aImageKeys[2],
wr::ToWrColorDepth(desc.colorDepth()),
wr::ToWrYuvColorSpace(desc.yUVColorSpace()),
wr::ToWrColorRange(desc.colorRange()), aFilter);
aBuilder.PushYCbCrPlanarImage(aBounds, aClip, true, aImageKeys[0],
aImageKeys[1], aImageKeys[2],
wr::ToWrColorDepth(desc.colorDepth()),
wr::ToWrYuvColorSpace(desc.yUVColorSpace()),
wr::ToWrColorRange(desc.colorRange()),
aFilter, aPreferCompositorSurface);
}
}

View File

@ -661,8 +661,7 @@ class TextureHost : public AtomicRefCountedWithFinalize<TextureHost> {
virtual void PushResourceUpdates(wr::TransactionBuilder& aResources,
ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys,
const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) {
const wr::ExternalImageId& aExtID) {
MOZ_ASSERT_UNREACHABLE("Unimplemented");
}
@ -672,7 +671,8 @@ class TextureHost : public AtomicRefCountedWithFinalize<TextureHost> {
const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip,
wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aKeys) {
const Range<wr::ImageKey>& aKeys,
const bool aPreferCompositorSurface) {
MOZ_ASSERT_UNREACHABLE(
"No PushDisplayItems() implementation for this TextureHost type.");
}
@ -793,13 +793,13 @@ class BufferTextureHost : public TextureHost {
void PushResourceUpdates(wr::TransactionBuilder& aResources,
ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys,
const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) override;
const wr::ExternalImageId& aExtID) override;
void PushDisplayItems(wr::DisplayListBuilder& aBuilder,
const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip, wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) override;
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) override;
void ReadUnlock() override;
bool IsDirectMap() override {

View File

@ -1010,8 +1010,7 @@ uint32_t DXGITextureHostD3D11::NumSubTextures() {
void DXGITextureHostD3D11::PushResourceUpdates(
wr::TransactionBuilder& aResources, ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys, const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) {
const Range<wr::ImageKey>& aImageKeys, const wr::ExternalImageId& aExtID) {
if (!gfx::gfxVars::UseWebRenderANGLE()) {
MOZ_ASSERT_UNREACHABLE("unexpected to be called without ANGLE");
return;
@ -1028,8 +1027,7 @@ void DXGITextureHostD3D11::PushResourceUpdates(
case gfx::SurfaceFormat::B8G8R8X8: {
MOZ_ASSERT(aImageKeys.length() == 1);
wr::ImageDescriptor descriptor(mSize, GetFormat(),
aPreferCompositorSurface);
wr::ImageDescriptor descriptor(mSize, GetFormat());
auto imageType =
wr::ExternalImageType::TextureHandle(wr::TextureTarget::External);
(aResources.*method)(aImageKeys[0], descriptor, aExtID, imageType, 0);
@ -1042,16 +1040,13 @@ void DXGITextureHostD3D11::PushResourceUpdates(
MOZ_ASSERT(mSize.width % 2 == 0);
MOZ_ASSERT(mSize.height % 2 == 0);
wr::ImageDescriptor descriptor0(mSize,
mFormat == gfx::SurfaceFormat::NV12
? gfx::SurfaceFormat::A8
: gfx::SurfaceFormat::A16,
aPreferCompositorSurface);
wr::ImageDescriptor descriptor0(mSize, mFormat == gfx::SurfaceFormat::NV12
? gfx::SurfaceFormat::A8
: gfx::SurfaceFormat::A16);
wr::ImageDescriptor descriptor1(mSize / 2,
mFormat == gfx::SurfaceFormat::NV12
? gfx::SurfaceFormat::R8G8
: gfx::SurfaceFormat::R16G16,
aPreferCompositorSurface);
: gfx::SurfaceFormat::R16G16);
auto imageType =
wr::ExternalImageType::TextureHandle(wr::TextureTarget::External);
(aResources.*method)(aImageKeys[0], descriptor0, aExtID, imageType, 0);
@ -1067,7 +1062,8 @@ void DXGITextureHostD3D11::PushResourceUpdates(
void DXGITextureHostD3D11::PushDisplayItems(
wr::DisplayListBuilder& aBuilder, const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip, wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) {
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) {
switch (GetFormat()) {
case gfx::SurfaceFormat::R8G8B8X8:
case gfx::SurfaceFormat::R8G8B8A8:
@ -1075,19 +1071,21 @@ void DXGITextureHostD3D11::PushDisplayItems(
case gfx::SurfaceFormat::B8G8R8X8: {
MOZ_ASSERT(aImageKeys.length() == 1);
aBuilder.PushImage(aBounds, aClip, true, aFilter, aImageKeys[0],
!(mFlags & TextureFlags::NON_PREMULTIPLIED));
!(mFlags & TextureFlags::NON_PREMULTIPLIED),
wr::ColorF{1.0f, 1.0f, 1.0f, 1.0f},
aPreferCompositorSurface);
break;
}
case gfx::SurfaceFormat::P010:
case gfx::SurfaceFormat::P016:
case gfx::SurfaceFormat::NV12: {
MOZ_ASSERT(aImageKeys.length() == 2);
aBuilder.PushNV12Image(aBounds, aClip, true, aImageKeys[0], aImageKeys[1],
GetFormat() == gfx::SurfaceFormat::NV12
? wr::ColorDepth::Color8
: wr::ColorDepth::Color16,
wr::ToWrYuvColorSpace(mYUVColorSpace),
wr::ToWrColorRange(mColorRange), aFilter);
aBuilder.PushNV12Image(
aBounds, aClip, true, aImageKeys[0], aImageKeys[1],
GetFormat() == gfx::SurfaceFormat::NV12 ? wr::ColorDepth::Color8
: wr::ColorDepth::Color16,
wr::ToWrYuvColorSpace(mYUVColorSpace),
wr::ToWrColorRange(mColorRange), aFilter, aPreferCompositorSurface);
break;
}
default: {
@ -1262,8 +1260,7 @@ uint32_t DXGIYCbCrTextureHostD3D11::NumSubTextures() {
void DXGIYCbCrTextureHostD3D11::PushResourceUpdates(
wr::TransactionBuilder& aResources, ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys, const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) {
const Range<wr::ImageKey>& aImageKeys, const wr::ExternalImageId& aExtID) {
if (!gfx::gfxVars::UseWebRenderANGLE()) {
MOZ_ASSERT_UNREACHABLE("unexpected to be called without ANGLE");
return;
@ -1284,11 +1281,9 @@ void DXGIYCbCrTextureHostD3D11::PushResourceUpdates(
wr::ExternalImageType::TextureHandle(wr::TextureTarget::External);
// y
wr::ImageDescriptor descriptor0(mSize, gfx::SurfaceFormat::A8,
aPreferCompositorSurface);
wr::ImageDescriptor descriptor0(mSize, gfx::SurfaceFormat::A8);
// cb and cr
wr::ImageDescriptor descriptor1(mSizeCbCr, gfx::SurfaceFormat::A8,
aPreferCompositorSurface);
wr::ImageDescriptor descriptor1(mSizeCbCr, gfx::SurfaceFormat::A8);
(aResources.*method)(aImageKeys[0], descriptor0, aExtID, imageType, 0);
(aResources.*method)(aImageKeys[1], descriptor1, aExtID, imageType, 1);
(aResources.*method)(aImageKeys[2], descriptor1, aExtID, imageType, 2);
@ -1297,13 +1292,14 @@ void DXGIYCbCrTextureHostD3D11::PushResourceUpdates(
void DXGIYCbCrTextureHostD3D11::PushDisplayItems(
wr::DisplayListBuilder& aBuilder, const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip, wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) {
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) {
MOZ_ASSERT(aImageKeys.length() == 3);
aBuilder.PushYCbCrPlanarImage(
aBounds, aClip, true, aImageKeys[0], aImageKeys[1], aImageKeys[2],
wr::ToWrColorDepth(mColorDepth), wr::ToWrYuvColorSpace(mYUVColorSpace),
wr::ToWrColorRange(mColorRange), aFilter);
wr::ToWrColorRange(mColorRange), aFilter, aPreferCompositorSurface);
}
bool DXGIYCbCrTextureHostD3D11::AcquireTextureSource(

View File

@ -354,13 +354,13 @@ class DXGITextureHostD3D11 : public TextureHost {
void PushResourceUpdates(wr::TransactionBuilder& aResources,
ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys,
const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) override;
const wr::ExternalImageId& aExtID) override;
void PushDisplayItems(wr::DisplayListBuilder& aBuilder,
const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip, wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) override;
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) override;
protected:
bool LockInternal();
@ -423,13 +423,13 @@ class DXGIYCbCrTextureHostD3D11 : public TextureHost {
void PushResourceUpdates(wr::TransactionBuilder& aResources,
ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys,
const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) override;
const wr::ExternalImageId& aExtID) override;
void PushDisplayItems(wr::DisplayListBuilder& aBuilder,
const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip, wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) override;
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) override;
private:
bool EnsureTextureSource();

View File

@ -680,14 +680,14 @@ RefPtr<TextureHost> GetNullPluginTextureHost() {
void PushResourceUpdates(wr::TransactionBuilder& aResources,
ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys,
const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) override {}
const wr::ExternalImageId& aExtID) override {}
void PushDisplayItems(wr::DisplayListBuilder& aBuilder,
const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip,
wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) override {}
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) override {}
};
static StaticRefPtr<TextureHost> sNullPluginTextureHost;

View File

@ -160,8 +160,7 @@ uint32_t MacIOSurfaceTextureHostOGL::NumSubTextures() {
void MacIOSurfaceTextureHostOGL::PushResourceUpdates(
wr::TransactionBuilder& aResources, ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys, const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) {
const Range<wr::ImageKey>& aImageKeys, const wr::ExternalImageId& aExtID) {
MOZ_ASSERT(mSurface);
auto method = aOp == TextureHost::ADD_IMAGE
@ -180,8 +179,7 @@ void MacIOSurfaceTextureHostOGL::PushResourceUpdates(
auto format = GetFormat() == gfx::SurfaceFormat::R8G8B8A8
? gfx::SurfaceFormat::B8G8R8A8
: gfx::SurfaceFormat::B8G8R8X8;
wr::ImageDescriptor descriptor(GetSize(), format,
aPreferCompositorSurface);
wr::ImageDescriptor descriptor(GetSize(), format);
(aResources.*method)(aImageKeys[0], descriptor, aExtID, imageType, 0);
break;
}
@ -192,8 +190,7 @@ void MacIOSurfaceTextureHostOGL::PushResourceUpdates(
// and YCbCr at OpenGL 3.1)
MOZ_ASSERT(aImageKeys.length() == 1);
MOZ_ASSERT(mSurface->GetPlaneCount() == 0);
wr::ImageDescriptor descriptor(GetSize(), gfx::SurfaceFormat::B8G8R8X8,
aPreferCompositorSurface);
wr::ImageDescriptor descriptor(GetSize(), gfx::SurfaceFormat::B8G8R8X8);
(aResources.*method)(aImageKeys[0], descriptor, aExtID, imageType, 0);
break;
}
@ -203,11 +200,11 @@ void MacIOSurfaceTextureHostOGL::PushResourceUpdates(
wr::ImageDescriptor descriptor0(
gfx::IntSize(mSurface->GetDevicePixelWidth(0),
mSurface->GetDevicePixelHeight(0)),
gfx::SurfaceFormat::A8, aPreferCompositorSurface);
gfx::SurfaceFormat::A8);
wr::ImageDescriptor descriptor1(
gfx::IntSize(mSurface->GetDevicePixelWidth(1),
mSurface->GetDevicePixelHeight(1)),
gfx::SurfaceFormat::R8G8, aPreferCompositorSurface);
gfx::SurfaceFormat::R8G8);
(aResources.*method)(aImageKeys[0], descriptor0, aExtID, imageType, 0);
(aResources.*method)(aImageKeys[1], descriptor1, aExtID, imageType, 1);
break;
@ -221,7 +218,8 @@ void MacIOSurfaceTextureHostOGL::PushResourceUpdates(
void MacIOSurfaceTextureHostOGL::PushDisplayItems(
wr::DisplayListBuilder& aBuilder, const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip, wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) {
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) {
switch (GetFormat()) {
case gfx::SurfaceFormat::R8G8B8X8:
case gfx::SurfaceFormat::R8G8B8A8:
@ -230,7 +228,9 @@ void MacIOSurfaceTextureHostOGL::PushDisplayItems(
MOZ_ASSERT(aImageKeys.length() == 1);
MOZ_ASSERT(mSurface->GetPlaneCount() == 0);
aBuilder.PushImage(aBounds, aClip, true, aFilter, aImageKeys[0],
!(mFlags & TextureFlags::NON_PREMULTIPLIED));
!(mFlags & TextureFlags::NON_PREMULTIPLIED),
wr::ColorF{1.0f, 1.0f, 1.0f, 1.0f},
aPreferCompositorSurface);
break;
}
case gfx::SurfaceFormat::YUV422: {
@ -241,7 +241,8 @@ void MacIOSurfaceTextureHostOGL::PushDisplayItems(
aBuilder.PushYCbCrInterleavedImage(
aBounds, aClip, true, aImageKeys[0], wr::ColorDepth::Color8,
wr::ToWrYuvColorSpace(GetYUVColorSpace()),
wr::ToWrColorRange(GetColorRange()), aFilter);
wr::ToWrColorRange(GetColorRange()), aFilter,
aPreferCompositorSurface);
break;
}
case gfx::SurfaceFormat::NV12: {
@ -252,7 +253,8 @@ void MacIOSurfaceTextureHostOGL::PushDisplayItems(
aBuilder.PushNV12Image(aBounds, aClip, true, aImageKeys[0], aImageKeys[1],
wr::ColorDepth::Color8,
wr::ToWrYuvColorSpace(GetYUVColorSpace()),
wr::ToWrColorRange(GetColorRange()), aFilter);
wr::ToWrColorRange(GetColorRange()), aFilter,
aPreferCompositorSurface);
break;
}
default: {

View File

@ -71,13 +71,13 @@ class MacIOSurfaceTextureHostOGL : public TextureHost {
void PushResourceUpdates(wr::TransactionBuilder& aResources,
ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys,
const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) override;
const wr::ExternalImageId& aExtID) override;
void PushDisplayItems(wr::DisplayListBuilder& aBuilder,
const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip, wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) override;
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) override;
gfx::YUVColorSpace GetYUVColorSpace() const override;
gfx::ColorRange GetColorRange() const override;

View File

@ -648,8 +648,7 @@ void SurfaceTextureHost::CreateRenderTexture(
void SurfaceTextureHost::PushResourceUpdates(
wr::TransactionBuilder& aResources, ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys, const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) {
const Range<wr::ImageKey>& aImageKeys, const wr::ExternalImageId& aExtID) {
auto method = aOp == TextureHost::ADD_IMAGE
? &wr::TransactionBuilder::AddExternalImage
: &wr::TransactionBuilder::UpdateExternalImage;
@ -666,8 +665,7 @@ void SurfaceTextureHost::PushResourceUpdates(
auto format = GetFormat() == gfx::SurfaceFormat::R8G8B8A8
? gfx::SurfaceFormat::B8G8R8A8
: gfx::SurfaceFormat::B8G8R8X8;
wr::ImageDescriptor descriptor(GetSize(), format,
aPreferCompositorSurface);
wr::ImageDescriptor descriptor(GetSize(), format);
(aResources.*method)(aImageKeys[0], descriptor, aExtID, imageType, 0);
break;
}
@ -677,10 +675,12 @@ void SurfaceTextureHost::PushResourceUpdates(
}
}
void SurfaceTextureHost::PushDisplayItems(
wr::DisplayListBuilder& aBuilder, const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip, wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) {
void SurfaceTextureHost::PushDisplayItems(wr::DisplayListBuilder& aBuilder,
const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip,
wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) {
switch (GetFormat()) {
case gfx::SurfaceFormat::R8G8B8X8:
case gfx::SurfaceFormat::R8G8B8A8:
@ -688,7 +688,9 @@ void SurfaceTextureHost::PushDisplayItems(
case gfx::SurfaceFormat::B8G8R8X8: {
MOZ_ASSERT(aImageKeys.length() == 1);
aBuilder.PushImage(aBounds, aClip, true, aFilter, aImageKeys[0],
!(mFlags & TextureFlags::NON_PREMULTIPLIED));
!(mFlags & TextureFlags::NON_PREMULTIPLIED),
wr::ColorF{1.0f, 1.0f, 1.0f, 1.0f},
aPreferCompositorSurface);
break;
}
default: {
@ -856,8 +858,7 @@ void EGLImageTextureHost::CreateRenderTexture(
void EGLImageTextureHost::PushResourceUpdates(
wr::TransactionBuilder& aResources, ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys, const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) {
const Range<wr::ImageKey>& aImageKeys, const wr::ExternalImageId& aExtID) {
auto method = aOp == TextureHost::ADD_IMAGE
? &wr::TransactionBuilder::AddExternalImage
: &wr::TransactionBuilder::UpdateExternalImage;
@ -873,18 +874,20 @@ void EGLImageTextureHost::PushResourceUpdates(
auto formatTmp = format == gfx::SurfaceFormat::R8G8B8A8
? gfx::SurfaceFormat::B8G8R8A8
: gfx::SurfaceFormat::B8G8R8X8;
wr::ImageDescriptor descriptor(GetSize(), formatTmp,
aPreferCompositorSurface);
wr::ImageDescriptor descriptor(GetSize(), formatTmp);
(aResources.*method)(aImageKeys[0], descriptor, aExtID, imageType, 0);
}
void EGLImageTextureHost::PushDisplayItems(
wr::DisplayListBuilder& aBuilder, const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip, wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) {
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) {
MOZ_ASSERT(aImageKeys.length() == 1);
aBuilder.PushImage(aBounds, aClip, true, aFilter, aImageKeys[0],
!(mFlags & TextureFlags::NON_PREMULTIPLIED));
!(mFlags & TextureFlags::NON_PREMULTIPLIED),
wr::ColorF{1.0f, 1.0f, 1.0f, 1.0f},
aPreferCompositorSurface);
}
//

View File

@ -433,13 +433,13 @@ class SurfaceTextureHost : public TextureHost {
void PushResourceUpdates(wr::TransactionBuilder& aResources,
ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys,
const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) override;
const wr::ExternalImageId& aExtID) override;
void PushDisplayItems(wr::DisplayListBuilder& aBuilder,
const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip, wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) override;
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) override;
protected:
bool EnsureAttached();
@ -539,13 +539,13 @@ class EGLImageTextureHost final : public TextureHost {
void PushResourceUpdates(wr::TransactionBuilder& aResources,
ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys,
const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) override;
const wr::ExternalImageId& aExtID) override;
void PushDisplayItems(wr::DisplayListBuilder& aBuilder,
const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip, wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) override;
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) override;
protected:
const EGLImage mImage;

View File

@ -128,8 +128,7 @@ void WaylandDMABUFTextureHostOGL::CreateRenderTexture(
void WaylandDMABUFTextureHostOGL::PushResourceUpdates(
wr::TransactionBuilder& aResources, ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys, const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) {
const Range<wr::ImageKey>& aImageKeys, const wr::ExternalImageId& aExtID) {
MOZ_ASSERT(mSurface);
auto method = aOp == TextureHost::ADD_IMAGE
@ -146,8 +145,7 @@ void WaylandDMABUFTextureHostOGL::PushResourceUpdates(
MOZ_ASSERT(aImageKeys.length() == 1);
// XXX Add RGBA handling. Temporary hack to avoid crash
// With BGRA format setting, rendering works without problem.
wr::ImageDescriptor descriptor(GetSize(), mSurface->GetFormat(),
aPreferCompositorSurface);
wr::ImageDescriptor descriptor(GetSize(), mSurface->GetFormat());
(aResources.*method)(aImageKeys[0], descriptor, aExtID, imageType, 0);
break;
}
@ -156,10 +154,10 @@ void WaylandDMABUFTextureHostOGL::PushResourceUpdates(
MOZ_ASSERT(mSurface->GetTextureCount() == 2);
wr::ImageDescriptor descriptor0(
gfx::IntSize(mSurface->GetWidth(0), mSurface->GetHeight(0)),
gfx::SurfaceFormat::A8, aPreferCompositorSurface);
gfx::SurfaceFormat::A8);
wr::ImageDescriptor descriptor1(
gfx::IntSize(mSurface->GetWidth(1), mSurface->GetHeight(1)),
gfx::SurfaceFormat::R8G8, aPreferCompositorSurface);
gfx::SurfaceFormat::R8G8);
(aResources.*method)(aImageKeys[0], descriptor0, aExtID, imageType, 0);
(aResources.*method)(aImageKeys[1], descriptor1, aExtID, imageType, 1);
break;
@ -173,7 +171,8 @@ void WaylandDMABUFTextureHostOGL::PushResourceUpdates(
void WaylandDMABUFTextureHostOGL::PushDisplayItems(
wr::DisplayListBuilder& aBuilder, const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip, wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) {
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) {
switch (mSurface->GetFormat()) {
case gfx::SurfaceFormat::R8G8B8X8:
case gfx::SurfaceFormat::R8G8B8A8:
@ -181,7 +180,9 @@ void WaylandDMABUFTextureHostOGL::PushDisplayItems(
case gfx::SurfaceFormat::B8G8R8X8: {
MOZ_ASSERT(aImageKeys.length() == 1);
aBuilder.PushImage(aBounds, aClip, true, aFilter, aImageKeys[0],
!(mFlags & TextureFlags::NON_PREMULTIPLIED));
!(mFlags & TextureFlags::NON_PREMULTIPLIED),
wr::ColorF{1.0f, 1.0f, 1.0f, 1.0f},
aPreferCompositorSurface);
break;
}
case gfx::SurfaceFormat::NV12: {
@ -192,7 +193,8 @@ void WaylandDMABUFTextureHostOGL::PushDisplayItems(
aBuilder.PushNV12Image(aBounds, aClip, true, aImageKeys[0], aImageKeys[1],
wr::ColorDepth::Color8,
wr::ToWrYuvColorSpace(GetYUVColorSpace()),
wr::ToWrColorRange(GetColorRange()), aFilter);
wr::ToWrColorRange(GetColorRange()), aFilter,
aPreferCompositorSurface);
break;
}
default: {

View File

@ -60,13 +60,13 @@ class WaylandDMABUFTextureHostOGL : public TextureHost {
void PushResourceUpdates(wr::TransactionBuilder& aResources,
ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys,
const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) override;
const wr::ExternalImageId& aExtID) override;
void PushDisplayItems(wr::DisplayListBuilder& aBuilder,
const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip, wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) override;
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) override;
private:
GLTextureSource* CreateTextureSourceForPlane(size_t aPlane);

View File

@ -266,8 +266,7 @@ Maybe<TextureHost::ResourceUpdateOp> AsyncImagePipelineManager::UpdateImageKeys(
Range<wr::ImageKey> keys(&aKeys[0], aKeys.Length());
auto externalImageKey = wrTexture->GetExternalImageKey();
wrTexture->PushResourceUpdates(aMaybeFastTxn, op, keys, externalImageKey,
/* aPreferCompositorSurface */ true);
wrTexture->PushResourceUpdates(aMaybeFastTxn, op, keys, externalImageKey);
return Some(op);
}
@ -399,7 +398,7 @@ void AsyncImagePipelineManager::ApplyAsyncImageForPipeline(
Range<wr::ImageKey> range_keys(&keys[0], keys.Length());
aPipeline->mCurrentTexture->PushDisplayItems(
builder, wr::ToLayoutRect(rect), wr::ToLayoutRect(rect),
aPipeline->mFilter, range_keys);
aPipeline->mFilter, range_keys, /* aPreferCompositorSurface */ true);
HoldExternalImage(aPipelineId, aEpoch, aPipeline->mCurrentTexture);
} else {
MOZ_ASSERT(keys.Length() == 1);

View File

@ -834,8 +834,7 @@ bool WebRenderBridgeParent::PushExternalImageForTexture(
WebRenderTextureHost* wrTexture = aTexture->AsWebRenderTextureHost();
if (wrTexture) {
wrTexture->PushResourceUpdates(aResources, op, keys,
wrTexture->GetExternalImageKey(),
/* aPreferCompositorSurface */ false);
wrTexture->GetExternalImageKey());
auto it = mTextureHosts.find(wr::AsUint64(aKey));
MOZ_ASSERT((it == mTextureHosts.end() && !aIsUpdate) ||
(it != mTextureHosts.end() && aIsUpdate));

View File

@ -196,24 +196,23 @@ uint32_t WebRenderTextureHost::NumSubTextures() {
void WebRenderTextureHost::PushResourceUpdates(
wr::TransactionBuilder& aResources, ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys, const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) {
const Range<wr::ImageKey>& aImageKeys, const wr::ExternalImageId& aExtID) {
MOZ_ASSERT(mWrappedTextureHost);
MOZ_ASSERT(mExternalImageId == aExtID);
mWrappedTextureHost->PushResourceUpdates(aResources, aOp, aImageKeys, aExtID,
aPreferCompositorSurface);
mWrappedTextureHost->PushResourceUpdates(aResources, aOp, aImageKeys, aExtID);
}
void WebRenderTextureHost::PushDisplayItems(
wr::DisplayListBuilder& aBuilder, const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip, wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) {
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) {
MOZ_ASSERT(mWrappedTextureHost);
MOZ_ASSERT(aImageKeys.length() > 0);
mWrappedTextureHost->PushDisplayItems(aBuilder, aBounds, aClip, aFilter,
aImageKeys);
aImageKeys, aPreferCompositorSurface);
}
bool WebRenderTextureHost::NeedsYFlip() const {

View File

@ -75,13 +75,13 @@ class WebRenderTextureHost : public TextureHost {
void PushResourceUpdates(wr::TransactionBuilder& aResources,
ResourceUpdateOp aOp,
const Range<wr::ImageKey>& aImageKeys,
const wr::ExternalImageId& aExtID,
const bool aPreferCompositorSurface) override;
const wr::ExternalImageId& aExtID) override;
void PushDisplayItems(wr::DisplayListBuilder& aBuilder,
const wr::LayoutRect& aBounds,
const wr::LayoutRect& aClip, wr::ImageRendering aFilter,
const Range<wr::ImageKey>& aImageKeys) override;
const Range<wr::ImageKey>& aImageKeys,
const bool aPreferCompositorSurface) override;
bool NeedsYFlip() const override;

View File

@ -484,11 +484,10 @@ bool WebRenderAPI::HitTest(const wr::WorldPoint& aPoint,
return result;
}
bool WebRenderAPI::FastHitTest(const wr::WorldPoint& aPoint,
wr::WrPipelineId& aOutPipelineId,
layers::ScrollableLayerGuid::ViewID& aOutScrollId,
gfx::CompositorHitTestInfo& aOutHitInfo,
SideBits& aOutSideBits) {
bool WebRenderAPI::FastHitTest(
const wr::WorldPoint& aPoint, wr::WrPipelineId& aOutPipelineId,
layers::ScrollableLayerGuid::ViewID& aOutScrollId,
gfx::CompositorHitTestInfo& aOutHitInfo, SideBits& aOutSideBits) {
static_assert(DoesCompositorHitTestInfoFitIntoBits<16>(),
"CompositorHitTestFlags MAX value has to be less than number "
"of bits in uint16_t");
@ -498,8 +497,8 @@ bool WebRenderAPI::FastHitTest(const wr::WorldPoint& aPoint,
}
uint16_t serialized = static_cast<uint16_t>(aOutHitInfo.serialize());
const bool result = wr_hit_tester_hit_test(mFastHitTester, aPoint, &aOutPipelineId,
&aOutScrollId, &serialized);
const bool result = wr_hit_tester_hit_test(
mFastHitTester, aPoint, &aOutPipelineId, &aOutScrollId, &serialized);
if (result) {
aOutSideBits = ExtractSideBitsFromHitInfoBits(serialized);
@ -1269,13 +1268,14 @@ void DisplayListBuilder::PushConicGradient(
void DisplayListBuilder::PushImage(
const wr::LayoutRect& aBounds, const wr::LayoutRect& aClip,
bool aIsBackfaceVisible, wr::ImageRendering aFilter, wr::ImageKey aImage,
bool aPremultipliedAlpha, const wr::ColorF& aColor) {
bool aPremultipliedAlpha, const wr::ColorF& aColor,
bool aPreferCompositorSurface) {
wr::LayoutRect clip = MergeClipLeaf(aClip);
WRDL_LOG("PushImage b=%s cl=%s\n", mWrState, Stringify(aBounds).c_str(),
Stringify(clip).c_str());
wr_dp_push_image(mWrState, aBounds, clip, aIsBackfaceVisible,
&mCurrentSpaceAndClipChain, aFilter, aImage,
aPremultipliedAlpha, aColor);
aPremultipliedAlpha, aColor, aPreferCompositorSurface);
}
void DisplayListBuilder::PushRepeatingImage(
@ -1297,11 +1297,13 @@ void DisplayListBuilder::PushYCbCrPlanarImage(
bool aIsBackfaceVisible, wr::ImageKey aImageChannel0,
wr::ImageKey aImageChannel1, wr::ImageKey aImageChannel2,
wr::WrColorDepth aColorDepth, wr::WrYuvColorSpace aColorSpace,
wr::WrColorRange aColorRange, wr::ImageRendering aRendering) {
wr_dp_push_yuv_planar_image(
mWrState, aBounds, MergeClipLeaf(aClip), aIsBackfaceVisible,
&mCurrentSpaceAndClipChain, aImageChannel0, aImageChannel1,
aImageChannel2, aColorDepth, aColorSpace, aColorRange, aRendering);
wr::WrColorRange aColorRange, wr::ImageRendering aRendering,
bool aPreferCompositorSurface) {
wr_dp_push_yuv_planar_image(mWrState, aBounds, MergeClipLeaf(aClip),
aIsBackfaceVisible, &mCurrentSpaceAndClipChain,
aImageChannel0, aImageChannel1, aImageChannel2,
aColorDepth, aColorSpace, aColorRange, aRendering,
aPreferCompositorSurface);
}
void DisplayListBuilder::PushNV12Image(
@ -1309,22 +1311,23 @@ void DisplayListBuilder::PushNV12Image(
bool aIsBackfaceVisible, wr::ImageKey aImageChannel0,
wr::ImageKey aImageChannel1, wr::WrColorDepth aColorDepth,
wr::WrYuvColorSpace aColorSpace, wr::WrColorRange aColorRange,
wr::ImageRendering aRendering) {
wr_dp_push_yuv_NV12_image(mWrState, aBounds, MergeClipLeaf(aClip),
aIsBackfaceVisible, &mCurrentSpaceAndClipChain,
aImageChannel0, aImageChannel1, aColorDepth,
aColorSpace, aColorRange, aRendering);
wr::ImageRendering aRendering, bool aPreferCompositorSurface) {
wr_dp_push_yuv_NV12_image(
mWrState, aBounds, MergeClipLeaf(aClip), aIsBackfaceVisible,
&mCurrentSpaceAndClipChain, aImageChannel0, aImageChannel1, aColorDepth,
aColorSpace, aColorRange, aRendering, aPreferCompositorSurface);
}
void DisplayListBuilder::PushYCbCrInterleavedImage(
const wr::LayoutRect& aBounds, const wr::LayoutRect& aClip,
bool aIsBackfaceVisible, wr::ImageKey aImageChannel0,
wr::WrColorDepth aColorDepth, wr::WrYuvColorSpace aColorSpace,
wr::WrColorRange aColorRange, wr::ImageRendering aRendering) {
wr::WrColorRange aColorRange, wr::ImageRendering aRendering,
bool aPreferCompositorSurface) {
wr_dp_push_yuv_interleaved_image(
mWrState, aBounds, MergeClipLeaf(aClip), aIsBackfaceVisible,
&mCurrentSpaceAndClipChain, aImageChannel0, aColorDepth, aColorSpace,
aColorRange, aRendering);
aColorRange, aRendering, aPreferCompositorSurface);
}
void DisplayListBuilder::PushIFrame(const wr::LayoutRect& aBounds,

View File

@ -241,11 +241,12 @@ class WebRenderAPI final {
/// Do a non-blocking hit-testing query on a shared version of the hit testing
/// information.
///
/// This does not guarantee ordering between the query and in-flight transactions,
/// but only blocks on a synchronous message to the render backend thread the first
/// time the function is called.
/// This generally returns much faster than `HitTest`.
bool FastHitTest(const wr::WorldPoint& aPoint, wr::WrPipelineId& aOutPipelineId,
/// This does not guarantee ordering between the query and in-flight
/// transactions, but only blocks on a synchronous message to the render
/// backend thread the first time the function is called. This generally
/// returns much faster than `HitTest`.
bool FastHitTest(const wr::WorldPoint& aPoint,
wr::WrPipelineId& aOutPipelineId,
layers::ScrollableLayerGuid::ViewID& aOutScrollId,
gfx::CompositorHitTestInfo& aOutHitInfo,
SideBits& aOutSideBits);
@ -526,7 +527,8 @@ class DisplayListBuilder final {
void PushImage(const wr::LayoutRect& aBounds, const wr::LayoutRect& aClip,
bool aIsBackfaceVisible, wr::ImageRendering aFilter,
wr::ImageKey aImage, bool aPremultipliedAlpha = true,
const wr::ColorF& aColor = wr::ColorF{1.0f, 1.0f, 1.0f, 1.0f});
const wr::ColorF& aColor = wr::ColorF{1.0f, 1.0f, 1.0f, 1.0f},
bool aPreferCompositorSurface = false);
void PushRepeatingImage(
const wr::LayoutRect& aBounds, const wr::LayoutRect& aClip,
@ -540,19 +542,22 @@ class DisplayListBuilder final {
bool aIsBackfaceVisible, wr::ImageKey aImageChannel0,
wr::ImageKey aImageChannel1, wr::ImageKey aImageChannel2,
wr::WrColorDepth aColorDepth, wr::WrYuvColorSpace aColorSpace,
wr::WrColorRange aColorRange, wr::ImageRendering aFilter);
wr::WrColorRange aColorRange, wr::ImageRendering aFilter,
bool aPreferCompositorSurface = false);
void PushNV12Image(const wr::LayoutRect& aBounds, const wr::LayoutRect& aClip,
bool aIsBackfaceVisible, wr::ImageKey aImageChannel0,
wr::ImageKey aImageChannel1, wr::WrColorDepth aColorDepth,
wr::WrYuvColorSpace aColorSpace,
wr::WrColorRange aColorRange, wr::ImageRendering aFilter);
wr::WrColorRange aColorRange, wr::ImageRendering aFilter,
bool aPreferCompositorSurface = false);
void PushYCbCrInterleavedImage(
const wr::LayoutRect& aBounds, const wr::LayoutRect& aClip,
bool aIsBackfaceVisible, wr::ImageKey aImageChannel0,
wr::WrColorDepth aColorDepth, wr::WrYuvColorSpace aColorSpace,
wr::WrColorRange aColorRange, wr::ImageRendering aFilter);
wr::WrColorRange aColorRange, wr::ImageRendering aFilter,
bool aPreferCompositorSurface = false);
void PushIFrame(const wr::LayoutRect& aBounds, bool aIsBackfaceVisible,
wr::PipelineId aPipeline, bool aIgnoreMissingPipeline);

View File

@ -2702,12 +2702,19 @@ pub extern "C" fn wr_dp_push_iframe(state: &mut WrState,
// A helper fn to construct a PrimitiveFlags
fn prim_flags(
is_backface_visible: bool,
prefer_compositor_surface: bool,
) -> PrimitiveFlags {
let mut flags = PrimitiveFlags::empty();
if is_backface_visible {
PrimitiveFlags::IS_BACKFACE_VISIBLE
} else {
PrimitiveFlags::empty()
flags |= PrimitiveFlags::IS_BACKFACE_VISIBLE;
}
if prefer_compositor_surface {
flags |= PrimitiveFlags::PREFER_COMPOSITOR_SURFACE;
}
flags
}
fn common_item_properties_for_rect(
@ -2727,7 +2734,7 @@ fn common_item_properties_for_rect(
clip_rect: clip_rect.unwrap_or(LayoutRect::zero()),
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, /* prefer_compositor_surface */ false),
hit_info: state.current_tag,
item_key: state.current_item_key,
}
@ -2810,7 +2817,7 @@ pub extern "C" fn wr_dp_push_rect_with_parent_clip(
clip_rect: clip_rect.unwrap(),
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, /* prefer_compositor_surface */ false),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -2863,7 +2870,7 @@ pub extern "C" fn wr_dp_push_backdrop_filter_with_parent_clip(
clip_rect: clip_rect.unwrap(),
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, /* prefer_compositor_surface */ false),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -2892,7 +2899,7 @@ pub extern "C" fn wr_dp_push_clear_rect(state: &mut WrState,
clip_rect: clip_rect.unwrap(),
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(true),
flags: prim_flags(true, /* prefer_compositor_surface */ false),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -2919,7 +2926,7 @@ pub extern "C" fn wr_dp_push_hit_test(state: &mut WrState,
clip_rect: clip_rect.unwrap(),
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, /* prefer_compositor_surface */ false),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -2947,7 +2954,7 @@ pub extern "C" fn wr_dp_push_clear_rect_with_parent_clip(
clip_rect: clip_rect.unwrap(),
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(true),
flags: prim_flags(true, /* prefer_compositor_surface */ false),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -2966,7 +2973,8 @@ pub extern "C" fn wr_dp_push_image(state: &mut WrState,
image_rendering: ImageRendering,
key: WrImageKey,
premultiplied_alpha: bool,
color: ColorF) {
color: ColorF,
prefer_compositor_surface: bool) {
debug_assert!(unsafe { is_in_main_thread() || is_in_compositor_thread() });
let space_and_clip = parent.to_webrender(state.pipeline_id);
@ -2975,7 +2983,7 @@ pub extern "C" fn wr_dp_push_image(state: &mut WrState,
clip_rect: clip,
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, prefer_compositor_surface),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -3016,7 +3024,7 @@ pub extern "C" fn wr_dp_push_repeating_image(state: &mut WrState,
clip_rect: clip,
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, /* prefer_compositor_surface */ false),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -3052,7 +3060,8 @@ pub extern "C" fn wr_dp_push_yuv_planar_image(state: &mut WrState,
color_depth: WrColorDepth,
color_space: WrYuvColorSpace,
color_range: WrColorRange,
image_rendering: ImageRendering) {
image_rendering: ImageRendering,
prefer_compositor_surface: bool) {
debug_assert!(unsafe { is_in_main_thread() || is_in_compositor_thread() });
let space_and_clip = parent.to_webrender(state.pipeline_id);
@ -3061,7 +3070,7 @@ pub extern "C" fn wr_dp_push_yuv_planar_image(state: &mut WrState,
clip_rect: clip,
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, prefer_compositor_surface),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -3089,7 +3098,8 @@ pub extern "C" fn wr_dp_push_yuv_NV12_image(state: &mut WrState,
color_depth: WrColorDepth,
color_space: WrYuvColorSpace,
color_range: WrColorRange,
image_rendering: ImageRendering) {
image_rendering: ImageRendering,
prefer_compositor_surface: bool) {
debug_assert!(unsafe { is_in_main_thread() || is_in_compositor_thread() });
let space_and_clip = parent.to_webrender(state.pipeline_id);
@ -3098,7 +3108,7 @@ pub extern "C" fn wr_dp_push_yuv_NV12_image(state: &mut WrState,
clip_rect: clip,
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, prefer_compositor_surface),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -3125,7 +3135,8 @@ pub extern "C" fn wr_dp_push_yuv_interleaved_image(state: &mut WrState,
color_depth: WrColorDepth,
color_space: WrYuvColorSpace,
color_range: WrColorRange,
image_rendering: ImageRendering) {
image_rendering: ImageRendering,
prefer_compositor_surface: bool) {
debug_assert!(unsafe { is_in_main_thread() || is_in_compositor_thread() });
let space_and_clip = parent.to_webrender(state.pipeline_id);
@ -3134,7 +3145,7 @@ pub extern "C" fn wr_dp_push_yuv_interleaved_image(state: &mut WrState,
clip_rect: clip,
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, prefer_compositor_surface),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -3171,7 +3182,7 @@ pub extern "C" fn wr_dp_push_text(state: &mut WrState,
clip_rect: clip,
spatial_id: space_and_clip.spatial_id,
clip_id: space_and_clip.clip_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, /* prefer_compositor_surface */ false),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -3228,7 +3239,7 @@ pub extern "C" fn wr_dp_push_line(state: &mut WrState,
clip_rect: *clip,
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, /* prefer_compositor_surface */ false),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -3274,7 +3285,7 @@ pub extern "C" fn wr_dp_push_border(state: &mut WrState,
clip_rect: clip,
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, /* prefer_compositor_surface */ false),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -3324,7 +3335,7 @@ pub extern "C" fn wr_dp_push_border_image(state: &mut WrState,
clip_rect: clip,
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, /* prefer_compositor_surface */ false),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -3383,7 +3394,7 @@ pub extern "C" fn wr_dp_push_border_gradient(state: &mut WrState,
clip_rect: clip,
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, /* prefer_compositor_surface */ false),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -3446,7 +3457,7 @@ pub extern "C" fn wr_dp_push_border_radial_gradient(state: &mut WrState,
clip_rect: clip,
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, /* prefer_compositor_surface */ false),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -3509,7 +3520,7 @@ pub extern "C" fn wr_dp_push_border_conic_gradient(state: &mut WrState,
clip_rect: clip,
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, /* prefer_compositor_surface */ false),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -3553,7 +3564,7 @@ pub extern "C" fn wr_dp_push_linear_gradient(state: &mut WrState,
clip_rect: clip,
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, /* prefer_compositor_surface */ false),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -3598,7 +3609,7 @@ pub extern "C" fn wr_dp_push_radial_gradient(state: &mut WrState,
clip_rect: clip,
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, /* prefer_compositor_surface */ false),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -3642,7 +3653,7 @@ pub extern "C" fn wr_dp_push_conic_gradient(state: &mut WrState,
clip_rect: clip,
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, /* prefer_compositor_surface */ false),
hit_info: state.current_tag,
item_key: state.current_item_key,
};
@ -3676,7 +3687,7 @@ pub extern "C" fn wr_dp_push_box_shadow(state: &mut WrState,
clip_rect: clip,
clip_id: space_and_clip.clip_id,
spatial_id: space_and_clip.spatial_id,
flags: prim_flags(is_backface_visible),
flags: prim_flags(is_backface_visible, /* prefer_compositor_surface */ false),
hit_info: state.current_tag,
item_key: state.current_item_key,
};