Is there a way to get access to, and manipulate, the pixel values in the mipmap level images. This is in the case of CPU rendering. GPU would have the mipmaps on the card's memory. The pixel type is alpha 8, if that matters.
I am still working on the same problem. Trying to make the alpha values increase, at render time, based on zoom level. A color matrix couldn't do it. A home-grown shader couldn't do it either. Now I am thinking of doing what I was doing with my own renderer. Which is: change the mipmap representations of the image. Scaling up the alpha values the deeper into the mipmap stack they are.
If you are wondering why I am trying to do this, the rest of this message describes that:
Among other things, my application renders blueprints. High resolution, black-and-white (1 bit) images loaded from various Group 4 compressed file formats. That either came from scanners, or were rendered by CAD applications. These 1 bit images now live in Skia Alpha 8 bit images. They use more memory, but that is ok. The Skia CPU renderer doesn't seem to care, as long as it can malloc enough memory.
The lines on these drawings are very thin. Often only 1 pixel wide. So, when you zoom out to show most or all of the drawing, those lines become very faint. Which is logical, since their contribution to any given pixel is very small. Before Skia, I handled this by writing my own software raster renderer. I made the mipmaps preserve the 1's at the expense of the 0's. So lines would remain visible at any zoom level. This is great for viewing blueprints. But artwork looks like garbage. Which is fine for our use cases.