blob: c80b8673b5d58cc10f7839b3556663bae9d967de [file] [log] [blame]
/*
* Copyright 2021 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "include/gpu/graphite/BackendTexture.h"
#include "include/gpu/MutableTextureState.h"
#include "src/gpu/graphite/BackendTexturePriv.h"
namespace skgpu::graphite {
BackendTexture::BackendTexture() = default;
BackendTexture::~BackendTexture() = default;
BackendTexture::BackendTexture(const BackendTexture& that) {
*this = that;
}
static inline void assert_is_supported_backend(const BackendApi& backend) {
SkASSERT(backend == BackendApi::kDawn ||
backend == BackendApi::kMetal ||
backend == BackendApi::kVulkan);
}
BackendTexture& BackendTexture::operator=(const BackendTexture& that) {
if (!that.isValid()) {
fInfo = {};
return *this;
}
// We shouldn't be mixing backends.
SkASSERT(!this->isValid() || this->backend() == that.backend());
// If that was valid, it should have a supported backend.
assert_is_supported_backend(that.backend());
fDimensions = that.fDimensions;
fInfo = that.fInfo;
fTextureData.reset();
that.fTextureData->copyTo(fTextureData);
return *this;
}
bool BackendTexture::operator==(const BackendTexture& that) const {
if (!this->isValid() || !that.isValid()) {
return false;
}
if (fDimensions != that.fDimensions || fInfo != that.fInfo) {
return false;
}
assert_is_supported_backend(this->backend());
return fTextureData->equal(that.fTextureData.get());
}
BackendTextureData::~BackendTextureData(){};
} // namespace skgpu::graphite