Loading libs/renderengine/skia/SkiaGLRenderEngine.cpp +3 −9 Original line number Diff line number Diff line Loading @@ -919,12 +919,9 @@ status_t SkiaGLRenderEngine::drawLayers(const DisplaySettings& display, // TODO(b/175915334): consider relaxing this restriction to enable more flexible // composition - using a well-defined invalid color is long-term less error-prone. if (layer->shadow.length > 0) { const auto rect = layer->geometry.roundedCornersRadius > 0 ? getSkRect(layer->geometry.roundedCornersCrop) : bounds.rect(); // This would require a new parameter/flag to SkShadowUtils::DrawShadow LOG_ALWAYS_FATAL_IF(layer->disableBlending, "Cannot disableBlending with a shadow"); drawShadow(canvas, rect, layer->geometry.roundedCornersRadius, layer->shadow); drawShadow(canvas, bounds, layer->shadow); continue; } Loading Loading @@ -1213,17 +1210,14 @@ size_t SkiaGLRenderEngine::getMaxViewportDims() const { return mGrContext->maxRenderTargetSize(); } void SkiaGLRenderEngine::drawShadow(SkCanvas* canvas, const SkRect& casterRect, float cornerRadius, void SkiaGLRenderEngine::drawShadow(SkCanvas* canvas, const SkRRect& casterRRect, const ShadowSettings& settings) { ATRACE_CALL(); const float casterZ = settings.length / 2.0f; const auto shadowShape = cornerRadius > 0 ? SkPath::RRect(SkRRect::MakeRectXY(casterRect, cornerRadius, cornerRadius)) : SkPath::Rect(casterRect); const auto flags = settings.casterIsTranslucent ? kTransparentOccluder_ShadowFlag : kNone_ShadowFlag; SkShadowUtils::DrawShadow(canvas, shadowShape, SkPoint3::Make(0, 0, casterZ), SkShadowUtils::DrawShadow(canvas, SkPath::RRect(casterRRect), SkPoint3::Make(0, 0, casterZ), getSkPoint3(settings.lightPos), settings.lightRadius, getSkColor(settings.ambientColor), getSkColor(settings.spotColor), flags); Loading libs/renderengine/skia/SkiaGLRenderEngine.h +1 −1 Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ private: base::unique_fd flush(); bool waitFence(base::unique_fd fenceFd); void initCanvas(SkCanvas* canvas, const DisplaySettings& display); void drawShadow(SkCanvas* canvas, const SkRect& casterRect, float casterCornerRadius, void drawShadow(SkCanvas* canvas, const SkRRect& casterRRect, const ShadowSettings& shadowSettings); // If requiresLinearEffect is true or the layer has a stretchEffect a new shader is returned. // Otherwise it returns the input shader. Loading Loading
libs/renderengine/skia/SkiaGLRenderEngine.cpp +3 −9 Original line number Diff line number Diff line Loading @@ -919,12 +919,9 @@ status_t SkiaGLRenderEngine::drawLayers(const DisplaySettings& display, // TODO(b/175915334): consider relaxing this restriction to enable more flexible // composition - using a well-defined invalid color is long-term less error-prone. if (layer->shadow.length > 0) { const auto rect = layer->geometry.roundedCornersRadius > 0 ? getSkRect(layer->geometry.roundedCornersCrop) : bounds.rect(); // This would require a new parameter/flag to SkShadowUtils::DrawShadow LOG_ALWAYS_FATAL_IF(layer->disableBlending, "Cannot disableBlending with a shadow"); drawShadow(canvas, rect, layer->geometry.roundedCornersRadius, layer->shadow); drawShadow(canvas, bounds, layer->shadow); continue; } Loading Loading @@ -1213,17 +1210,14 @@ size_t SkiaGLRenderEngine::getMaxViewportDims() const { return mGrContext->maxRenderTargetSize(); } void SkiaGLRenderEngine::drawShadow(SkCanvas* canvas, const SkRect& casterRect, float cornerRadius, void SkiaGLRenderEngine::drawShadow(SkCanvas* canvas, const SkRRect& casterRRect, const ShadowSettings& settings) { ATRACE_CALL(); const float casterZ = settings.length / 2.0f; const auto shadowShape = cornerRadius > 0 ? SkPath::RRect(SkRRect::MakeRectXY(casterRect, cornerRadius, cornerRadius)) : SkPath::Rect(casterRect); const auto flags = settings.casterIsTranslucent ? kTransparentOccluder_ShadowFlag : kNone_ShadowFlag; SkShadowUtils::DrawShadow(canvas, shadowShape, SkPoint3::Make(0, 0, casterZ), SkShadowUtils::DrawShadow(canvas, SkPath::RRect(casterRRect), SkPoint3::Make(0, 0, casterZ), getSkPoint3(settings.lightPos), settings.lightRadius, getSkColor(settings.ambientColor), getSkColor(settings.spotColor), flags); Loading
libs/renderengine/skia/SkiaGLRenderEngine.h +1 −1 Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ private: base::unique_fd flush(); bool waitFence(base::unique_fd fenceFd); void initCanvas(SkCanvas* canvas, const DisplaySettings& display); void drawShadow(SkCanvas* canvas, const SkRect& casterRect, float casterCornerRadius, void drawShadow(SkCanvas* canvas, const SkRRect& casterRRect, const ShadowSettings& shadowSettings); // If requiresLinearEffect is true or the layer has a stretchEffect a new shader is returned. // Otherwise it returns the input shader. Loading