Skip to content

Commit 6faad80

Browse files
committed
Trace each config option in RenderEngine's shader priming
This adds minimal tracing overhead compared to the significant tracing already being done for these draw calls, and may help downstream developers better understand how each configuration option contributes to device boot time. Test: presubmit Bug: N/A Flag: NONE trivial debug tracing Change-Id: I9ed45e3a57223eb6c4f4af78c05c72facb3941ce
1 parent adcbb98 commit 6faad80

1 file changed

Lines changed: 22 additions & 1 deletion

File tree

libs/renderengine/skia/Cache.cpp

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
* limitations under the License.
1515
*/
1616
#include "Cache.h"
17+
18+
#define ATRACE_TAG ATRACE_TAG_GRAPHICS
19+
1720
#include "AutoBackendTexture.h"
1821
#include "SkiaRenderEngine.h"
1922
#include "android-base/unique_fd.h"
@@ -28,6 +31,7 @@
2831
#include "utils/Timers.h"
2932

3033
#include <com_android_graphics_libgui_flags.h>
34+
#include <common/trace.h>
3135

3236
namespace android::renderengine::skia {
3337

@@ -659,6 +663,7 @@ static void drawEdgeExtensionLayers(SkiaRenderEngine* renderengine, const Displa
659663
// in external/skia/src/gpu/gl/builders/GrGLShaderStringBuilder.cpp
660664
// gPrintSKSL = true
661665
void Cache::primeShaderCache(SkiaRenderEngine* renderengine, PrimeCacheConfig config) {
666+
SFTRACE_CALL();
662667
const int previousCount = renderengine->reportShadersCompiled();
663668
if (previousCount) {
664669
ALOGD("%d Shaders already compiled before Cache::primeShaderCache ran\n", previousCount);
@@ -724,24 +729,29 @@ void Cache::primeShaderCache(SkiaRenderEngine* renderengine, PrimeCacheConfig co
724729
impl::ExternalTexture::Usage::WRITEABLE);
725730

726731
if (config.cacheHolePunchLayer) {
732+
SFTRACE_NAME("cacheHolePunchLayer");
727733
drawHolePunchLayer(renderengine, display, dstTexture);
728734
}
729735

730736
if (config.cacheSolidLayers) {
737+
SFTRACE_NAME("cacheSolidLayers");
731738
drawSolidLayers(renderengine, display, dstTexture);
732739
drawSolidLayers(renderengine, p3Display, dstTexture);
733740
}
734741

735742
if (config.cacheSolidDimmedLayers) {
743+
SFTRACE_NAME("cacheSolidDimmedLayers");
736744
drawSolidDimmedLayers(renderengine, display, dstTexture);
737745
}
738746

739747
if (config.cacheShadowLayers) {
748+
SFTRACE_NAME("cacheShadowLayers");
740749
drawShadowLayers(renderengine, display, srcTexture);
741750
drawShadowLayers(renderengine, p3Display, srcTexture);
742751
}
743752

744753
if (renderengine->supportsBackgroundBlur()) {
754+
SFTRACE_NAME("supportsBackgroundBlur");
745755
drawBlurLayers(renderengine, display, dstTexture);
746756
}
747757

@@ -776,32 +786,38 @@ void Cache::primeShaderCache(SkiaRenderEngine* renderengine, PrimeCacheConfig co
776786

777787
for (auto texture : textures) {
778788
if (config.cacheImageLayers) {
789+
SFTRACE_NAME("cacheImageLayers");
779790
drawImageLayers(renderengine, display, dstTexture, texture);
780791
}
781792

782793
if (config.cacheImageDimmedLayers) {
794+
SFTRACE_NAME("cacheImageDimmedLayers");
783795
drawImageDimmedLayers(renderengine, display, dstTexture, texture);
784796
drawImageDimmedLayers(renderengine, p3Display, dstTexture, texture);
785797
drawImageDimmedLayers(renderengine, bt2020Display, dstTexture, texture);
786798
}
787799

788800
if (config.cacheClippedLayers) {
801+
SFTRACE_NAME("cacheClippedLayers");
789802
// Draw layers for b/185569240.
790803
drawClippedLayers(renderengine, display, dstTexture, texture);
791804
}
792805

793806
if (com::android::graphics::libgui::flags::edge_extension_shader() &&
794807
config.cacheEdgeExtension) {
808+
SFTRACE_NAME("cacheEdgeExtension");
795809
drawEdgeExtensionLayers(renderengine, display, dstTexture, texture);
796810
drawEdgeExtensionLayers(renderengine, p3Display, dstTexture, texture);
797811
}
798812
}
799813

800814
if (config.cachePIPImageLayers) {
815+
SFTRACE_NAME("cachePIPImageLayers");
801816
drawPIPImageLayer(renderengine, display, dstTexture, externalTexture);
802817
}
803818

804819
if (config.cacheTransparentImageDimmedLayers) {
820+
SFTRACE_NAME("cacheTransparentImageDimmedLayers");
805821
drawTransparentImageDimmedLayers(renderengine, bt2020Display, dstTexture,
806822
externalTexture);
807823
drawTransparentImageDimmedLayers(renderengine, display, dstTexture, externalTexture);
@@ -811,10 +827,12 @@ void Cache::primeShaderCache(SkiaRenderEngine* renderengine, PrimeCacheConfig co
811827
}
812828

813829
if (config.cacheClippedDimmedImageLayers) {
830+
SFTRACE_NAME("cacheClippedDimmedImageLayers");
814831
drawClippedDimmedImageLayers(renderengine, bt2020Display, dstTexture, externalTexture);
815832
}
816833

817834
if (config.cacheUltraHDR) {
835+
SFTRACE_NAME("cacheUltraHDR");
818836
drawBT2020ClippedImageLayers(renderengine, bt2020Display, dstTexture, externalTexture);
819837

820838
drawBT2020ImageLayers(renderengine, bt2020Display, dstTexture, externalTexture);
@@ -833,7 +851,10 @@ void Cache::primeShaderCache(SkiaRenderEngine* renderengine, PrimeCacheConfig co
833851
};
834852
auto layers = std::vector<LayerSettings>{layer};
835853
// call get() to make it synchronous
836-
renderengine->drawLayers(display, layers, dstTexture, base::unique_fd()).get();
854+
{
855+
SFTRACE_NAME("finalLayer");
856+
renderengine->drawLayers(display, layers, dstTexture, base::unique_fd()).get();
857+
}
837858

838859
const nsecs_t timeAfter = systemTime();
839860
const float compileTimeMs = static_cast<float>(timeAfter - timeBefore) / 1.0E6;

0 commit comments

Comments
 (0)