Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1466)

Side by Side Diff: tests/SurfaceTest.cpp

Issue 1744243002: Remove internal calls to SkImage::getTexture (Closed) Base URL: https://skia.googlesource.com/skia.git@budalias
Patch Set: Add getTexture() back to SkImage :( Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/image/SkSurface_Gpu.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2013 Google Inc. 2 * Copyright 2013 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include <functional> 8 #include <functional>
9 #include "SkCanvas.h" 9 #include "SkCanvas.h"
10 #include "SkData.h" 10 #include "SkData.h"
(...skipping 635 matching lines...) Expand 10 before | Expand all | Expand 10 after
646 // Trigger copy on write, old backing should not be returned to scratch 646 // Trigger copy on write, old backing should not be returned to scratch
647 // pool because it is held by image2 647 // pool because it is held by image2
648 canvas1->clear(3); 648 canvas1->clear(3);
649 649
650 canvas2->clear(4); 650 canvas2->clear(4);
651 SkAutoTUnref<SkImage> image3(surface2->newImageSnapshot()); 651 SkAutoTUnref<SkImage> image3(surface2->newImageSnapshot());
652 // Trigger copy on write on surface2. The new backing store should not 652 // Trigger copy on write on surface2. The new backing store should not
653 // be recycling a texture that is held by an existing image. 653 // be recycling a texture that is held by an existing image.
654 canvas2->clear(5); 654 canvas2->clear(5);
655 SkAutoTUnref<SkImage> image4(surface2->newImageSnapshot()); 655 SkAutoTUnref<SkImage> image4(surface2->newImageSnapshot());
656 REPORTER_ASSERT(reporter, as_IB(image4)->getTexture() != as_IB(image3)->getT exture()); 656 REPORTER_ASSERT(reporter, as_IB(image4)->peekTexture() != as_IB(image3)->pee kTexture());
657 // The following assertion checks crbug.com/263329 657 // The following assertion checks crbug.com/263329
658 REPORTER_ASSERT(reporter, as_IB(image4)->getTexture() != as_IB(image2)->getT exture()); 658 REPORTER_ASSERT(reporter, as_IB(image4)->peekTexture() != as_IB(image2)->pee kTexture());
659 REPORTER_ASSERT(reporter, as_IB(image4)->getTexture() != as_IB(image1)->getT exture()); 659 REPORTER_ASSERT(reporter, as_IB(image4)->peekTexture() != as_IB(image1)->pee kTexture());
660 REPORTER_ASSERT(reporter, as_IB(image3)->getTexture() != as_IB(image2)->getT exture()); 660 REPORTER_ASSERT(reporter, as_IB(image3)->peekTexture() != as_IB(image2)->pee kTexture());
661 REPORTER_ASSERT(reporter, as_IB(image3)->getTexture() != as_IB(image1)->getT exture()); 661 REPORTER_ASSERT(reporter, as_IB(image3)->peekTexture() != as_IB(image1)->pee kTexture());
662 REPORTER_ASSERT(reporter, as_IB(image2)->getTexture() != as_IB(image1)->getT exture()); 662 REPORTER_ASSERT(reporter, as_IB(image2)->peekTexture() != as_IB(image1)->pee kTexture());
663 } 663 }
664 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfaceCRBug263329_Gpu, reporter, context) { 664 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfaceCRBug263329_Gpu, reporter, context) {
665 for (auto& surface_func : { &create_gpu_surface, &create_gpu_scratch_surface }) { 665 for (auto& surface_func : { &create_gpu_surface, &create_gpu_scratch_surface }) {
666 SkAutoTUnref<SkSurface> surface1(surface_func(context, kPremul_SkAlphaTy pe, nullptr)); 666 SkAutoTUnref<SkSurface> surface1(surface_func(context, kPremul_SkAlphaTy pe, nullptr));
667 SkAutoTUnref<SkSurface> surface2(surface_func(context, kPremul_SkAlphaTy pe, nullptr)); 667 SkAutoTUnref<SkSurface> surface2(surface_func(context, kPremul_SkAlphaTy pe, nullptr));
668 test_crbug263329(reporter, surface1, surface2); 668 test_crbug263329(reporter, surface1, surface2);
669 } 669 }
670 } 670 }
671 #endif 671 #endif
672 672
673 DEF_TEST(SurfaceGetTexture, reporter) { 673 DEF_TEST(SurfaceGetTexture, reporter) {
674 SkAutoTUnref<SkSurface> surface(create_surface()); 674 SkAutoTUnref<SkSurface> surface(create_surface());
675 SkAutoTUnref<SkImage> image(surface->newImageSnapshot()); 675 SkAutoTUnref<SkImage> image(surface->newImageSnapshot());
676 REPORTER_ASSERT(reporter, as_IB(image)->getTexture() == nullptr); 676 REPORTER_ASSERT(reporter, as_IB(image)->peekTexture() == nullptr);
677 surface->notifyContentWillChange(SkSurface::kDiscard_ContentChangeMode); 677 surface->notifyContentWillChange(SkSurface::kDiscard_ContentChangeMode);
678 REPORTER_ASSERT(reporter, as_IB(image)->getTexture() == nullptr); 678 REPORTER_ASSERT(reporter, as_IB(image)->peekTexture() == nullptr);
679 } 679 }
680 #if SK_SUPPORT_GPU 680 #if SK_SUPPORT_GPU
681 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfaceGetTexture_Gpu, reporter, context) { 681 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfacepeekTexture_Gpu, reporter, context) {
682 for (auto& surface_func : { &create_gpu_surface, &create_gpu_scratch_surface }) { 682 for (auto& surface_func : { &create_gpu_surface, &create_gpu_scratch_surface }) {
683 SkAutoTUnref<SkSurface> surface(surface_func(context, kPremul_SkAlphaTyp e, nullptr)); 683 SkAutoTUnref<SkSurface> surface(surface_func(context, kPremul_SkAlphaTyp e, nullptr));
684 SkAutoTUnref<SkImage> image(surface->newImageSnapshot()); 684 SkAutoTUnref<SkImage> image(surface->newImageSnapshot());
685 GrTexture* texture = as_IB(image)->getTexture(); 685 GrTexture* texture = as_IB(image)->peekTexture();
686 REPORTER_ASSERT(reporter, texture); 686 REPORTER_ASSERT(reporter, texture);
687 REPORTER_ASSERT(reporter, 0 != texture->getTextureHandle()); 687 REPORTER_ASSERT(reporter, 0 != texture->getTextureHandle());
688 surface->notifyContentWillChange(SkSurface::kDiscard_ContentChangeMode); 688 surface->notifyContentWillChange(SkSurface::kDiscard_ContentChangeMode);
689 REPORTER_ASSERT(reporter, as_IB(image)->getTexture() == texture); 689 REPORTER_ASSERT(reporter, as_IB(image)->peekTexture() == texture);
690 } 690 }
691 } 691 }
692 #endif 692 #endif
693 693
694 #if SK_SUPPORT_GPU 694 #if SK_SUPPORT_GPU
695 #include "GrGpuResourcePriv.h" 695 #include "GrGpuResourcePriv.h"
696 #include "SkGpuDevice.h" 696 #include "SkGpuDevice.h"
697 #include "SkImage_Gpu.h" 697 #include "SkImage_Gpu.h"
698 #include "SkSurface_Gpu.h" 698 #include "SkSurface_Gpu.h"
699 699
700 static SkBudgeted is_budgeted(SkSurface* surf) { 700 static SkBudgeted is_budgeted(SkSurface* surf) {
701 return ((SkSurface_Gpu*)surf)->getDevice()->accessRenderTarget()->resourcePr iv().isBudgeted(); 701 return ((SkSurface_Gpu*)surf)->getDevice()->accessRenderTarget()->resourcePr iv().isBudgeted();
702 } 702 }
703 703
704 static SkBudgeted is_budgeted(SkImage* image) { 704 static SkBudgeted is_budgeted(SkImage* image) {
705 return ((SkImage_Gpu*)image)->getTexture()->resourcePriv().isBudgeted(); 705 return ((SkImage_Gpu*)image)->peekTexture()->resourcePriv().isBudgeted();
706 } 706 }
707 707
708 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfaceBudget, reporter, context) { 708 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfaceBudget, reporter, context) {
709 SkImageInfo info = SkImageInfo::MakeN32Premul(8,8); 709 SkImageInfo info = SkImageInfo::MakeN32Premul(8,8);
710 for (auto sbudgeted : { SkBudgeted::kNo, SkBudgeted::kYes }) { 710 for (auto sbudgeted : { SkBudgeted::kNo, SkBudgeted::kYes }) {
711 for (auto ibudgeted : { SkBudgeted::kNo, SkBudgeted::kYes }) { 711 for (auto ibudgeted : { SkBudgeted::kNo, SkBudgeted::kYes }) {
712 SkAutoTUnref<SkSurface> 712 SkAutoTUnref<SkSurface>
713 surface(SkSurface::NewRenderTarget(context, sbudgeted, info, 0)) ; 713 surface(SkSurface::NewRenderTarget(context, sbudgeted, info, 0)) ;
714 SkASSERT(surface); 714 SkASSERT(surface);
715 REPORTER_ASSERT(reporter, sbudgeted == is_budgeted(surface)); 715 REPORTER_ASSERT(reporter, sbudgeted == is_budgeted(surface));
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
868 } 868 }
869 869
870 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfaceClear_Gpu, reporter, context) { 870 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfaceClear_Gpu, reporter, context) {
871 std::function<GrSurface*(SkSurface*)> grSurfaceGetters[] = { 871 std::function<GrSurface*(SkSurface*)> grSurfaceGetters[] = {
872 [] (SkSurface* s){ return s->getCanvas()->internal_private_accessTopLaye rRenderTarget(); }, 872 [] (SkSurface* s){ return s->getCanvas()->internal_private_accessTopLaye rRenderTarget(); },
873 [] (SkSurface* s){ 873 [] (SkSurface* s){
874 SkBaseDevice* d = 874 SkBaseDevice* d =
875 s->getCanvas()->getDevice_just_for_deprecated_compatibility_test ing(); 875 s->getCanvas()->getDevice_just_for_deprecated_compatibility_test ing();
876 return d->accessRenderTarget(); }, 876 return d->accessRenderTarget(); },
877 [] (SkSurface* s){ SkAutoTUnref<SkImage> i(s->newImageSnapshot()); 877 [] (SkSurface* s){ SkAutoTUnref<SkImage> i(s->newImageSnapshot());
878 return i->getTexture(); },
879 [] (SkSurface* s){ SkAutoTUnref<SkImage> i(s->newImageSnapshot());
880 return as_IB(i)->peekTexture(); }, 878 return as_IB(i)->peekTexture(); },
881 }; 879 };
882 for (auto grSurfaceGetter : grSurfaceGetters) { 880 for (auto grSurfaceGetter : grSurfaceGetters) {
883 for (auto& surface_func : {&create_gpu_surface, &create_gpu_scratch_surf ace}) { 881 for (auto& surface_func : {&create_gpu_surface, &create_gpu_scratch_surf ace}) {
884 SkSurface* surface = surface_func(context, kPremul_SkAlphaType, null ptr); 882 SkSurface* surface = surface_func(context, kPremul_SkAlphaType, null ptr);
885 test_surface_clear(reporter, surface, grSurfaceGetter, 0x0); 883 test_surface_clear(reporter, surface, grSurfaceGetter, 0x0);
886 } 884 }
887 // Wrapped RTs are *not* supposed to clear (to allow client to partially update a surface). 885 // Wrapped RTs are *not* supposed to clear (to allow client to partially update a surface).
888 static const int kWidth = 10; 886 static const int kWidth = 10;
889 static const int kHeight = 10; 887 static const int kHeight = 10;
(...skipping 10 matching lines...) Expand all
900 desc.fHeight = kHeight; 898 desc.fHeight = kHeight;
901 desc.fFlags = kRenderTarget_GrBackendTextureFlag; 899 desc.fFlags = kRenderTarget_GrBackendTextureFlag;
902 desc.fTextureHandle = textureObject; 900 desc.fTextureHandle = textureObject;
903 901
904 SkSurface* surface = SkSurface::NewFromBackendTexture(context, desc, nul lptr); 902 SkSurface* surface = SkSurface::NewFromBackendTexture(context, desc, nul lptr);
905 test_surface_clear(reporter, surface, grSurfaceGetter, 0xABABABAB); 903 test_surface_clear(reporter, surface, grSurfaceGetter, 0xABABABAB);
906 context->getGpu()->deleteTestingOnlyBackendTexture(textureObject); 904 context->getGpu()->deleteTestingOnlyBackendTexture(textureObject);
907 } 905 }
908 } 906 }
909 #endif 907 #endif
OLDNEW
« no previous file with comments | « src/image/SkSurface_Gpu.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698