/* * 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 "tests/Test.h" #include "experimental/graphite/include/BackendTexture.h" #include "experimental/graphite/include/Context.h" #include "experimental/graphite/src/Caps.h" #include "experimental/graphite/src/ContextPriv.h" #include "experimental/graphite/src/Gpu.h" #include "experimental/graphite/src/ResourceTypes.h" using namespace skgpu; namespace { const SkISize kSize = {16, 16}; } DEF_GRAPHITE_TEST_FOR_CONTEXTS(BackendTextureTest, reporter, context) { auto caps = context->priv().gpu()->caps(); TextureInfo info = caps->getDefaultSampledTextureInfo(kRGBA_8888_SkColorType, /*levelCount=*/1, Protected::kNo, Renderable::kNo); REPORTER_ASSERT(reporter, info.isValid()); auto texture1 = context->createBackendTexture(kSize, info); REPORTER_ASSERT(reporter, texture1.isValid()); // We make a copy to do the remaining tests so we still have texture1 to safely delete the // backend object. auto texture1Copy = texture1; REPORTER_ASSERT(reporter, texture1Copy.isValid()); REPORTER_ASSERT(reporter, texture1 == texture1Copy); auto texture2 = context->createBackendTexture(kSize, info); REPORTER_ASSERT(reporter, texture2.isValid()); REPORTER_ASSERT(reporter, texture1Copy != texture2); // Test state after assignment texture1Copy = texture2; REPORTER_ASSERT(reporter, texture1Copy.isValid()); REPORTER_ASSERT(reporter, texture1Copy == texture2); BackendTexture invalidTexture; REPORTER_ASSERT(reporter, !invalidTexture.isValid()); texture1Copy = invalidTexture; REPORTER_ASSERT(reporter, !texture1Copy.isValid()); texture1Copy = texture1; REPORTER_ASSERT(reporter, texture1Copy.isValid()); REPORTER_ASSERT(reporter, texture1 == texture1Copy); context->deleteBackendTexture(texture1); context->deleteBackendTexture(texture2); }