make SkShaderBase::onProgram pure virtual

This makes it easier to see which shaders do not have an SkVM
implementation (tricolor for drawVertices, perlin noise) and lets us
reserve the default onProgram() for other uses, like mutually recursive
F32/Half onProgram(), just as we've done previously for color filters.

I've marked both tricolor and perlin noise as "TODO?" rather than just a
simple "TODO", mostly because they're both intriguing to handle in other
ways, perhaps in externalizable SkSL.

Change-Id: I6ccd14a85dee1519b10d53ecbfc1074916954eca
Reviewed-by: Mike Reed <>
Commit-Queue: Mike Klein <>
4 files changed