LeakCheckTests.cpp revision 7db5ffb7dbd30202468459e2ef4426e91d4fcbb3
17db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck/*
27db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck * Copyright (C) 2016 The Android Open Source Project
37db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck *
47db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck * Licensed under the Apache License, Version 2.0 (the "License");
57db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck * you may not use this file except in compliance with the License.
67db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck * You may obtain a copy of the License at
77db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck *
87db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck *      http://www.apache.org/licenses/LICENSE-2.0
97db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck *
107db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck * Unless required by applicable law or agreed to in writing, software
117db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck * distributed under the License is distributed on an "AS IS" BASIS,
127db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck * See the License for the specific language governing permissions and
147db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck * limitations under the License.
157db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck */
167db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck
177db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck#include "BakedOpRenderer.h"
187db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck#include "BakedOpDispatcher.h"
197db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck#include "FrameBuilder.h"
207db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck#include "LayerUpdateQueue.h"
217db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck#include "RecordingCanvas.h"
227db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck#include "tests/common/TestUtils.h"
237db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck
247db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck#include <gtest/gtest.h>
257db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck
267db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reckusing namespace android;
277db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reckusing namespace android::uirenderer;
287db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck
297db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reckconst LayerUpdateQueue sEmptyLayerUpdateQueue;
307db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reckconst Vector3 sLightCenter = {100, 100, 100};
317db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck
327db5ffb7dbd30202468459e2ef4426e91d4fcbb3John ReckRENDERTHREAD_TEST(LeakCheck, saveLayerUnclipped_simple) {
337db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck    auto node = TestUtils::createNode(0, 0, 200, 200,
347db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck            [](RenderProperties& props, RecordingCanvas& canvas) {
357db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck        canvas.saveLayerAlpha(10, 10, 190, 190, 128, (SkCanvas::SaveFlags)(0));
367db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck        canvas.drawRect(0, 0, 200, 200, SkPaint());
377db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck        canvas.restore();
387db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck    });
397db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck    BakedOpRenderer::LightInfo lightInfo = {50.0f, 128, 128};
407db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck    RenderState& renderState = renderThread.renderState();
417db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck    Caches& caches = Caches::getInstance();
427db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck
437db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck    FrameBuilder frameBuilder(sEmptyLayerUpdateQueue, SkRect::MakeWH(200, 200), 200, 200,
447db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck            TestUtils::createSyncedNodeList(node), sLightCenter);
457db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck    BakedOpRenderer renderer(caches, renderState, true, lightInfo);
467db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck    frameBuilder.replayBakedOps<BakedOpDispatcher>(renderer);
477db5ffb7dbd30202468459e2ef4426e91d4fcbb3John Reck}
48