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