blob: 851ae021261445cd209e4ed07433ce8cba9e9928 [file] [log] [blame]
Greg Daniel6be35232017-03-01 17:01:09 -05001/*
2 * Copyright 2017 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef GrGLSemaphore_DEFINED
9#define GrGLSemaphore_DEFINED
10
Greg Daniela5cb7812017-06-16 09:45:32 -040011#include "GrBackendSemaphore.h"
Brian Salomonf4a00e42018-03-23 15:15:03 -040012#include "GrSemaphore.h"
13#include "GrTypesPriv.h"
Greg Daniel6ecc9112017-06-16 16:17:03 +000014
15class GrGLGpu;
Greg Daniel6be35232017-03-01 17:01:09 -050016
17class GrGLSemaphore : public GrSemaphore {
18public:
Brian Salomon62db8d52018-08-30 10:37:47 -040019 static sk_sp<GrGLSemaphore> Make(GrGLGpu* gpu, bool isOwned) {
Greg Daniela5cb7812017-06-16 09:45:32 -040020 return sk_sp<GrGLSemaphore>(new GrGLSemaphore(gpu, isOwned));
21 }
22
Brian Salomon62db8d52018-08-30 10:37:47 -040023 static sk_sp<GrGLSemaphore> MakeWrapped(GrGLGpu* gpu,
Greg Daniela5cb7812017-06-16 09:45:32 -040024 GrGLsync sync,
25 GrWrapOwnership ownership) {
26 auto sema = sk_sp<GrGLSemaphore>(new GrGLSemaphore(gpu,
27 kBorrow_GrWrapOwnership != ownership));
28 sema->setSync(sync);
29 return sema;
Greg Daniel6be35232017-03-01 17:01:09 -050030 }
31
Greg Daniel6be35232017-03-01 17:01:09 -050032 GrGLsync sync() const { return fSync; }
33 void setSync(const GrGLsync& sync) { fSync = sync; }
34
Brian Salomon1e576e72018-08-30 10:20:38 -040035 GrBackendSemaphore backendSemaphore() const override {
36 GrBackendSemaphore backendSemaphore;
37 backendSemaphore.initGL(fSync);
38 return backendSemaphore;
39 }
40
Greg Daniel6be35232017-03-01 17:01:09 -050041private:
Brian Salomon62db8d52018-08-30 10:37:47 -040042 GrGLSemaphore(GrGLGpu* gpu, bool isOwned);
Greg Daniela5cb7812017-06-16 09:45:32 -040043
Brian Salomon62db8d52018-08-30 10:37:47 -040044 void onRelease() override;
45 void onAbandon() override;
Greg Daniel6be35232017-03-01 17:01:09 -050046
47 GrGLsync fSync;
Greg Daniela5cb7812017-06-16 09:45:32 -040048 bool fIsOwned;
Greg Daniel6be35232017-03-01 17:01:09 -050049
50 typedef GrSemaphore INHERITED;
51};
52
53#endif