diff --git a/gfx/layers/composite/TextureHost.h b/gfx/layers/composite/TextureHost.h index dd8f075d25a0..85f82fe37155 100644 --- a/gfx/layers/composite/TextureHost.h +++ b/gfx/layers/composite/TextureHost.h @@ -172,6 +172,13 @@ public: MOZ_ASSERT(mCompositableCount >= 0); } + // When iterating as a BigImage, this creates temporary TextureSources wrapping + // individual tiles. + virtual RefPtr ExtractCurrentTile() { + NS_WARNING("Implementation does not expose tile sources"); + return nullptr; + } + int NumCompositableRefs() const { return mCompositableCount; } protected: diff --git a/gfx/layers/d3d11/TextureD3D11.cpp b/gfx/layers/d3d11/TextureD3D11.cpp index f7985a3ce873..553bb200c042 100644 --- a/gfx/layers/d3d11/TextureD3D11.cpp +++ b/gfx/layers/d3d11/TextureD3D11.cpp @@ -1215,6 +1215,13 @@ DataTextureSourceD3D11::GetD3D11Texture() const : mTexture; } +RefPtr +DataTextureSourceD3D11::ExtractCurrentTile() +{ + MOZ_ASSERT(mIterating); + return new DataTextureSourceD3D11(mDevice, mFormat, mTileTextures[mCurrentTile]); +} + ID3D11ShaderResourceView* DataTextureSourceD3D11::GetShaderResourceView() { diff --git a/gfx/layers/d3d11/TextureD3D11.h b/gfx/layers/d3d11/TextureD3D11.h index 0e3af41131fd..5ae7a1d7c58d 100644 --- a/gfx/layers/d3d11/TextureD3D11.h +++ b/gfx/layers/d3d11/TextureD3D11.h @@ -264,6 +264,8 @@ public: mCurrentTile = 0; } + RefPtr ExtractCurrentTile() override; + void Reset(); protected: gfx::IntRect GetTileRect(uint32_t aIndex) const;