17839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 27839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger/* 37839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger * Copyright 2013 Google Inc. 47839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger * 57839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger * Use of this source code is governed by a BSD-style license that can be 67839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger * found in the LICENSE file. 77839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger */ 87839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 97839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger// This is a GPU-backend specific test. 107839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 117839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#include "SkTypes.h" 127839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 137839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#if SK_SUPPORT_GPU 147839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 157839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#include "Test.h" 167839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#include "GrContext.h" 177839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#include "GrContextFactory.h" 187839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#include "GrRenderTarget.h" 197839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#include "GrTexture.h" 207839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 217839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenbergerstatic void GrSurfaceIsSameTest(skiatest::Reporter* reporter, GrContextFactory* factory) { 227839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger GrContext* context = factory->get(GrContextFactory::kNull_GLContextType); 237839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger if (NULL != context) { 247839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger GrTextureDesc desc; 257839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger desc.fConfig = kSkia8888_GrPixelConfig; 267839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger desc.fFlags = kRenderTarget_GrTextureFlagBit; 277839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger desc.fWidth = 256; 287839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger desc.fHeight = 256; 297839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger desc.fSampleCnt = 0; 307839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger GrSurface* texRT1 = context->createUncachedTexture(desc, NULL, 0); 317839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger GrSurface* texRT2 = context->createUncachedTexture(desc, NULL, 0); 327839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger desc.fFlags = kNone_GrTextureFlags; 337839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger GrSurface* tex1 = context->createUncachedTexture(desc, NULL, 0); 347839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 357839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger REPORTER_ASSERT(reporter, texRT1->isSameAs(texRT1)); 367839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger REPORTER_ASSERT(reporter, texRT1->isSameAs(texRT1->asRenderTarget())); 377839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger REPORTER_ASSERT(reporter, texRT1->asRenderTarget()->isSameAs(texRT1)); 387839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger REPORTER_ASSERT(reporter, !texRT2->isSameAs(texRT1)); 397839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger REPORTER_ASSERT(reporter, !texRT2->asRenderTarget()->isSameAs(texRT1)); 407839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger REPORTER_ASSERT(reporter, !texRT2->isSameAs(texRT1->asRenderTarget())); 417839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger REPORTER_ASSERT(reporter, !texRT2->isSameAs(tex1)); 427839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger REPORTER_ASSERT(reporter, !texRT2->asRenderTarget()->isSameAs(tex1)); 437839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 447839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger GrBackendTextureDesc backendDesc; 457839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger backendDesc.fConfig = kSkia8888_GrPixelConfig; 467839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger backendDesc.fFlags = kRenderTarget_GrBackendTextureFlag; 477839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger backendDesc.fWidth = 256; 487839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger backendDesc.fHeight = 256; 497839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger backendDesc.fSampleCnt = 0; 507839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger backendDesc.fTextureHandle = 5; 517839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger GrSurface* externalTexRT = context->wrapBackendTexture(backendDesc); 527839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger REPORTER_ASSERT(reporter, externalTexRT->isSameAs(externalTexRT)); 537839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger REPORTER_ASSERT(reporter, externalTexRT->isSameAs(externalTexRT->asRenderTarget())); 547839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger REPORTER_ASSERT(reporter, externalTexRT->asRenderTarget()->isSameAs(externalTexRT)); 557839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger REPORTER_ASSERT(reporter, !externalTexRT->isSameAs(texRT1)); 567839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger REPORTER_ASSERT(reporter, !externalTexRT->asRenderTarget()->isSameAs(texRT1)); 577839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 587839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger texRT1->unref(); 597839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger texRT2->unref(); 607839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger tex1->unref(); 617839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger externalTexRT->unref(); 627839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger } 637839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger} 647839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 657839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#include "TestClassDef.h" 667839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek SollenbergerDEFINE_GPUTESTCLASS("GrSurfaceIsSame", GrSurfaceIsSameTestClass, GrSurfaceIsSameTest) 677839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 687839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#endif 69