1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2020 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/core/SkColor.h" 9*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkImageInfo.h" 10*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRefCnt.h" 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/GpuTypes.h" 12*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/GrTypes.h" 13*c8dee2aaSAndroid Build Coastguard Worker 14*c8dee2aaSAndroid Build Coastguard Worker class SkColorSpace; 15*c8dee2aaSAndroid Build Coastguard Worker class SkImage; 16*c8dee2aaSAndroid Build Coastguard Worker class SkPixmap; 17*c8dee2aaSAndroid Build Coastguard Worker struct SkISize; 18*c8dee2aaSAndroid Build Coastguard Worker 19*c8dee2aaSAndroid Build Coastguard Worker #ifdef SK_GANESH 20*c8dee2aaSAndroid Build Coastguard Worker class GrDirectContext; 21*c8dee2aaSAndroid Build Coastguard Worker #endif 22*c8dee2aaSAndroid Build Coastguard Worker 23*c8dee2aaSAndroid Build Coastguard Worker #ifdef SK_GRAPHITE 24*c8dee2aaSAndroid Build Coastguard Worker namespace skgpu::graphite { 25*c8dee2aaSAndroid Build Coastguard Worker class Recorder; 26*c8dee2aaSAndroid Build Coastguard Worker } 27*c8dee2aaSAndroid Build Coastguard Worker using Origin = skgpu::Origin; // TODO: Can we migrate Ganesh to use this? 28*c8dee2aaSAndroid Build Coastguard Worker #endif 29*c8dee2aaSAndroid Build Coastguard Worker 30*c8dee2aaSAndroid Build Coastguard Worker namespace sk_gpu_test { 31*c8dee2aaSAndroid Build Coastguard Worker 32*c8dee2aaSAndroid Build Coastguard Worker using Mipmapped = skgpu::Mipmapped; 33*c8dee2aaSAndroid Build Coastguard Worker using Protected = skgpu::Protected; 34*c8dee2aaSAndroid Build Coastguard Worker using Renderable = skgpu::Renderable; 35*c8dee2aaSAndroid Build Coastguard Worker 36*c8dee2aaSAndroid Build Coastguard Worker #ifdef SK_GANESH 37*c8dee2aaSAndroid Build Coastguard Worker /** 38*c8dee2aaSAndroid Build Coastguard Worker * Creates a backend texture with pixmap contents and wraps it in a SkImage that safely deletes 39*c8dee2aaSAndroid Build Coastguard Worker * the texture when it goes away. Unlike using makeTextureImage() on a non-GPU image, this will 40*c8dee2aaSAndroid Build Coastguard Worker * fail rather than fallback if the pixmaps's color type doesn't map to a supported texture format. 41*c8dee2aaSAndroid Build Coastguard Worker * For testing purposes the texture can be made renderable to exercise different code paths for 42*c8dee2aaSAndroid Build Coastguard Worker * renderable textures/formats. 43*c8dee2aaSAndroid Build Coastguard Worker */ 44*c8dee2aaSAndroid Build Coastguard Worker sk_sp<SkImage> MakeBackendTextureImage(GrDirectContext*, 45*c8dee2aaSAndroid Build Coastguard Worker const SkPixmap&, 46*c8dee2aaSAndroid Build Coastguard Worker Renderable, 47*c8dee2aaSAndroid Build Coastguard Worker GrSurfaceOrigin, 48*c8dee2aaSAndroid Build Coastguard Worker Protected = Protected::kNo); 49*c8dee2aaSAndroid Build Coastguard Worker 50*c8dee2aaSAndroid Build Coastguard Worker /** Creates a solid color image. */ 51*c8dee2aaSAndroid Build Coastguard Worker sk_sp<SkImage> MakeBackendTextureImage(GrDirectContext*, 52*c8dee2aaSAndroid Build Coastguard Worker const SkImageInfo& info, 53*c8dee2aaSAndroid Build Coastguard Worker SkColor4f, 54*c8dee2aaSAndroid Build Coastguard Worker Mipmapped = Mipmapped::kNo, 55*c8dee2aaSAndroid Build Coastguard Worker Renderable = Renderable::kNo, 56*c8dee2aaSAndroid Build Coastguard Worker GrSurfaceOrigin = GrSurfaceOrigin::kTopLeft_GrSurfaceOrigin, 57*c8dee2aaSAndroid Build Coastguard Worker Protected isProtected = Protected::kNo); 58*c8dee2aaSAndroid Build Coastguard Worker #endif // SK_GANESH 59*c8dee2aaSAndroid Build Coastguard Worker 60*c8dee2aaSAndroid Build Coastguard Worker #ifdef SK_GRAPHITE 61*c8dee2aaSAndroid Build Coastguard Worker /* 62*c8dee2aaSAndroid Build Coastguard Worker * Graphite versions of MakeBackendTextureImage 63*c8dee2aaSAndroid Build Coastguard Worker */ 64*c8dee2aaSAndroid Build Coastguard Worker sk_sp<SkImage> MakeBackendTextureImage(skgpu::graphite::Recorder*, 65*c8dee2aaSAndroid Build Coastguard Worker const SkPixmap&, 66*c8dee2aaSAndroid Build Coastguard Worker Mipmapped, 67*c8dee2aaSAndroid Build Coastguard Worker Renderable, 68*c8dee2aaSAndroid Build Coastguard Worker Origin, 69*c8dee2aaSAndroid Build Coastguard Worker Protected = Protected::kNo); 70*c8dee2aaSAndroid Build Coastguard Worker 71*c8dee2aaSAndroid Build Coastguard Worker /** Creates a solid color image. */ 72*c8dee2aaSAndroid Build Coastguard Worker sk_sp<SkImage> MakeBackendTextureImage(skgpu::graphite::Recorder*, 73*c8dee2aaSAndroid Build Coastguard Worker const SkImageInfo&, 74*c8dee2aaSAndroid Build Coastguard Worker SkColor4f, 75*c8dee2aaSAndroid Build Coastguard Worker Mipmapped, 76*c8dee2aaSAndroid Build Coastguard Worker Renderable, 77*c8dee2aaSAndroid Build Coastguard Worker Origin, 78*c8dee2aaSAndroid Build Coastguard Worker Protected = Protected::kNo); 79*c8dee2aaSAndroid Build Coastguard Worker 80*c8dee2aaSAndroid Build Coastguard Worker #endif // SK_GRAPHITE 81*c8dee2aaSAndroid Build Coastguard Worker 82*c8dee2aaSAndroid Build Coastguard Worker } // namespace sk_gpu_test 83