v0.3.1
A bugfix release for a split-second full-screen magenta flash, reported during scene transitions in WoW 3.3.5, logging out to the login screen being the reliable spot. Magenta is what undefined memory looks like on the HDR layer's float format, so every fix here is a variation on one rule: never let a frame reach the screen with pixels nothing wrote.
The back buffer is now cleared to black when it is created. A freshly created texture holds whatever memory its allocation recycled, and the back buffer is presentable immediately: presenting before the first draw is legal Direct3D and routine right after a Reset, which is exactly what a scene transition does. The spec leaves post-Reset contents formally undefined, but real drivers hand out zeroed surfaces and games visibly rely on that. The clear rides the frame queue, so it costs nothing per frame and nothing waits on it.
A Clear with explicit rects as the frame's first touch of a render target kept the pass's load action at don't-care, so everything outside the rects came from undefined tile memory. It now loads the previous contents, which is what the rect form of Clear promises.
Two present-path repairs behind the same rule. If the HDR present shader ever fails to encode, the fallback used to copy the BGRA8 back buffer straight into the float drawable, which is invalid API use that kills the command buffer and so guarantees the undefined frame it was trying to avoid; it now presents a defined black frame and says so in the log. And a command buffer the GPU rejects used to discard all of its rendering while its queued present still reached the screen, one magenta frame with nothing in the log to show for it. The completion handler now checks for that and logs the actual GPU error once per error kind, so if a flash ever survives this release, the log names its cause.
Installing is unchanged, and covered in INSTALL.md inside the bundle.
Full changelog: v0.3.0...v0.3.1