Line data Source code
1 : /* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 : * This Source Code Form is subject to the terms of the Mozilla Public
3 : * License, v. 2.0. If a copy of the MPL was not distributed with this
4 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 :
6 : #ifndef MOZILLA_GFX_RENDERBUFFERTEXTUREHOST_H
7 : #define MOZILLA_GFX_RENDERBUFFERTEXTUREHOST_H
8 :
9 : #include "RenderTextureHost.h"
10 :
11 : namespace mozilla {
12 : namespace wr {
13 :
14 : class RenderBufferTextureHost final : public RenderTextureHost
15 : {
16 : public:
17 : RenderBufferTextureHost(uint8_t* aBuffer,
18 : const layers::BufferDescriptor& aDescriptor);
19 :
20 : virtual bool Lock() override;
21 : virtual void Unlock() override;
22 :
23 0 : virtual RenderBufferTextureHost* AsBufferTextureHost() override
24 : {
25 0 : return this;
26 : }
27 :
28 : class RenderBufferData
29 : {
30 : public:
31 0 : RenderBufferData(uint8_t* aData, size_t aBufferSize)
32 0 : : mData(aData)
33 0 : , mBufferSize(aBufferSize)
34 : {
35 0 : }
36 : const uint8_t* mData;
37 : size_t mBufferSize;
38 : };
39 :
40 : RenderBufferData GetBufferDataForRender(uint8_t aChannelIndex);
41 :
42 : private:
43 : virtual ~RenderBufferTextureHost();
44 :
45 0 : uint8_t* GetBuffer() const
46 : {
47 0 : return mBuffer;
48 : }
49 :
50 : uint8_t* mBuffer;
51 : layers::BufferDescriptor mDescriptor;
52 : gfx::IntSize mSize;
53 : gfx::SurfaceFormat mFormat;
54 :
55 : RefPtr<gfx::DataSourceSurface> mSurface;
56 : gfx::DataSourceSurface::MappedSurface mMap;
57 :
58 : RefPtr<gfx::DataSourceSurface> mYSurface;
59 : RefPtr<gfx::DataSourceSurface> mCbSurface;
60 : RefPtr<gfx::DataSourceSurface> mCrSurface;
61 : gfx::DataSourceSurface::MappedSurface mYMap;
62 : gfx::DataSourceSurface::MappedSurface mCbMap;
63 : gfx::DataSourceSurface::MappedSurface mCrMap;
64 :
65 : bool mLocked;
66 : };
67 :
68 : } // namespace wr
69 : } // namespace mozilla
70 :
71 : #endif // MOZILLA_GFX_RENDERBUFFERTEXTUREHOST_H
|