1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2021 Google LLC 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/graphite/BackendTexture.h" 9*c8dee2aaSAndroid Build Coastguard Worker 10*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/MutableTextureState.h" 11*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/graphite/BackendTexturePriv.h" 12*c8dee2aaSAndroid Build Coastguard Worker 13*c8dee2aaSAndroid Build Coastguard Worker namespace skgpu::graphite { 14*c8dee2aaSAndroid Build Coastguard Worker 15*c8dee2aaSAndroid Build Coastguard Worker BackendTexture::BackendTexture() = default; 16*c8dee2aaSAndroid Build Coastguard Worker 17*c8dee2aaSAndroid Build Coastguard Worker BackendTexture::~BackendTexture() = default; 18*c8dee2aaSAndroid Build Coastguard Worker BackendTexture(const BackendTexture & that)19*c8dee2aaSAndroid Build Coastguard WorkerBackendTexture::BackendTexture(const BackendTexture& that) { 20*c8dee2aaSAndroid Build Coastguard Worker *this = that; 21*c8dee2aaSAndroid Build Coastguard Worker } 22*c8dee2aaSAndroid Build Coastguard Worker assert_is_supported_backend(const BackendApi & backend)23*c8dee2aaSAndroid Build Coastguard Workerstatic inline void assert_is_supported_backend(const BackendApi& backend) { 24*c8dee2aaSAndroid Build Coastguard Worker SkASSERT(backend == BackendApi::kDawn || 25*c8dee2aaSAndroid Build Coastguard Worker backend == BackendApi::kMetal || 26*c8dee2aaSAndroid Build Coastguard Worker backend == BackendApi::kVulkan); 27*c8dee2aaSAndroid Build Coastguard Worker } 28*c8dee2aaSAndroid Build Coastguard Worker operator =(const BackendTexture & that)29*c8dee2aaSAndroid Build Coastguard WorkerBackendTexture& BackendTexture::operator=(const BackendTexture& that) { 30*c8dee2aaSAndroid Build Coastguard Worker if (!that.isValid()) { 31*c8dee2aaSAndroid Build Coastguard Worker fInfo = {}; 32*c8dee2aaSAndroid Build Coastguard Worker return *this; 33*c8dee2aaSAndroid Build Coastguard Worker } 34*c8dee2aaSAndroid Build Coastguard Worker // We shouldn't be mixing backends. 35*c8dee2aaSAndroid Build Coastguard Worker SkASSERT(!this->isValid() || this->backend() == that.backend()); 36*c8dee2aaSAndroid Build Coastguard Worker // If that was valid, it should have a supported backend. 37*c8dee2aaSAndroid Build Coastguard Worker assert_is_supported_backend(that.backend()); 38*c8dee2aaSAndroid Build Coastguard Worker fDimensions = that.fDimensions; 39*c8dee2aaSAndroid Build Coastguard Worker fInfo = that.fInfo; 40*c8dee2aaSAndroid Build Coastguard Worker 41*c8dee2aaSAndroid Build Coastguard Worker fTextureData.reset(); 42*c8dee2aaSAndroid Build Coastguard Worker that.fTextureData->copyTo(fTextureData); 43*c8dee2aaSAndroid Build Coastguard Worker return *this; 44*c8dee2aaSAndroid Build Coastguard Worker } 45*c8dee2aaSAndroid Build Coastguard Worker operator ==(const BackendTexture & that) const46*c8dee2aaSAndroid Build Coastguard Workerbool BackendTexture::operator==(const BackendTexture& that) const { 47*c8dee2aaSAndroid Build Coastguard Worker if (!this->isValid() || !that.isValid()) { 48*c8dee2aaSAndroid Build Coastguard Worker return false; 49*c8dee2aaSAndroid Build Coastguard Worker } 50*c8dee2aaSAndroid Build Coastguard Worker 51*c8dee2aaSAndroid Build Coastguard Worker if (fDimensions != that.fDimensions || fInfo != that.fInfo) { 52*c8dee2aaSAndroid Build Coastguard Worker return false; 53*c8dee2aaSAndroid Build Coastguard Worker } 54*c8dee2aaSAndroid Build Coastguard Worker assert_is_supported_backend(this->backend()); 55*c8dee2aaSAndroid Build Coastguard Worker return fTextureData->equal(that.fTextureData.get()); 56*c8dee2aaSAndroid Build Coastguard Worker } 57*c8dee2aaSAndroid Build Coastguard Worker ~BackendTextureData()58*c8dee2aaSAndroid Build Coastguard WorkerBackendTextureData::~BackendTextureData(){}; 59*c8dee2aaSAndroid Build Coastguard Worker 60*c8dee2aaSAndroid Build Coastguard Worker } // namespace skgpu::graphite 61*c8dee2aaSAndroid Build Coastguard Worker 62