• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2020 Google LLC
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 GrBackendSurfaceMutableStateImpl_DEFINED
9 #define GrBackendSurfaceMutableStateImpl_DEFINED
10 
11 #include "include/core/SkRefCnt.h"
12 #include "include/gpu/GrBackendSurfaceMutableState.h"
13 
14 class GrBackendSurfaceMutableStateImpl : public SkRefCnt {
15 public:
16 #ifdef SK_VULKAN
GrBackendSurfaceMutableStateImpl(VkImageLayout layout,uint32_t queueFamilyIndex)17     GrBackendSurfaceMutableStateImpl(VkImageLayout layout, uint32_t queueFamilyIndex)
18             : fState(layout, queueFamilyIndex) {}
19 
GrBackendSurfaceMutableStateImpl(GrVkSharedImageInfo sharedInfo)20     GrBackendSurfaceMutableStateImpl(GrVkSharedImageInfo sharedInfo)
21             : fState(sharedInfo.getImageLayout(), sharedInfo.getQueueFamilyIndex()) {}
22 #endif
23 
set(const GrBackendSurfaceMutableState & state)24     void set(const GrBackendSurfaceMutableState& state) { fState = state; }
25 
26 #ifdef SK_VULKAN
getImageLayout()27     VkImageLayout getImageLayout() const {
28         SkASSERT(fState.fBackend == GrBackend::kVulkan);
29         return fState.fVkState.getImageLayout();
30     }
31 
setImageLayout(VkImageLayout layout)32     void setImageLayout(VkImageLayout layout) {
33         SkASSERT(fState.fBackend == GrBackend::kVulkan);
34         fState.fVkState.setImageLayout(layout);
35     }
36 
getQueueFamilyIndex()37     uint32_t getQueueFamilyIndex() const {
38         SkASSERT(fState.fBackend == GrBackend::kVulkan);
39         return fState.fVkState.getQueueFamilyIndex();
40     }
41 
setQueueFamilyIndex(uint32_t queueFamilyIndex)42     void setQueueFamilyIndex(uint32_t queueFamilyIndex) {
43         SkASSERT(fState.fBackend == GrBackend::kVulkan);
44         fState.fVkState.setQueueFamilyIndex(queueFamilyIndex);
45     }
46 
getVkSharedImageInfo()47     const GrVkSharedImageInfo& getVkSharedImageInfo() {
48         SkASSERT(fState.fBackend == GrBackend::kVulkan);
49         return fState.fVkState;
50     }
51 #endif
52 
53 
54 private:
55     GrBackendSurfaceMutableState fState;
56 };
57 
58 #endif
59