mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 11:55:49 +00:00
Bug 971946 - Remove TextureClientData r=nical
This commit is contained in:
parent
38ebd87705
commit
5bb3191d5e
@ -68,13 +68,6 @@ TextureClientX11::ToSurfaceDescriptor(SurfaceDescriptor& aOutDescriptor)
|
||||
return true;
|
||||
}
|
||||
|
||||
TextureClientData*
|
||||
TextureClientX11::DropTextureData()
|
||||
{
|
||||
MOZ_ASSERT(!(mFlags & TextureFlags::DEALLOCATE_CLIENT));
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool
|
||||
TextureClientX11::AllocateForSurface(IntSize aSize, TextureAllocationFlags aTextureFlags)
|
||||
{
|
||||
|
@ -29,8 +29,6 @@ class TextureClientX11 : public TextureClient
|
||||
|
||||
virtual bool ToSurfaceDescriptor(SurfaceDescriptor& aOutDescriptor) MOZ_OVERRIDE;
|
||||
|
||||
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE;
|
||||
|
||||
virtual gfx::IntSize GetSize() const MOZ_OVERRIDE { return mSize; }
|
||||
|
||||
virtual bool Lock(OpenMode aMode) MOZ_OVERRIDE;
|
||||
|
@ -27,7 +27,6 @@ class ImageBridgeChild;
|
||||
class CompositableForwarder;
|
||||
class CompositableChild;
|
||||
class SurfaceDescriptor;
|
||||
class TextureClientData;
|
||||
class PCompositableChild;
|
||||
/**
|
||||
* CompositableClient manages the texture-specific logic for composite layers,
|
||||
|
@ -82,7 +82,6 @@ public:
|
||||
|
||||
TextureChild()
|
||||
: mForwarder(nullptr)
|
||||
, mTextureData(nullptr)
|
||||
, mTextureClient(nullptr)
|
||||
, mIPCOpen(false)
|
||||
{
|
||||
@ -104,18 +103,6 @@ public:
|
||||
SendClientRecycle();
|
||||
}
|
||||
|
||||
/**
|
||||
* Only used during the deallocation phase iff we need synchronization between
|
||||
* the client and host side for deallocation (that is, when the data is going
|
||||
* to be deallocated or recycled on the client side).
|
||||
*/
|
||||
void SetTextureData(TextureClientData* aData)
|
||||
{
|
||||
mTextureData = aData;
|
||||
}
|
||||
|
||||
void DeleteTextureData();
|
||||
|
||||
CompositableForwarder* GetForwarder() { return mForwarder; }
|
||||
|
||||
ISurfaceAllocator* GetAllocator() { return mForwarder; }
|
||||
@ -143,28 +130,15 @@ private:
|
||||
|
||||
RefPtr<CompositableForwarder> mForwarder;
|
||||
RefPtr<TextureClient> mWaitForRecycle;
|
||||
TextureClientData* mTextureData;
|
||||
TextureClient* mTextureClient;
|
||||
bool mIPCOpen;
|
||||
|
||||
friend class TextureClient;
|
||||
};
|
||||
|
||||
void
|
||||
TextureChild::DeleteTextureData()
|
||||
{
|
||||
mWaitForRecycle = nullptr;
|
||||
if (mTextureData) {
|
||||
mTextureData->DeallocateSharedData(GetAllocator());
|
||||
delete mTextureData;
|
||||
mTextureData = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
TextureChild::Recv__delete__()
|
||||
{
|
||||
DeleteTextureData();
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -362,80 +336,6 @@ TextureClient::CreateBufferTextureClient(ISurfaceAllocator* aAllocator,
|
||||
return result.forget();
|
||||
}
|
||||
|
||||
|
||||
class ShmemTextureClientData : public TextureClientData
|
||||
{
|
||||
public:
|
||||
ShmemTextureClientData(ipc::Shmem& aShmem)
|
||||
: mShmem(aShmem)
|
||||
{
|
||||
MOZ_COUNT_CTOR(ShmemTextureClientData);
|
||||
}
|
||||
|
||||
~ShmemTextureClientData()
|
||||
{
|
||||
MOZ_COUNT_CTOR(ShmemTextureClientData);
|
||||
}
|
||||
|
||||
virtual void DeallocateSharedData(ISurfaceAllocator* allocator)
|
||||
{
|
||||
allocator->DeallocShmem(mShmem);
|
||||
mShmem = ipc::Shmem();
|
||||
}
|
||||
|
||||
private:
|
||||
ipc::Shmem mShmem;
|
||||
};
|
||||
|
||||
class MemoryTextureClientData : public TextureClientData
|
||||
{
|
||||
public:
|
||||
MemoryTextureClientData(uint8_t* aBuffer)
|
||||
: mBuffer(aBuffer)
|
||||
{
|
||||
MOZ_COUNT_CTOR(MemoryTextureClientData);
|
||||
}
|
||||
|
||||
~MemoryTextureClientData()
|
||||
{
|
||||
MOZ_ASSERT(!mBuffer, "Forgot to deallocate the shared texture data?");
|
||||
MOZ_COUNT_DTOR(MemoryTextureClientData);
|
||||
}
|
||||
|
||||
virtual void DeallocateSharedData(ISurfaceAllocator*)
|
||||
{
|
||||
delete[] mBuffer;
|
||||
mBuffer = nullptr;
|
||||
}
|
||||
|
||||
private:
|
||||
uint8_t* mBuffer;
|
||||
};
|
||||
|
||||
TextureClientData*
|
||||
MemoryTextureClient::DropTextureData()
|
||||
{
|
||||
if (!mBuffer) {
|
||||
return nullptr;
|
||||
}
|
||||
TextureClientData* result = new MemoryTextureClientData(mBuffer);
|
||||
MarkInvalid();
|
||||
mBuffer = nullptr;
|
||||
return result;
|
||||
}
|
||||
|
||||
TextureClientData*
|
||||
ShmemTextureClient::DropTextureData()
|
||||
{
|
||||
if (!mShmem.IsReadable()) {
|
||||
return nullptr;
|
||||
}
|
||||
TextureClientData* result = new ShmemTextureClientData(mShmem);
|
||||
MarkInvalid();
|
||||
mShmem = ipc::Shmem();
|
||||
return result;
|
||||
}
|
||||
|
||||
TextureClient::TextureClient(TextureFlags aFlags)
|
||||
: mFlags(aFlags)
|
||||
, mShared(false)
|
||||
|
@ -80,28 +80,6 @@ public:
|
||||
StereoMode aStereoMode) = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Holds the shared data of a TextureClient, to be destroyed later.
|
||||
*
|
||||
* TextureClient's destructor initiates the destruction sequence of the
|
||||
* texture client/host pair. If the shared data is to be deallocated on the
|
||||
* host side, there is nothing to do.
|
||||
* On the other hand, if the client data must be deallocated on the client
|
||||
* side, the CompositableClient will ask the TextureClient to drop its shared
|
||||
* data in the form of a TextureClientData object. This data will be kept alive
|
||||
* until the host side confirms that it is not using the data anymore and that
|
||||
* it is completely safe to deallocate the shared data.
|
||||
*
|
||||
* See:
|
||||
* - The PTexture IPDL protocol
|
||||
* - CompositableChild in TextureClient.cpp
|
||||
*/
|
||||
class TextureClientData {
|
||||
public:
|
||||
virtual void DeallocateSharedData(ISurfaceAllocator* allocator) = 0;
|
||||
virtual ~TextureClientData() {}
|
||||
};
|
||||
|
||||
/**
|
||||
* TextureClient is a thin abstraction over texture data that need to be shared
|
||||
* between the content process and the compositor process. It is the
|
||||
@ -344,16 +322,6 @@ protected:
|
||||
*/
|
||||
void MarkInvalid() { mValid = false; }
|
||||
|
||||
/**
|
||||
* Drop the shared data into a TextureClientData object and mark this
|
||||
* TextureClient as invalid.
|
||||
*
|
||||
* The TextureClient must not hold any reference to the shared data
|
||||
* after this method has been called.
|
||||
* The TextureClientData is owned by the caller.
|
||||
*/
|
||||
virtual TextureClientData* DropTextureData() = 0;
|
||||
|
||||
/**
|
||||
* Should only be called *once* per texture, in TextureClient::InitIPDLActor.
|
||||
* Some texture implementations rely on the fact that the descriptor will be
|
||||
@ -470,8 +438,6 @@ public:
|
||||
|
||||
virtual bool IsAllocated() const MOZ_OVERRIDE { return mAllocated; }
|
||||
|
||||
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE;
|
||||
|
||||
virtual bool HasInternalBuffer() const MOZ_OVERRIDE { return true; }
|
||||
|
||||
mozilla::ipc::Shmem& GetShmem() { return mShmem; }
|
||||
@ -506,8 +472,6 @@ public:
|
||||
|
||||
virtual bool HasInternalBuffer() const MOZ_OVERRIDE { return true; }
|
||||
|
||||
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE;
|
||||
|
||||
protected:
|
||||
uint8_t* mBuffer;
|
||||
size_t mBufSize;
|
||||
|
@ -50,8 +50,6 @@ public:
|
||||
|
||||
virtual gfx::IntSize GetSize() const MOZ_OVERRIDE { return mSize; }
|
||||
|
||||
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE { return nullptr; }
|
||||
|
||||
virtual gfx::SurfaceFormat GetFormat() const MOZ_OVERRIDE { return mFormat; }
|
||||
|
||||
virtual bool CanExposeDrawTarget() const MOZ_OVERRIDE { return true; }
|
||||
|
@ -304,28 +304,6 @@ TextureSourceD3D9::SurfaceToTexture(DeviceManagerD3D9* aDeviceManager,
|
||||
return texture;
|
||||
}
|
||||
|
||||
class D3D9TextureClientData : public TextureClientData
|
||||
{
|
||||
public:
|
||||
D3D9TextureClientData(IDirect3DTexture9* aTexture)
|
||||
: mTexture(aTexture)
|
||||
{}
|
||||
|
||||
D3D9TextureClientData(gfxWindowsSurface* aWindowSurface)
|
||||
: mWindowSurface(aWindowSurface)
|
||||
{}
|
||||
|
||||
virtual void DeallocateSharedData(ISurfaceAllocator*) MOZ_OVERRIDE
|
||||
{
|
||||
mWindowSurface = nullptr;
|
||||
mTexture = nullptr;
|
||||
}
|
||||
|
||||
private:
|
||||
RefPtr<IDirect3DTexture9> mTexture;
|
||||
nsRefPtr<gfxWindowsSurface> mWindowSurface;
|
||||
};
|
||||
|
||||
DataTextureSourceD3D9::DataTextureSourceD3D9(gfx::SurfaceFormat aFormat,
|
||||
CompositorD3D9* aCompositor,
|
||||
TextureFlags aFlags,
|
||||
@ -702,15 +680,6 @@ CairoTextureClientD3D9::AllocateForSurface(gfx::IntSize aSize, TextureAllocation
|
||||
return true;
|
||||
}
|
||||
|
||||
TextureClientData*
|
||||
CairoTextureClientD3D9::DropTextureData()
|
||||
{
|
||||
TextureClientData* data = new D3D9TextureClientData(mTexture);
|
||||
mTexture = nullptr;
|
||||
MarkInvalid();
|
||||
return data;
|
||||
}
|
||||
|
||||
DIBTextureClientD3D9::DIBTextureClientD3D9(gfx::SurfaceFormat aFormat, TextureFlags aFlags)
|
||||
: TextureClient(aFlags)
|
||||
, mFormat(aFormat)
|
||||
@ -793,15 +762,6 @@ DIBTextureClientD3D9::AllocateForSurface(gfx::IntSize aSize, TextureAllocationFl
|
||||
return true;
|
||||
}
|
||||
|
||||
TextureClientData*
|
||||
DIBTextureClientD3D9::DropTextureData()
|
||||
{
|
||||
TextureClientData* data = new D3D9TextureClientData(mSurface);
|
||||
mSurface = nullptr;
|
||||
MarkInvalid();
|
||||
return data;
|
||||
}
|
||||
|
||||
SharedTextureClientD3D9::SharedTextureClientD3D9(gfx::SurfaceFormat aFormat, TextureFlags aFlags)
|
||||
: TextureClient(aFlags)
|
||||
, mFormat(aFormat)
|
||||
@ -816,15 +776,6 @@ SharedTextureClientD3D9::~SharedTextureClientD3D9()
|
||||
MOZ_COUNT_DTOR(SharedTextureClientD3D9);
|
||||
}
|
||||
|
||||
TextureClientData*
|
||||
SharedTextureClientD3D9::DropTextureData()
|
||||
{
|
||||
TextureClientData* data = new D3D9TextureClientData(mTexture);
|
||||
mTexture = nullptr;
|
||||
MarkInvalid();
|
||||
return data;
|
||||
}
|
||||
|
||||
bool
|
||||
SharedTextureClientD3D9::Lock(OpenMode)
|
||||
{
|
||||
|
@ -207,8 +207,6 @@ public:
|
||||
|
||||
virtual gfx::SurfaceFormat GetFormat() const { return mFormat; }
|
||||
|
||||
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE;
|
||||
|
||||
virtual bool CanExposeDrawTarget() const MOZ_OVERRIDE { return true; }
|
||||
|
||||
virtual TemporaryRef<gfx::DrawTarget> GetAsDrawTarget() MOZ_OVERRIDE;
|
||||
@ -258,8 +256,6 @@ public:
|
||||
|
||||
virtual gfx::SurfaceFormat GetFormat() const { return mFormat; }
|
||||
|
||||
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE;
|
||||
|
||||
virtual bool CanExposeDrawTarget() const MOZ_OVERRIDE { return true; }
|
||||
|
||||
virtual TemporaryRef<gfx::DrawTarget> GetAsDrawTarget() MOZ_OVERRIDE;
|
||||
@ -314,8 +310,6 @@ public:
|
||||
return gfx::IntSize(mDesc.Width, mDesc.Height);
|
||||
}
|
||||
|
||||
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE;
|
||||
|
||||
virtual bool HasInternalBuffer() const MOZ_OVERRIDE { return true; }
|
||||
|
||||
private:
|
||||
|
@ -18,35 +18,6 @@ namespace layers {
|
||||
using namespace mozilla::gfx;
|
||||
using namespace android;
|
||||
|
||||
class GrallocTextureClientData : public TextureClientData {
|
||||
public:
|
||||
GrallocTextureClientData(MaybeMagicGrallocBufferHandle aDesc)
|
||||
: mGrallocHandle(aDesc)
|
||||
{
|
||||
MOZ_COUNT_CTOR(GrallocTextureClientData);
|
||||
}
|
||||
|
||||
~GrallocTextureClientData()
|
||||
{
|
||||
MOZ_COUNT_DTOR(GrallocTextureClientData);
|
||||
}
|
||||
|
||||
virtual void DeallocateSharedData(ISurfaceAllocator* allocator) MOZ_OVERRIDE
|
||||
{
|
||||
allocator->DeallocGrallocBuffer(&mGrallocHandle);
|
||||
}
|
||||
|
||||
private:
|
||||
MaybeMagicGrallocBufferHandle mGrallocHandle;
|
||||
};
|
||||
|
||||
TextureClientData*
|
||||
GrallocTextureClientOGL::DropTextureData()
|
||||
{
|
||||
TextureClientData* result = new GrallocTextureClientData(mGrallocHandle);
|
||||
return result;
|
||||
}
|
||||
|
||||
GrallocTextureClientOGL::GrallocTextureClientOGL(MaybeMagicGrallocBufferHandle buffer,
|
||||
gfx::IntSize aSize,
|
||||
gfx::BackendType aMoz2dBackend,
|
||||
|
@ -60,8 +60,6 @@ public:
|
||||
|
||||
virtual bool ToSurfaceDescriptor(SurfaceDescriptor& aOutDescriptor) MOZ_OVERRIDE;
|
||||
|
||||
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE;
|
||||
|
||||
virtual void SetReleaseFenceHandle(FenceHandle aReleaseFenceHandle) MOZ_OVERRIDE;
|
||||
|
||||
virtual void WaitReleaseFence() MOZ_OVERRIDE;
|
||||
|
@ -65,30 +65,5 @@ MacIOSurfaceTextureClientOGL::GetSize() const
|
||||
return gfx::IntSize(mSurface->GetDevicePixelWidth(), mSurface->GetDevicePixelHeight());
|
||||
}
|
||||
|
||||
class MacIOSurfaceTextureClientData : public TextureClientData
|
||||
{
|
||||
public:
|
||||
MacIOSurfaceTextureClientData(MacIOSurface* aSurface)
|
||||
: mSurface(aSurface)
|
||||
{}
|
||||
|
||||
virtual void DeallocateSharedData(ISurfaceAllocator*) MOZ_OVERRIDE
|
||||
{
|
||||
mSurface = nullptr;
|
||||
}
|
||||
|
||||
private:
|
||||
RefPtr<MacIOSurface> mSurface;
|
||||
};
|
||||
|
||||
TextureClientData*
|
||||
MacIOSurfaceTextureClientOGL::DropTextureData()
|
||||
{
|
||||
TextureClientData* data = new MacIOSurfaceTextureClientData(mSurface);
|
||||
mSurface = nullptr;
|
||||
MarkInvalid();
|
||||
return data;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -34,8 +34,6 @@ public:
|
||||
|
||||
virtual gfx::IntSize GetSize() const;
|
||||
|
||||
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE;
|
||||
|
||||
virtual bool HasInternalBuffer() const MOZ_OVERRIDE { return false; }
|
||||
|
||||
protected:
|
||||
@ -46,4 +44,4 @@ protected:
|
||||
}
|
||||
}
|
||||
|
||||
#endif // MOZILLA_GFX_MACIOSURFACETEXTURECLIENTOGL_H
|
||||
#endif // MOZILLA_GFX_MACIOSURFACETEXTURECLIENTOGL_H
|
||||
|
@ -55,15 +55,6 @@ public:
|
||||
|
||||
virtual gfx::IntSize GetSize() const { return mSize; }
|
||||
|
||||
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE
|
||||
{
|
||||
// XXX - right now the code paths using this are managing the shared texture
|
||||
// data, although they should use a TextureClientData for this to ensure that
|
||||
// the destruction sequence is race-free.
|
||||
MarkInvalid();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
virtual gfx::SurfaceFormat GetFormat() const MOZ_OVERRIDE
|
||||
{
|
||||
return gfx::SurfaceFormat::UNKNOWN;
|
||||
@ -102,8 +93,6 @@ public:
|
||||
|
||||
virtual bool ToSurfaceDescriptor(SurfaceDescriptor& aOutDescriptor) MOZ_OVERRIDE;
|
||||
|
||||
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE { return nullptr; }
|
||||
|
||||
virtual bool HasInternalBuffer() const MOZ_OVERRIDE { return false; }
|
||||
|
||||
void InitWith(gfx::SurfaceStream* aStream);
|
||||
|
Loading…
Reference in New Issue
Block a user