diff -r 000000000000 -r 6474c204b198 gfx/layers/d3d10/ImageLayerD3D10.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gfx/layers/d3d10/ImageLayerD3D10.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,74 @@ +/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * 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/. */ + +#ifndef GFX_IMAGELAYERD3D10_H +#define GFX_IMAGELAYERD3D10_H + +#include "LayerManagerD3D10.h" +#include "ImageLayers.h" +#include "ImageContainer.h" +#include "yuv_convert.h" + +namespace mozilla { +namespace layers { + +class ImageLayerD3D10 : public ImageLayer, + public LayerD3D10 +{ +public: + ImageLayerD3D10(LayerManagerD3D10 *aManager) + : ImageLayer(aManager, nullptr) + , LayerD3D10(aManager) + { + mImplData = static_cast(this); + } + + // LayerD3D10 Implementation + virtual Layer* GetLayer(); + + virtual void RenderLayer(); + + void AllocateTexturesYCbCr(PlanarYCbCrImage *aImage); + + virtual already_AddRefed GetAsTexture(gfx::IntSize* aSize); + +private: + ID3D10ShaderResourceView* GetImageSRView(Image* aImage, bool& aHasAlpha, IDXGIKeyedMutex **aMutex = nullptr); +}; + +struct PlanarYCbCrD3D10BackendData : public ImageBackendData +{ + nsRefPtr mYTexture; + nsRefPtr mCrTexture; + nsRefPtr mCbTexture; + nsRefPtr mYView; + nsRefPtr mCbView; + nsRefPtr mCrView; +}; + +struct TextureD3D10BackendData : public ImageBackendData +{ + nsRefPtr mTexture; + nsRefPtr mSRView; +}; + +class RemoteDXGITextureImage : public Image { +public: + RemoteDXGITextureImage() : Image(nullptr, ImageFormat::REMOTE_IMAGE_DXGI_TEXTURE) {} + + virtual TemporaryRef GetAsSourceSurface() MOZ_OVERRIDE; + + mozilla::gfx::IntSize GetSize() { return mSize; } + + TextureD3D10BackendData *GetD3D10TextureBackendData(ID3D10Device *aDevice); + + mozilla::gfx::IntSize mSize; + RemoteImageData::Format mFormat; + HANDLE mHandle; +}; + +} /* layers */ +} /* mozilla */ +#endif /* GFX_IMAGELAYERD3D10_H */