/* * Copyright 2020 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef GrBackendSurfaceMutableStateImpl_DEFINED #define GrBackendSurfaceMutableStateImpl_DEFINED #include "include/core/SkRefCnt.h" #include "include/gpu/GrBackendSurfaceMutableState.h" class GrBackendSurfaceMutableStateImpl : public SkRefCnt { public: #ifdef SK_VULKAN GrBackendSurfaceMutableStateImpl(VkImageLayout layout, uint32_t queueFamilyIndex) : fState(layout, queueFamilyIndex) {} GrBackendSurfaceMutableStateImpl(GrVkSharedImageInfo sharedInfo) : fState(sharedInfo.getImageLayout(), sharedInfo.getQueueFamilyIndex()) {} #endif void set(const GrBackendSurfaceMutableState& state) { fState = state; } #ifdef SK_VULKAN VkImageLayout getImageLayout() const { SkASSERT(fState.fBackend == GrBackend::kVulkan); return fState.fVkState.getImageLayout(); } void setImageLayout(VkImageLayout layout) { SkASSERT(fState.fBackend == GrBackend::kVulkan); fState.fVkState.setImageLayout(layout); } uint32_t getQueueFamilyIndex() const { SkASSERT(fState.fBackend == GrBackend::kVulkan); return fState.fVkState.getQueueFamilyIndex(); } void setQueueFamilyIndex(uint32_t queueFamilyIndex) { SkASSERT(fState.fBackend == GrBackend::kVulkan); fState.fVkState.setQueueFamilyIndex(queueFamilyIndex); } const GrVkSharedImageInfo& getVkSharedImageInfo() { SkASSERT(fState.fBackend == GrBackend::kVulkan); return fState.fVkState; } #endif private: GrBackendSurfaceMutableState fState; }; #endif