1*8975f5c5SAndroid Build Coastguard Worker // 2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2019 The ANGLE Project Authors. All rights reserved. 3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file. 5*8975f5c5SAndroid Build Coastguard Worker // 6*8975f5c5SAndroid Build Coastguard Worker // Semaphore.h: Defines the gl::Semaphore class [EXT_external_objects] 7*8975f5c5SAndroid Build Coastguard Worker 8*8975f5c5SAndroid Build Coastguard Worker #ifndef LIBANGLE_SEMAPHORE_H_ 9*8975f5c5SAndroid Build Coastguard Worker #define LIBANGLE_SEMAPHORE_H_ 10*8975f5c5SAndroid Build Coastguard Worker 11*8975f5c5SAndroid Build Coastguard Worker #include <memory> 12*8975f5c5SAndroid Build Coastguard Worker 13*8975f5c5SAndroid Build Coastguard Worker #include "angle_gl.h" 14*8975f5c5SAndroid Build Coastguard Worker #include "common/PackedEnums.h" 15*8975f5c5SAndroid Build Coastguard Worker #include "common/angleutils.h" 16*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Error.h" 17*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/RefCountObject.h" 18*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/angletypes.h" 19*8975f5c5SAndroid Build Coastguard Worker 20*8975f5c5SAndroid Build Coastguard Worker namespace rx 21*8975f5c5SAndroid Build Coastguard Worker { 22*8975f5c5SAndroid Build Coastguard Worker class GLImplFactory; 23*8975f5c5SAndroid Build Coastguard Worker class SemaphoreImpl; 24*8975f5c5SAndroid Build Coastguard Worker } // namespace rx 25*8975f5c5SAndroid Build Coastguard Worker 26*8975f5c5SAndroid Build Coastguard Worker namespace gl 27*8975f5c5SAndroid Build Coastguard Worker { 28*8975f5c5SAndroid Build Coastguard Worker class Context; 29*8975f5c5SAndroid Build Coastguard Worker 30*8975f5c5SAndroid Build Coastguard Worker class Semaphore final : public RefCountObject<SemaphoreID> 31*8975f5c5SAndroid Build Coastguard Worker { 32*8975f5c5SAndroid Build Coastguard Worker public: 33*8975f5c5SAndroid Build Coastguard Worker Semaphore(rx::GLImplFactory *factory, SemaphoreID id); 34*8975f5c5SAndroid Build Coastguard Worker ~Semaphore() override; 35*8975f5c5SAndroid Build Coastguard Worker 36*8975f5c5SAndroid Build Coastguard Worker void onDestroy(const Context *context) override; 37*8975f5c5SAndroid Build Coastguard Worker getImplementation()38*8975f5c5SAndroid Build Coastguard Worker rx::SemaphoreImpl *getImplementation() const { return mImplementation.get(); } 39*8975f5c5SAndroid Build Coastguard Worker 40*8975f5c5SAndroid Build Coastguard Worker angle::Result importFd(Context *context, HandleType handleType, GLint fd); 41*8975f5c5SAndroid Build Coastguard Worker angle::Result importZirconHandle(Context *context, HandleType handleType, GLuint handle); 42*8975f5c5SAndroid Build Coastguard Worker 43*8975f5c5SAndroid Build Coastguard Worker angle::Result wait(Context *context, 44*8975f5c5SAndroid Build Coastguard Worker const BufferBarrierVector &bufferBarriers, 45*8975f5c5SAndroid Build Coastguard Worker const TextureBarrierVector &textureBarriers); 46*8975f5c5SAndroid Build Coastguard Worker 47*8975f5c5SAndroid Build Coastguard Worker angle::Result signal(Context *context, 48*8975f5c5SAndroid Build Coastguard Worker const BufferBarrierVector &bufferBarriers, 49*8975f5c5SAndroid Build Coastguard Worker const TextureBarrierVector &textureBarriers); 50*8975f5c5SAndroid Build Coastguard Worker 51*8975f5c5SAndroid Build Coastguard Worker private: 52*8975f5c5SAndroid Build Coastguard Worker std::unique_ptr<rx::SemaphoreImpl> mImplementation; 53*8975f5c5SAndroid Build Coastguard Worker }; 54*8975f5c5SAndroid Build Coastguard Worker 55*8975f5c5SAndroid Build Coastguard Worker } // namespace gl 56*8975f5c5SAndroid Build Coastguard Worker 57*8975f5c5SAndroid Build Coastguard Worker #endif // LIBANGLE_SEMAPHORE_H_ 58