blob: 09fe703bb702d7ab0f407fdd961ee877517a2ac5 [file] [log] [blame]
/*
* 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