You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ghosting on fast camera motion: a pillar or a billboard passing the camera used to show a
double edge. Motion is believed up to 128 pixels between frames instead of 64 (the search
reaches 256 at half resolution), so a fast pan no longer falls back to the blind blend of
both frames over most of the picture. And where the two warped samples disagree (a wrong
vector, a silhouette whose blocks carry the background's motion, a background uncovered from
behind a passing object) the blend leans on the current frame's own unmoved pixel instead of
drawing both: an object the camera follows stays whole.
A device-level command resolved through vkGetInstanceProcAddr was hooked even when the
driver below lacked it, so on a driver without core vkQueueSubmit2 a game resolving it that
way had every submission dropped. The instance route now answers as the device route does:
a hook only for a command the chain below has, and nothing for a null instance.
The hooks answered an unknown device with VK_ERROR_INITIALIZATION_FAILED, which vkQueueSubmit, vkQueuePresentKHR and the swapchain commands cannot return; they answer VK_ERROR_DEVICE_LOST.
The registry lock taken on every submission and present of the game is a read-write lock:
a game submitting from several threads no longer serialises them on the layer.
The layer's queue joined a protected queue request of the game's when both were in the same
family, which made it protected too and its handle invalid; it joins an unprotected request
or asks for one of its own.
When vkCreateDevice failed with the layer's additions (its queue, shaderInt16), the
failure reached the game. The request goes down once more exactly as the game wrote it.
The governor's one-in-two and one-in-three steps paced on the present counter, which the
game's thread had moved past the frame being decided, so the cadence came out as pairs and
gaps; each frame now carries its own number.
A per-present mode list longer than the layer can carry was cut short in silence; the
game's mode is kept instead. The FIFO-to-MAILBOX rewrite also applies on the inline path
when the mode request heads the present chain.
With pacing on, a hold under half a millisecond became no hold at all, and in MAILBOX two
presents in the same instant dropped the generated frame; the minimum hold applies. The
hold's ceiling is 40 ms, so the generated frame stays halfway down to 12.5 fps.
The release fence of the companion's image got no time when the acquire had spent the whole
budget; it gets a millisecond, and a companion that was there is no longer skipped.
AFMF_MIN_FPS has a margin: a game sitting on the floor turned generation on and off with
every frame, since doubling lightens the GPU, the rate rises and the floor clears. Generation
returns once the real rate is a tenth above the floor, and the governor's streaks restart.
The HDR luma is clamped before it is stored as a byte: a pixel brighter than the peak used to
wrap to a dark value, and an out-of-gamut scRGB value reached a cube root as a negative.
AFMF_DUMP_DIR is copied out of the environment block, which Wine moves.
A swapchain image index outside what the direct paths keep a view for is an error and
records nothing, instead of a fallback that left the luma unwritten or copied from an image
direct output never creates.
The half-resolution downscale on the copy path sampled the centre of each 2x2 quad against
the destination size, which drifts by a texel on an odd frame.