This patchset implements delayed clears in the Vulkan renderer with arbitrary colors. The Vulkan side of it is fairly simple - most of the patches extend the CPU fallback path to support those colors.
The final patch adds a d3d9 test to exercise the fallback code. The Vk renderer is functional enough in d3d9 to run this particular test. I don't see a way to reliably test this codepath through d3d10/11 without quirky assumptions about CopyResource. Dynamic and staging resources can't be written by the GPU, and default resources can't be read by the CPU.
Stefan Dösinger (9): wined3d: Separate mapping from data writing in surface_cpu_blt_colour_fill. wined3d: Prepare wined3d_format_convert_from_float for > 32bpp formats. wined3d: Add support for sysmem-clearing float32 formats. wined3d: Support CPU clear of float16 formats. wined3d: Add 16 bit per channel UNORM formats to wined3d_format_convert_from_float. wined3d: Add a memory_colour_fill for clearing the entire level to zero. wined3d: Prepare sysmem LOCATION_CLEARED handling for non-zero colors. wined3d: Store clear colors in subresources. d3d9/tests: Extend color_fill_test.
dlls/d3d9/tests/visual.c | 132 ++++++++++++++++++++++------ dlls/wined3d/context_vk.c | 57 ++++++++++-- dlls/wined3d/device.c | 7 +- dlls/wined3d/resource.c | 112 +++++++++++++++++++++++ dlls/wined3d/surface.c | 139 +---------------------------- dlls/wined3d/texture.c | 52 +++++++---- dlls/wined3d/utils.c | 156 +++++++++++++++++++++++++-------- dlls/wined3d/wined3d_private.h | 91 +++++++++++++++++-- 8 files changed, 514 insertions(+), 232 deletions(-)