diff options
author | 2016-03-04 15:59:24 -0800 | |
---|---|---|
committer | 2016-03-04 16:18:26 -0800 | |
commit | 1dfa0704964c17e45775b9e01f1fa0b1a10774f7 (patch) | |
tree | 45cbf88a4792def75988c4ae1a7dca8d8ffda3e9 /libs/hwui/BakedOpRenderer.cpp | |
parent | 8316fac9c0772b1908d45b2286298b5b791d3ca7 (diff) |
Support GPU profiling vis in new pipeline
bug:27353099
Change-Id: I905c1a998d9a9e2097c047dab9de87a70d7a370e
Diffstat (limited to 'libs/hwui/BakedOpRenderer.cpp')
-rw-r--r-- | libs/hwui/BakedOpRenderer.cpp | 44 |
1 files changed, 33 insertions, 11 deletions
diff --git a/libs/hwui/BakedOpRenderer.cpp b/libs/hwui/BakedOpRenderer.cpp index c14738469058..98493d73776e 100644 --- a/libs/hwui/BakedOpRenderer.cpp +++ b/libs/hwui/BakedOpRenderer.cpp @@ -135,17 +135,7 @@ void BakedOpRenderer::endFrame(const Rect& repaintRect) { mRenderState.stencil().disable(); } - mCaches.clearGarbage(); - mCaches.pathCache.trim(); - mCaches.tessellationCache.trim(); - -#if DEBUG_MEMORY_USAGE - mCaches.dumpMemoryUsage(); -#else - if (Properties::debugLevel & kDebugMemory) { - mCaches.dumpMemoryUsage(); - } -#endif + // Note: we leave FBO 0 renderable here, for post-frame-content decoration } void BakedOpRenderer::setViewport(uint32_t width, uint32_t height) { @@ -179,6 +169,38 @@ Texture* BakedOpRenderer::getTexture(const SkBitmap* bitmap) { return texture; } +void BakedOpRenderer::drawRects(const float* rects, int count, const SkPaint* paint) { + std::vector<Vertex> vertices; + vertices.reserve(count); + Vertex* vertex = vertices.data(); + + for (int index = 0; index < count; index += 4) { + float l = rects[index + 0]; + float t = rects[index + 1]; + float r = rects[index + 2]; + float b = rects[index + 3]; + + Vertex::set(vertex++, l, t); + Vertex::set(vertex++, r, t); + Vertex::set(vertex++, l, b); + Vertex::set(vertex++, r, b); + } + + LOG_ALWAYS_FATAL_IF(mRenderTarget.frameBufferId != 0, "decoration only supported for FBO 0"); + // TODO: Currently assume full FBO damage, due to FrameInfoVisualizer::unionDirty. + // Should should scissor safely. + mRenderState.scissor().setEnabled(false); + Glop glop; + GlopBuilder(mRenderState, mCaches, &glop) + .setRoundRectClipState(nullptr) + .setMeshIndexedQuads(vertices.data(), count / 4) + .setFillPaint(*paint, 1.0f) + .setTransform(Matrix4::identity(), TransformFlags::None) + .setModelViewIdentityEmptyBounds() + .build(); + mRenderState.render(glop, mRenderTarget.orthoMatrix); +} + // clears and re-fills stencil with provided rendertarget space quads, // and then put stencil into test mode void BakedOpRenderer::setupStencilQuads(std::vector<Vertex>& quadVertices, |