Skia
2DGraphicsLibrary
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GrBackendSemaphore.h
1 /*
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 GrBackendSemaphore_DEFINED
9 #define GrBackendSemaphore_DEFINED
10 
11 #include "GrTypes.h"
12 
13 #include "gl/GrGLTypes.h"
14 
15 #ifdef SK_VULKAN
16 #include "vk/GrVkTypes.h"
17 #endif
18 
23 public:
24  // For convenience we just set the backend here to OpenGL. The GrBackendSemaphore cannot be used
25  // until either initGL or initVulkan are called which will set the appropriate GrBackend.
26  GrBackendSemaphore() : fBackend(kOpenGL_GrBackend), fGLSync(0), fIsInitialized(false) {}
27 
28  void initGL(GrGLsync sync) {
29  fBackend = kOpenGL_GrBackend;
30  fGLSync = sync;
31  fIsInitialized = true;
32  }
33 
34 #ifdef SK_VULKAN
35  void initVulkan(VkSemaphore semaphore) {
36  fBackend = kVulkan_GrBackend;
37  fVkSemaphore = semaphore;
38  fIsInitialized = true;
39  }
40 #endif
41 
42  GrGLsync glSync() const {
43  if (!fIsInitialized || kOpenGL_GrBackend != fBackend) {
44  return 0;
45  }
46  return fGLSync;
47  }
48 
49 #ifdef SK_VULKAN
50  VkSemaphore vkSemaphore() const {
51  if (!fIsInitialized || kVulkan_GrBackend != fBackend) {
52  return VK_NULL_HANDLE;
53  }
54  return fVkSemaphore;
55  }
56 #endif
57 
58 private:
59  GrBackend fBackend;
60  union {
61  GrGLsync fGLSync;
62 #ifdef SK_VULKAN
63  VkSemaphore fVkSemaphore;
64 #endif
65  };
66  bool fIsInitialized;
67 };
68 
69 #endif
Wrapper class for passing into and receiving data from Ganesh about a backend semaphore object...
Definition: GrBackendSemaphore.h:22