don't need to comment on the proof
you don't need to comment on lack of something unless it's important. Seems like another artifact of responding in the comments rather than keeping them isolated to the current project state.
say "use" rather than draw. Draw may suggest the texture will appear, which would not be the case with masks
why is Atlas in prelude?
much better, almost there. Highlighting text and such does indeed require 2 layers, that should be changed. As stated, you should never rely on order within a single layer.
don't include the setup for now. It's better to intentionally let things break so that registration order is not relied on, and it also frees up resources for users who don't need specific parts. In fact, could this be exploited to only iterate over the primitive kinds used per layer?
any point in this now that it works as a primitive? maybe impl from texture handle for the primitive or smth / PrimitiveLike trait?
too verbose. Don't explain fields in the struct comment, put them directly on fields and only if it's not obvious
registration order is an implementation detail & shouldn't be relied on. Layers are the proper mechanism to put something on top of something else
There's no repr so can't you just derive these?
can these if lets be merged?
you let old information get into this doc (GLES)
does it really have to be a multiple of 4?
the kind is supposed to be obtainable from the type. That's like half of the point of the trait
much better. Two main issues here are that the kind is supposed to come from the generic type, and still seems like there's a decent bit of texture specific code being applied to all pipelines. Masks do need to support being textures, however, so keep that in mind.
don't think this comment is useful
need to make a named const for the 1 so it's clear what it is
how is binding change tracked now?
this is one instance of textures being jammed in; rects don't have anything to do with per instance vs atlas