Hi!
I was wondering about how Path rendering and DMSAA/other AA work with Ganesh.
So far, I haven't figured it our completely, so decided to ask here.
Let's consider I'm rendering some drawPath, drawText.
- By default I could see some path geometry is rendered into the 4x MSAA atlas that is later resolved into ordinary R8_UNORM texture and then sampled from. And it's rendered with stencil/cover approach as far as I could tell.
- If I change fInternalSampleCount to 0, the pipeline changes apparently. Now I could see, there's no atlas, but separate drawcalls for each path, that sample from a R8_UNORM texture, which apparently is rendered on the CPU side and just uploaded to GPU. I could also see some trace events from SoftwarePathRenderer/GrSWMaskHelper and rather long GrGpu::CreateTexture after that.
So, could you guys please explain what happens? If I keep fInternalSampleCount=4, the MSAA is enabled and GPU pipeline is used. If I want to disable MSAA, it doesn't turn the multisampled framebuffer into the ordinary one and keep the GPU pipeline, but fallbacks to CPU pipeline instead?
1) Can I keep the GPU pipeline but have non-MSAA buffer for path rendering?
2) If I set fInternalSampleCount =0, how is path geometry going to be rendered? And what kind of AA options would I have?
3) How does Coverage AA work and with what rendering methods?
4) What does fAntiAlias bit do in Paint structure and how does it relate to AA settings/rendering methods?
5) Also, related question, is there differences in caching with different rendering methods?
Sorry, if I'm asking too much, it's just that the more I look into it and try to figure out how it works, the more complex it all gets.
___
Thanks,
Denis