SharedSurfaceAndroidHardwareBuffer.h (1976B)
1 /* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 4; -*- */ 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 SHARED_SURFACE_ANDROID_HARDWARE_BUFFER_H_ 7 #define SHARED_SURFACE_ANDROID_HARDWARE_BUFFER_H_ 8 9 #include "mozilla/Mutex.h" 10 #include "CompositorTypes.h" 11 #include "SharedSurface.h" 12 13 namespace mozilla { 14 15 namespace layers { 16 class AndroidHardwareBuffer; 17 } // namespace layers 18 19 namespace gl { 20 21 class SharedSurface_AndroidHardwareBuffer final : public SharedSurface { 22 public: 23 const UniquePtr<Texture> mTex; 24 const RefPtr<layers::AndroidHardwareBuffer> mAndroidHardwareBuffer; 25 EGLSync mSync = 0; 26 27 static UniquePtr<SharedSurface_AndroidHardwareBuffer> Create( 28 const SharedSurfaceDesc&); 29 30 protected: 31 SharedSurface_AndroidHardwareBuffer( 32 const SharedSurfaceDesc&, UniquePtr<MozFramebuffer>, UniquePtr<Texture>, 33 RefPtr<layers::AndroidHardwareBuffer> buffer); 34 35 public: 36 virtual ~SharedSurface_AndroidHardwareBuffer(); 37 38 void LockProdImpl() override {} 39 void UnlockProdImpl() override {} 40 41 void ProducerAcquireImpl() override {} 42 void ProducerReleaseImpl() override; 43 44 Maybe<layers::SurfaceDescriptor> ToSurfaceDescriptor() override; 45 46 void WaitForBufferOwnership() override; 47 }; 48 49 class SurfaceFactory_AndroidHardwareBuffer final : public SurfaceFactory { 50 public: 51 static UniquePtr<SurfaceFactory_AndroidHardwareBuffer> Create(GLContext&); 52 53 private: 54 explicit SurfaceFactory_AndroidHardwareBuffer( 55 const PartialSharedSurfaceDesc& desc) 56 : SurfaceFactory(desc) {} 57 58 public: 59 virtual UniquePtr<SharedSurface> CreateSharedImpl( 60 const SharedSurfaceDesc& desc) override { 61 return SharedSurface_AndroidHardwareBuffer::Create(desc); 62 } 63 }; 64 65 } // namespace gl 66 67 } /* namespace mozilla */ 68 69 #endif /* SHARED_SURFACE_ANDROID_HARDWARE_BUFFER_H_ */