Loading libs/hwui/Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ hwui_src_files := \ pipeline/skia/SkiaDisplayList.cpp \ pipeline/skia/SkiaOpenGLPipeline.cpp \ pipeline/skia/SkiaPipeline.cpp \ pipeline/skia/SkiaProfileRenderer.cpp \ pipeline/skia/SkiaRecordingCanvas.cpp \ pipeline/skia/SkiaVulkanPipeline.cpp \ renderstate/Blend.cpp \ Loading libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ #include "renderthread/EglManager.h" #include "renderstate/RenderState.h" #include "Readback.h" #include "SkiaPipeline.h" #include "SkiaProfileRenderer.h" #include "utils/TraceUtils.h" #include <android/native_window.h> Loading Loading @@ -83,6 +85,16 @@ bool SkiaOpenGLPipeline::draw(const Frame& frame, const SkRect& screenDirty, SkiaPipeline::updateLighting(lightGeometry, lightInfo); renderFrame(*layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface); layerUpdateQueue->clear(); // Draw visual debugging features if (CC_UNLIKELY(Properties::showDirtyRegions || ProfileType::None == Properties::getProfileType())) { SkCanvas* profileCanvas = surface->getCanvas(); SkiaProfileRenderer profileRenderer(profileCanvas); profiler->draw(profileRenderer); profileCanvas->flush(); } return true; } Loading libs/hwui/pipeline/skia/SkiaProfileRenderer.cpp 0 → 100644 +45 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "SkiaProfileRenderer.h" namespace android { namespace uirenderer { void SkiaProfileRenderer::drawRect(float left, float top, float right, float bottom, const SkPaint& paint) { SkRect rect = SkRect::MakeLTRB(left, top, right, bottom); mCanvas->drawRect(rect, paint); } void SkiaProfileRenderer::drawRects(const float* rects, int count, const SkPaint& paint) { for (int index = 0; index + 4 <= count; index += 4) { SkRect rect = SkRect::MakeLTRB(rects[index + 0], rects[index + 1], rects[index + 2], rects[index + 3]); mCanvas->drawRect(rect, paint); } } uint32_t SkiaProfileRenderer::getViewportWidth() { return mCanvas->imageInfo().width(); } uint32_t SkiaProfileRenderer::getViewportHeight() { return mCanvas->imageInfo().height(); } } /* namespace uirenderer */ } /* namespace android */ libs/hwui/pipeline/skia/SkiaProfileRenderer.h 0 → 100644 +42 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "IProfileRenderer.h" #include "BakedOpRenderer.h" namespace android { namespace uirenderer { class SkiaProfileRenderer : public IProfileRenderer { public: SkiaProfileRenderer(SkCanvas* canvas) : mCanvas(canvas) {} void drawRect(float left, float top, float right, float bottom, const SkPaint& paint) override; void drawRects(const float* rects, int count, const SkPaint& paint) override; uint32_t getViewportWidth() override; uint32_t getViewportHeight() override; virtual ~SkiaProfileRenderer() {} private: // Does not have ownership. SkCanvas* mCanvas; }; } /* namespace uirenderer */ } /* namespace android */ libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ #include "renderthread/EglManager.h" // needed for Frame #include "Readback.h" #include "renderstate/RenderState.h" #include "SkiaPipeline.h" #include "SkiaProfileRenderer.h" #include <SkTypes.h> #include <WindowContextFactory_android.h> Loading Loading @@ -69,6 +71,16 @@ bool SkiaVulkanPipeline::draw(const Frame& frame, const SkRect& screenDirty, } renderFrame(*layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, mBackbuffer); layerUpdateQueue->clear(); // Draw visual debugging features if (CC_UNLIKELY(Properties::showDirtyRegions || ProfileType::None == Properties::getProfileType())) { SkCanvas* profileCanvas = mBackbuffer->getCanvas(); SkiaProfileRenderer profileRenderer(profileCanvas); profiler->draw(profileRenderer); profileCanvas->flush(); } return true; } Loading Loading
libs/hwui/Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ hwui_src_files := \ pipeline/skia/SkiaDisplayList.cpp \ pipeline/skia/SkiaOpenGLPipeline.cpp \ pipeline/skia/SkiaPipeline.cpp \ pipeline/skia/SkiaProfileRenderer.cpp \ pipeline/skia/SkiaRecordingCanvas.cpp \ pipeline/skia/SkiaVulkanPipeline.cpp \ renderstate/Blend.cpp \ Loading
libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ #include "renderthread/EglManager.h" #include "renderstate/RenderState.h" #include "Readback.h" #include "SkiaPipeline.h" #include "SkiaProfileRenderer.h" #include "utils/TraceUtils.h" #include <android/native_window.h> Loading Loading @@ -83,6 +85,16 @@ bool SkiaOpenGLPipeline::draw(const Frame& frame, const SkRect& screenDirty, SkiaPipeline::updateLighting(lightGeometry, lightInfo); renderFrame(*layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface); layerUpdateQueue->clear(); // Draw visual debugging features if (CC_UNLIKELY(Properties::showDirtyRegions || ProfileType::None == Properties::getProfileType())) { SkCanvas* profileCanvas = surface->getCanvas(); SkiaProfileRenderer profileRenderer(profileCanvas); profiler->draw(profileRenderer); profileCanvas->flush(); } return true; } Loading
libs/hwui/pipeline/skia/SkiaProfileRenderer.cpp 0 → 100644 +45 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "SkiaProfileRenderer.h" namespace android { namespace uirenderer { void SkiaProfileRenderer::drawRect(float left, float top, float right, float bottom, const SkPaint& paint) { SkRect rect = SkRect::MakeLTRB(left, top, right, bottom); mCanvas->drawRect(rect, paint); } void SkiaProfileRenderer::drawRects(const float* rects, int count, const SkPaint& paint) { for (int index = 0; index + 4 <= count; index += 4) { SkRect rect = SkRect::MakeLTRB(rects[index + 0], rects[index + 1], rects[index + 2], rects[index + 3]); mCanvas->drawRect(rect, paint); } } uint32_t SkiaProfileRenderer::getViewportWidth() { return mCanvas->imageInfo().width(); } uint32_t SkiaProfileRenderer::getViewportHeight() { return mCanvas->imageInfo().height(); } } /* namespace uirenderer */ } /* namespace android */
libs/hwui/pipeline/skia/SkiaProfileRenderer.h 0 → 100644 +42 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "IProfileRenderer.h" #include "BakedOpRenderer.h" namespace android { namespace uirenderer { class SkiaProfileRenderer : public IProfileRenderer { public: SkiaProfileRenderer(SkCanvas* canvas) : mCanvas(canvas) {} void drawRect(float left, float top, float right, float bottom, const SkPaint& paint) override; void drawRects(const float* rects, int count, const SkPaint& paint) override; uint32_t getViewportWidth() override; uint32_t getViewportHeight() override; virtual ~SkiaProfileRenderer() {} private: // Does not have ownership. SkCanvas* mCanvas; }; } /* namespace uirenderer */ } /* namespace android */
libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ #include "renderthread/EglManager.h" // needed for Frame #include "Readback.h" #include "renderstate/RenderState.h" #include "SkiaPipeline.h" #include "SkiaProfileRenderer.h" #include <SkTypes.h> #include <WindowContextFactory_android.h> Loading Loading @@ -69,6 +71,16 @@ bool SkiaVulkanPipeline::draw(const Frame& frame, const SkRect& screenDirty, } renderFrame(*layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, mBackbuffer); layerUpdateQueue->clear(); // Draw visual debugging features if (CC_UNLIKELY(Properties::showDirtyRegions || ProfileType::None == Properties::getProfileType())) { SkCanvas* profileCanvas = mBackbuffer->getCanvas(); SkiaProfileRenderer profileRenderer(profileCanvas); profiler->draw(profileRenderer); profileCanvas->flush(); } return true; } Loading