There seem to only be two callers:
2. SkiaCanvas in android framework
I think #1 can logically be eliminated, as the canvas is always raster (it came from the framework), and the framework doesn't have soft clips.
#2 is for Canvas::setBitmap, which tries to create a new native canvas for an existing java one, while keeping the current matrix and clip state.
One motivation to remove this is that it locks us into always having a clipstack in the canvas. Today only the gpu-backend actually uses this clipstack, and it would be nicer to not create one for raster or picture canvases.