Thanks @Etresoft.
I'm aware the two references I posted are over a decade old; I went even further when exploring this, since the class itself was written long time ago, and it's not a common thing to find resources for.
Interestingly though, I haven't found this SCTiledImage previously! I'll have to give it a shot.
Thanks for clarifying Core Image and Metal usage. I have used both Metal and Core Image for various things previously, but for my current use-case, CATiledLayer is indeed the perfect fit - or correct me if you think otherwise. My use-case is displaying a very large image, which I do by rendering it in tiles. The new use-case I have is that tiles should be downloaded from a server, where they are pre-generated.
@DTS Engineer thanks a lot for the info! I have created a demo project, attached it to the report I have submitted, and I've uploaded it to GitHub as well. Here it is: https://github.com/galijot/CATiledLayer-flashing-demo
Note: flashing that I'm describing is the result of CATiledLayer (from my assumption) discarding its current contents and asynchronously re-drawing the whole view. When reloading many tiles (one after each is downloaded), this results in flashing.
Oh and btw: in my original post I accidentally wrote "iPhone 5s" instead of "iPhone 6s" (not that it probably matters much, but still).
The rest of this message will be verbatim of some more info I have posted on the report.
The project has two print statements which are crucial for debugging this:
"draw at position" which is printed in draw(_:) method of TiledView, which prints the position (X,Y and LOD) that it is about to draw, as well as the rect in which it draws.
"reload at position" which is printed in reloadTile(at:), which prints the position that it is about to re-draw, as well as the calculated rect for the tile.
You can search for "FIXME" in the project, which will lead you to the code that displays 4 possible options for testing this:
re-drawing with setNeedsDisplayInRect
re-drawing with setNeedsDisplay
caching layer's contents and applying them after setNeedsDisplayInRect
caching layer's contents and applying them after setNeedsDisplay