| /* |
| * Copyright 2022 Google LLC. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef skgpu_MutableTextureStateRef_DEFINED |
| #define skgpu_MutableTextureStateRef_DEFINED |
| |
| #include "include/core/SkRefCnt.h" |
| #include "include/gpu/MutableTextureState.h" |
| |
| namespace skgpu { |
| |
| class MutableTextureStateRef : public SkRefCnt { |
| public: |
| #ifdef SK_VULKAN |
| MutableTextureStateRef(VkImageLayout layout, uint32_t queueFamilyIndex) |
| : fState(layout, queueFamilyIndex) {} |
| #endif |
| |
| void set(const MutableTextureState& state) { fState = state; } |
| |
| #ifdef SK_VULKAN |
| VkImageLayout getImageLayout() const { |
| SkASSERT(fState.fBackend == BackendApi::kVulkan); |
| return fState.fVkState.getImageLayout(); |
| } |
| |
| void setImageLayout(VkImageLayout layout) { |
| SkASSERT(fState.fBackend == BackendApi::kVulkan); |
| fState.fVkState.setImageLayout(layout); |
| } |
| |
| uint32_t getQueueFamilyIndex() const { |
| SkASSERT(fState.fBackend == BackendApi::kVulkan); |
| return fState.fVkState.getQueueFamilyIndex(); |
| } |
| |
| void setQueueFamilyIndex(uint32_t queueFamilyIndex) { |
| SkASSERT(fState.fBackend == BackendApi::kVulkan); |
| fState.fVkState.setQueueFamilyIndex(queueFamilyIndex); |
| } |
| |
| const VulkanMutableTextureState& getVkMutableTextureState() { |
| SkASSERT(fState.fBackend == BackendApi::kVulkan); |
| return fState.fVkState; |
| } |
| #endif |
| |
| |
| private: |
| MutableTextureState fState; |
| }; |
| |
| } // namespace skgpu |
| |
| #endif // skgpu_MutableTextureStateRef_DEFINED |
| |