This patches allow us to use VK_ATTACHMENT_LOAD_OP_CLEAR and VK_ATTACHMENT_LOAD_OP_DONT_CARE for cleared and discarded textures in some conditions. I wrote them in an attempt to improve improve Rocket League performance, but in their current state they don't produce a measurable gain yet. They still seem like the right thing to do.
To matter in Rocket League, support for non-zero clear values needs to be added. This needs a bit more work on the fallback path (something along the lines of calling surface_cpu_blt_colour_fill and extending it to support floats). Rocket League also clears the depth component of a Depth-Stencil surface without clearing the Stencil part. Vulkan supports that, but it is not easy to integrate it with our location management.
Stefan Dösinger (4): wined3d: Invalidate framebuffer locations after setting up the renderpass. wined3d: Tell Vulkan about discarded and cleared framebuffer attachments. wined3d: Don't explicitly clear the draw location before starting a renderpass. wined3d: Set WINED3D_LOCATION_CLEARED for full-subresource clears to black.
dlls/wined3d/context_vk.c | 94 ++++++++++++++++++++++++++++------ dlls/wined3d/texture.c | 86 ++++++++++++++++++++++++------- dlls/wined3d/view.c | 23 +++++++++ dlls/wined3d/wined3d_private.h | 9 +++- 4 files changed, 177 insertions(+), 35 deletions(-)