[PATCH 0/4] wined3d: Better integrate clears with Vulkan renderpasses

Stefan Dösinger stefan at codeweavers.com
Sun Apr 24 11:24:45 CDT 2022


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(-)

-- 
2.35.1




More information about the wine-devel mailing list