xref: /aosp_15_r20/external/skia/tools/graphite/ProtectedUtils_Graphite.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1 /*
2  * Copyright 2023 Google LLC
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #include "tools/gpu/ProtectedUtils.h"
9 
10 #include "include/core/SkCanvas.h"
11 #include "include/core/SkSurface.h"
12 #include "include/core/SkSurfaceProps.h"
13 #include "tools/gpu/BackendSurfaceFactory.h"
14 #include "tools/gpu/BackendTextureImageFactory.h"
15 
16 using namespace skgpu;
17 using namespace skgpu::graphite;
18 
19 namespace ProtectedUtils {
20 
CreateProtectedSkSurface(Recorder * recorder,SkISize size,Protected isProtected)21 sk_sp<SkSurface> CreateProtectedSkSurface(Recorder* recorder,
22                                           SkISize size,
23                                           Protected isProtected) {
24     SkImageInfo ii = SkImageInfo::Make(size, kRGBA_8888_SkColorType, kPremul_SkAlphaType);
25 
26     sk_sp<SkSurface> surface = sk_gpu_test::MakeBackendTextureSurface(recorder,
27                                                                       ii,
28                                                                       Mipmapped::kNo,
29                                                                       isProtected,
30                                                                       /* surfaceProps= */ nullptr);
31     if (!surface) {
32         SK_ABORT("Could not create %s surface.",
33                  isProtected == Protected::kYes ? "protected" : "unprotected");
34         return nullptr;
35     }
36 
37     SkCanvas* canvas = surface->getCanvas();
38 
39     canvas->clear(SkColors::kBlue);
40 
41     return surface;
42 }
43 
CreateProtectedSkImage(Recorder * recorder,SkISize size,SkColor4f color,Protected isProtected)44 sk_sp<SkImage> CreateProtectedSkImage(Recorder* recorder,
45                                       SkISize size,
46                                       SkColor4f color,
47                                       Protected isProtected) {
48     SkImageInfo ii = SkImageInfo::Make(size, kRGBA_8888_SkColorType, kPremul_SkAlphaType);
49 
50     sk_sp<SkImage> image = sk_gpu_test::MakeBackendTextureImage(recorder,
51                                                                 ii,
52                                                                 color,
53                                                                 Mipmapped::kNo,
54                                                                 Renderable::kNo,
55                                                                 Origin::kTopLeft,
56                                                                 isProtected);
57     if (!image) {
58         SK_ABORT("Could not create %s image.",
59                  isProtected == Protected::kYes ? "protected" : "unprotected");
60         return nullptr;
61     }
62 
63     return image;
64 }
65 
66 }  // namespace ProtectedUtils
67