Race conditions when changing CAMetalLayer.drawableSize?

Is the pseudocode below thread-safe? Imagine that the Main thread sets the CAMetalLayer's drawableSize to a new size meanwhile the rendering thread is in the middle of rendering into an existing MTLDrawable which does still have the old size.

Is the change of metalLayer.drawableSize thread-safe in the sense that I can present an old MTLDrawable which has a different resolution than the current value of metalLayer.drawableSize? I assume that setting the drawableSize property informs Metal that the next MTLDrawable offered by the CAMetalLayer should have the new size, right?

Is it valid to assume that "metalLayer.drawableSize = newSize" and "metalLayer.nextDrawable()" are internally synchronized, so it cannot happen that metalLayer.nextDrawable() would produce e.g. a MTLDrawable with the old width but with the new height (or a completely invalid resolution due to potential race conditions)?

func onWindowResized(newSize: CGSize) {
    // Called on the Main thread
    metalLayer.drawableSize = newSize
}

func onVsync(drawable: MTLDrawable) {
    // Called on a background rendering thread
    renderer.renderInto(drawable: drawable)
}
Race conditions when changing CAMetalLayer.drawableSize?
 
 
Q