xref: /aosp_15_r20/external/skia/tests/RectangleTextureTest.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker /*
2*c8dee2aaSAndroid Build Coastguard Worker  * Copyright 2015 Google Inc.
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 "tests/Test.h"
9*c8dee2aaSAndroid Build Coastguard Worker 
10*c8dee2aaSAndroid Build Coastguard Worker #ifdef SK_GL
11*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkAlphaType.h"
12*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkColor.h"
13*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkColorSpace.h"
14*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkColorType.h"
15*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkImageInfo.h"
16*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkMatrix.h"
17*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkPixmap.h"
18*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRect.h"
19*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRefCnt.h"
20*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkSamplingOptions.h"
21*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkTypes.h"
22*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/GpuTypes.h"
23*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/GrBackendSurface.h"
24*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/GrDirectContext.h"
25*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/GrTypes.h"
26*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/gl/GrGLBackendSurface.h"
27*c8dee2aaSAndroid Build Coastguard Worker #include "include/private/SkColorData.h"
28*c8dee2aaSAndroid Build Coastguard Worker #include "include/private/base/SkTemplates.h"
29*c8dee2aaSAndroid Build Coastguard Worker #include "include/private/gpu/ganesh/GrTypesPriv.h"
30*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/Swizzle.h"
31*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrCaps.h"
32*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrColor.h"
33*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrDirectContextPriv.h"
34*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrFragmentProcessor.h"
35*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrImageInfo.h"
36*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrPixmap.h"
37*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrProxyProvider.h"
38*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrSamplerState.h"
39*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrSurfaceProxy.h"
40*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrSurfaceProxyView.h"
41*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrTexture.h"
42*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrTextureProxy.h"
43*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/SkGr.h"
44*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/SurfaceContext.h"
45*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/SurfaceFillContext.h"
46*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/effects/GrTextureEffect.h"
47*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/gl/GrGLDefines.h"
48*c8dee2aaSAndroid Build Coastguard Worker #include "tests/CtsEnforcement.h"
49*c8dee2aaSAndroid Build Coastguard Worker #include "tests/TestUtils.h"
50*c8dee2aaSAndroid Build Coastguard Worker #include "tools/gpu/ProxyUtils.h"
51*c8dee2aaSAndroid Build Coastguard Worker 
52*c8dee2aaSAndroid Build Coastguard Worker #include <cstdint>
53*c8dee2aaSAndroid Build Coastguard Worker #include <initializer_list>
54*c8dee2aaSAndroid Build Coastguard Worker #include <memory>
55*c8dee2aaSAndroid Build Coastguard Worker #include <utility>
56*c8dee2aaSAndroid Build Coastguard Worker 
57*c8dee2aaSAndroid Build Coastguard Worker using namespace skia_private;
58*c8dee2aaSAndroid Build Coastguard Worker 
59*c8dee2aaSAndroid Build Coastguard Worker struct GrContextOptions;
60*c8dee2aaSAndroid Build Coastguard Worker 
61*c8dee2aaSAndroid Build Coastguard Worker // skbug.com/5932
test_basic_draw_as_src(skiatest::Reporter * reporter,GrDirectContext * dContext,const GrSurfaceProxyView & rectView,GrColorType colorType,SkAlphaType alphaType,uint32_t expectedPixelValues[])62*c8dee2aaSAndroid Build Coastguard Worker static void test_basic_draw_as_src(skiatest::Reporter* reporter, GrDirectContext* dContext,
63*c8dee2aaSAndroid Build Coastguard Worker                                    const GrSurfaceProxyView& rectView, GrColorType colorType,
64*c8dee2aaSAndroid Build Coastguard Worker                                    SkAlphaType alphaType, uint32_t expectedPixelValues[]) {
65*c8dee2aaSAndroid Build Coastguard Worker     auto sfc = dContext->priv().makeSFC(
66*c8dee2aaSAndroid Build Coastguard Worker             {colorType, kPremul_SkAlphaType, nullptr, rectView.dimensions()}, /*label=*/{});
67*c8dee2aaSAndroid Build Coastguard Worker     for (auto filter : {GrSamplerState::Filter::kNearest, GrSamplerState::Filter::kLinear}) {
68*c8dee2aaSAndroid Build Coastguard Worker         for (auto mm : {GrSamplerState::MipmapMode::kNone, GrSamplerState::MipmapMode::kLinear}) {
69*c8dee2aaSAndroid Build Coastguard Worker             sfc->clear(SkPMColor4f::FromBytes_RGBA(0xDDCCBBAA));
70*c8dee2aaSAndroid Build Coastguard Worker             auto fp = GrTextureEffect::Make(rectView, alphaType, SkMatrix::I(), filter, mm);
71*c8dee2aaSAndroid Build Coastguard Worker             sfc->fillWithFP(std::move(fp));
72*c8dee2aaSAndroid Build Coastguard Worker             TestReadPixels(reporter, dContext, sfc.get(), expectedPixelValues,
73*c8dee2aaSAndroid Build Coastguard Worker                            "RectangleTexture-basic-draw");
74*c8dee2aaSAndroid Build Coastguard Worker         }
75*c8dee2aaSAndroid Build Coastguard Worker     }
76*c8dee2aaSAndroid Build Coastguard Worker }
77*c8dee2aaSAndroid Build Coastguard Worker 
test_clear(skiatest::Reporter * reporter,GrDirectContext * dContext,skgpu::ganesh::SurfaceContext * rectContext)78*c8dee2aaSAndroid Build Coastguard Worker static void test_clear(skiatest::Reporter* reporter,
79*c8dee2aaSAndroid Build Coastguard Worker                        GrDirectContext* dContext,
80*c8dee2aaSAndroid Build Coastguard Worker                        skgpu::ganesh::SurfaceContext* rectContext) {
81*c8dee2aaSAndroid Build Coastguard Worker     if (auto sfc = rectContext->asFillContext()) {
82*c8dee2aaSAndroid Build Coastguard Worker         // Clear the whole thing.
83*c8dee2aaSAndroid Build Coastguard Worker         GrColor color0 = GrColorPackRGBA(0xA, 0xB, 0xC, 0xD);
84*c8dee2aaSAndroid Build Coastguard Worker         sfc->clear(SkPMColor4f::FromBytes_RGBA(color0));
85*c8dee2aaSAndroid Build Coastguard Worker 
86*c8dee2aaSAndroid Build Coastguard Worker         int w = sfc->width();
87*c8dee2aaSAndroid Build Coastguard Worker         int h = sfc->height();
88*c8dee2aaSAndroid Build Coastguard Worker         int pixelCnt = w * h;
89*c8dee2aaSAndroid Build Coastguard Worker         AutoTMalloc<uint32_t> expectedPixels(pixelCnt);
90*c8dee2aaSAndroid Build Coastguard Worker 
91*c8dee2aaSAndroid Build Coastguard Worker         // The clear color is a GrColor, our readback is to kRGBA_8888, which may be different.
92*c8dee2aaSAndroid Build Coastguard Worker         uint32_t expectedColor0 = 0;
93*c8dee2aaSAndroid Build Coastguard Worker         uint8_t* expectedBytes0 = reinterpret_cast<uint8_t*>(&expectedColor0);
94*c8dee2aaSAndroid Build Coastguard Worker         expectedBytes0[0] = GrColorUnpackR(color0);
95*c8dee2aaSAndroid Build Coastguard Worker         expectedBytes0[1] = GrColorUnpackG(color0);
96*c8dee2aaSAndroid Build Coastguard Worker         expectedBytes0[2] = GrColorUnpackB(color0);
97*c8dee2aaSAndroid Build Coastguard Worker         expectedBytes0[3] = GrColorUnpackA(color0);
98*c8dee2aaSAndroid Build Coastguard Worker         for (int i = 0; i < sfc->width() * sfc->height(); ++i) {
99*c8dee2aaSAndroid Build Coastguard Worker             expectedPixels.get()[i] = expectedColor0;
100*c8dee2aaSAndroid Build Coastguard Worker         }
101*c8dee2aaSAndroid Build Coastguard Worker 
102*c8dee2aaSAndroid Build Coastguard Worker         // Clear the the top to a different color.
103*c8dee2aaSAndroid Build Coastguard Worker         GrColor color1 = GrColorPackRGBA(0x1, 0x2, 0x3, 0x4);
104*c8dee2aaSAndroid Build Coastguard Worker         SkIRect rect = SkIRect::MakeWH(w, h/2);
105*c8dee2aaSAndroid Build Coastguard Worker         sfc->clear(rect, SkPMColor4f::FromBytes_RGBA(color1));
106*c8dee2aaSAndroid Build Coastguard Worker 
107*c8dee2aaSAndroid Build Coastguard Worker         uint32_t expectedColor1 = 0;
108*c8dee2aaSAndroid Build Coastguard Worker         uint8_t* expectedBytes1 = reinterpret_cast<uint8_t*>(&expectedColor1);
109*c8dee2aaSAndroid Build Coastguard Worker         expectedBytes1[0] = GrColorUnpackR(color1);
110*c8dee2aaSAndroid Build Coastguard Worker         expectedBytes1[1] = GrColorUnpackG(color1);
111*c8dee2aaSAndroid Build Coastguard Worker         expectedBytes1[2] = GrColorUnpackB(color1);
112*c8dee2aaSAndroid Build Coastguard Worker         expectedBytes1[3] = GrColorUnpackA(color1);
113*c8dee2aaSAndroid Build Coastguard Worker 
114*c8dee2aaSAndroid Build Coastguard Worker         for (int y = 0; y < h/2; ++y) {
115*c8dee2aaSAndroid Build Coastguard Worker             for (int x = 0; x < w; ++x) {
116*c8dee2aaSAndroid Build Coastguard Worker                 expectedPixels.get()[y * h + x] = expectedColor1;
117*c8dee2aaSAndroid Build Coastguard Worker             }
118*c8dee2aaSAndroid Build Coastguard Worker         }
119*c8dee2aaSAndroid Build Coastguard Worker 
120*c8dee2aaSAndroid Build Coastguard Worker         TestReadPixels(reporter, dContext, sfc, expectedPixels.get(), "RectangleTexture-clear");
121*c8dee2aaSAndroid Build Coastguard Worker     }
122*c8dee2aaSAndroid Build Coastguard Worker }
123*c8dee2aaSAndroid Build Coastguard Worker 
test_copy_to_surface(skiatest::Reporter * reporter,GrDirectContext * dContext,skgpu::ganesh::SurfaceContext * dstContext,const char * testName)124*c8dee2aaSAndroid Build Coastguard Worker static void test_copy_to_surface(skiatest::Reporter* reporter,
125*c8dee2aaSAndroid Build Coastguard Worker                                  GrDirectContext* dContext,
126*c8dee2aaSAndroid Build Coastguard Worker                                  skgpu::ganesh::SurfaceContext* dstContext,
127*c8dee2aaSAndroid Build Coastguard Worker                                  const char* testName) {
128*c8dee2aaSAndroid Build Coastguard Worker     int pixelCnt = dstContext->width() * dstContext->height();
129*c8dee2aaSAndroid Build Coastguard Worker     AutoTMalloc<uint32_t> pixels(pixelCnt);
130*c8dee2aaSAndroid Build Coastguard Worker     for (int y = 0; y < dstContext->width(); ++y) {
131*c8dee2aaSAndroid Build Coastguard Worker         for (int x = 0; x < dstContext->height(); ++x) {
132*c8dee2aaSAndroid Build Coastguard Worker             pixels.get()[y * dstContext->width() + x] =
133*c8dee2aaSAndroid Build Coastguard Worker                 SkColorToPremulGrColor(SkColorSetARGB(2*y, y, x, x * y));
134*c8dee2aaSAndroid Build Coastguard Worker         }
135*c8dee2aaSAndroid Build Coastguard Worker     }
136*c8dee2aaSAndroid Build Coastguard Worker 
137*c8dee2aaSAndroid Build Coastguard Worker     for (auto renderable : {GrRenderable::kNo, GrRenderable::kYes}) {
138*c8dee2aaSAndroid Build Coastguard Worker         auto origin = dstContext->origin();
139*c8dee2aaSAndroid Build Coastguard Worker         GrImageInfo info(GrColorType::kRGBA_8888,
140*c8dee2aaSAndroid Build Coastguard Worker                          kPremul_SkAlphaType,
141*c8dee2aaSAndroid Build Coastguard Worker                          nullptr,
142*c8dee2aaSAndroid Build Coastguard Worker                          dstContext->dimensions());
143*c8dee2aaSAndroid Build Coastguard Worker         GrCPixmap pixmap(info, pixels.get(), dstContext->width()*sizeof(uint32_t));
144*c8dee2aaSAndroid Build Coastguard Worker         auto srcView = sk_gpu_test::MakeTextureProxyViewFromData(dContext,
145*c8dee2aaSAndroid Build Coastguard Worker                                                                  renderable,
146*c8dee2aaSAndroid Build Coastguard Worker                                                                  origin,
147*c8dee2aaSAndroid Build Coastguard Worker                                                                  pixmap);
148*c8dee2aaSAndroid Build Coastguard Worker         // If this assert ever fails we can add a fallback to do copy as draw, but until then we can
149*c8dee2aaSAndroid Build Coastguard Worker         // be more restrictive.
150*c8dee2aaSAndroid Build Coastguard Worker         SkAssertResult(dstContext->testCopy(srcView.refProxy()));
151*c8dee2aaSAndroid Build Coastguard Worker         TestReadPixels(reporter, dContext, dstContext, pixels.get(), testName);
152*c8dee2aaSAndroid Build Coastguard Worker     }
153*c8dee2aaSAndroid Build Coastguard Worker }
154*c8dee2aaSAndroid Build Coastguard Worker 
DEF_GANESH_TEST_FOR_GL_CONTEXT(RectangleTexture,reporter,ctxInfo,CtsEnforcement::kApiLevel_T)155*c8dee2aaSAndroid Build Coastguard Worker DEF_GANESH_TEST_FOR_GL_CONTEXT(RectangleTexture, reporter, ctxInfo, CtsEnforcement::kApiLevel_T) {
156*c8dee2aaSAndroid Build Coastguard Worker     auto dContext = ctxInfo.directContext();
157*c8dee2aaSAndroid Build Coastguard Worker 
158*c8dee2aaSAndroid Build Coastguard Worker     GrProxyProvider* proxyProvider = dContext->priv().proxyProvider();
159*c8dee2aaSAndroid Build Coastguard Worker     static const int kWidth = 16;
160*c8dee2aaSAndroid Build Coastguard Worker     static const int kHeight = 16;
161*c8dee2aaSAndroid Build Coastguard Worker 
162*c8dee2aaSAndroid Build Coastguard Worker     uint32_t pixels[kWidth * kHeight];
163*c8dee2aaSAndroid Build Coastguard Worker     for (int y = 0; y < kHeight; ++y) {
164*c8dee2aaSAndroid Build Coastguard Worker         for (int x = 0; x < kWidth; ++x) {
165*c8dee2aaSAndroid Build Coastguard Worker             pixels[y * kWidth + x] = y * kWidth + x;
166*c8dee2aaSAndroid Build Coastguard Worker         }
167*c8dee2aaSAndroid Build Coastguard Worker     }
168*c8dee2aaSAndroid Build Coastguard Worker     auto ii = SkImageInfo::Make(kWidth, kHeight, kRGBA_8888_SkColorType, kPremul_SkAlphaType);
169*c8dee2aaSAndroid Build Coastguard Worker     SkPixmap pm(ii, pixels, sizeof(uint32_t)*kWidth);
170*c8dee2aaSAndroid Build Coastguard Worker 
171*c8dee2aaSAndroid Build Coastguard Worker     for (auto origin : { kBottomLeft_GrSurfaceOrigin, kTopLeft_GrSurfaceOrigin }) {
172*c8dee2aaSAndroid Build Coastguard Worker         auto format = GrBackendFormats::MakeGL(GR_GL_RGBA8, GR_GL_TEXTURE_RECTANGLE);
173*c8dee2aaSAndroid Build Coastguard Worker         GrBackendTexture rectangleTex = dContext->createBackendTexture(
174*c8dee2aaSAndroid Build Coastguard Worker                 kWidth, kHeight, format, skgpu::Mipmapped::kNo, GrRenderable::kYes);
175*c8dee2aaSAndroid Build Coastguard Worker         if (!rectangleTex.isValid()) {
176*c8dee2aaSAndroid Build Coastguard Worker             continue;
177*c8dee2aaSAndroid Build Coastguard Worker         }
178*c8dee2aaSAndroid Build Coastguard Worker 
179*c8dee2aaSAndroid Build Coastguard Worker         if (!dContext->updateBackendTexture(rectangleTex, &pm, 1, origin, nullptr, nullptr)) {
180*c8dee2aaSAndroid Build Coastguard Worker             continue;
181*c8dee2aaSAndroid Build Coastguard Worker         }
182*c8dee2aaSAndroid Build Coastguard Worker 
183*c8dee2aaSAndroid Build Coastguard Worker         GrColor refPixels[kWidth * kHeight];
184*c8dee2aaSAndroid Build Coastguard Worker         for (int y = 0; y < kHeight; ++y) {
185*c8dee2aaSAndroid Build Coastguard Worker             for (int x = 0; x < kWidth; ++x) {
186*c8dee2aaSAndroid Build Coastguard Worker                 refPixels[y * kWidth + x] = pixels[y * kWidth + x];
187*c8dee2aaSAndroid Build Coastguard Worker             }
188*c8dee2aaSAndroid Build Coastguard Worker         }
189*c8dee2aaSAndroid Build Coastguard Worker 
190*c8dee2aaSAndroid Build Coastguard Worker         sk_sp<GrTextureProxy> rectProxy = proxyProvider->wrapBackendTexture(
191*c8dee2aaSAndroid Build Coastguard Worker                 rectangleTex, kBorrow_GrWrapOwnership, GrWrapCacheable::kNo, kRW_GrIOType);
192*c8dee2aaSAndroid Build Coastguard Worker 
193*c8dee2aaSAndroid Build Coastguard Worker         if (!rectProxy) {
194*c8dee2aaSAndroid Build Coastguard Worker             dContext->deleteBackendTexture(rectangleTex);
195*c8dee2aaSAndroid Build Coastguard Worker             continue;
196*c8dee2aaSAndroid Build Coastguard Worker         }
197*c8dee2aaSAndroid Build Coastguard Worker 
198*c8dee2aaSAndroid Build Coastguard Worker         SkASSERT(rectProxy->mipmapped() == skgpu::Mipmapped::kNo);
199*c8dee2aaSAndroid Build Coastguard Worker         SkASSERT(rectProxy->peekTexture()->mipmapped() == skgpu::Mipmapped::kNo);
200*c8dee2aaSAndroid Build Coastguard Worker 
201*c8dee2aaSAndroid Build Coastguard Worker         SkASSERT(rectProxy->textureType() == GrTextureType::kRectangle);
202*c8dee2aaSAndroid Build Coastguard Worker         SkASSERT(rectProxy->peekTexture()->textureType() == GrTextureType::kRectangle);
203*c8dee2aaSAndroid Build Coastguard Worker         SkASSERT(rectProxy->hasRestrictedSampling());
204*c8dee2aaSAndroid Build Coastguard Worker         SkASSERT(rectProxy->peekTexture()->hasRestrictedSampling());
205*c8dee2aaSAndroid Build Coastguard Worker 
206*c8dee2aaSAndroid Build Coastguard Worker         GrImageInfo grII = ii;
207*c8dee2aaSAndroid Build Coastguard Worker         skgpu::Swizzle swizzle = dContext->priv().caps()->getReadSwizzle(
208*c8dee2aaSAndroid Build Coastguard Worker                 rectangleTex.getBackendFormat(), grII.colorType());
209*c8dee2aaSAndroid Build Coastguard Worker         GrSurfaceProxyView view(rectProxy, origin, swizzle);
210*c8dee2aaSAndroid Build Coastguard Worker 
211*c8dee2aaSAndroid Build Coastguard Worker         test_basic_draw_as_src(reporter, dContext, view, grII.colorType(), kPremul_SkAlphaType,
212*c8dee2aaSAndroid Build Coastguard Worker                                refPixels);
213*c8dee2aaSAndroid Build Coastguard Worker 
214*c8dee2aaSAndroid Build Coastguard Worker         // Test copy to both a texture and RT
215*c8dee2aaSAndroid Build Coastguard Worker         TestCopyFromSurface(reporter, dContext, rectProxy, origin, grII.colorType(), refPixels,
216*c8dee2aaSAndroid Build Coastguard Worker                             "RectangleTexture-copy-from");
217*c8dee2aaSAndroid Build Coastguard Worker 
218*c8dee2aaSAndroid Build Coastguard Worker         auto rectContext = dContext->priv().makeSC(std::move(view), grII.colorInfo());
219*c8dee2aaSAndroid Build Coastguard Worker         SkASSERT(rectContext);
220*c8dee2aaSAndroid Build Coastguard Worker 
221*c8dee2aaSAndroid Build Coastguard Worker         TestReadPixels(reporter, dContext, rectContext.get(), refPixels, "RectangleTexture-read");
222*c8dee2aaSAndroid Build Coastguard Worker 
223*c8dee2aaSAndroid Build Coastguard Worker         test_copy_to_surface(reporter, dContext, rectContext.get(), "RectangleTexture-copy-to");
224*c8dee2aaSAndroid Build Coastguard Worker 
225*c8dee2aaSAndroid Build Coastguard Worker         TestWritePixels(reporter, dContext, rectContext.get(), true, "RectangleTexture-write");
226*c8dee2aaSAndroid Build Coastguard Worker 
227*c8dee2aaSAndroid Build Coastguard Worker         test_clear(reporter, dContext, rectContext.get());
228*c8dee2aaSAndroid Build Coastguard Worker 
229*c8dee2aaSAndroid Build Coastguard Worker         dContext->deleteBackendTexture(rectangleTex);
230*c8dee2aaSAndroid Build Coastguard Worker     }
231*c8dee2aaSAndroid Build Coastguard Worker }
232*c8dee2aaSAndroid Build Coastguard Worker #endif
233