In the following scenario :
1. Create image format R8G8B8A8_UNORM 2. Create image view format R8G8B8A8_SRGB 3. Clear the view through a sub pass to a particular color 4. Barrier on the image to from color attachment to source transfer 5. Copy the image into a linear buffer to check the content
The step 4 resolving the clear color is unaware of the SRGB format of the view, because the blorp resolve operations operate on images the color associated with the resolve will not operate on SRGB format but UNORM. Leading to the wrong color being written into surfaces.
This change forces a clear color resolve at the end of the render pass so following resolves won't have to deal with the clear color with a format that doesn't match the image's format.
On gfxbench vulkan_5_normal 1280x720, this appear to cost us ~0.5fps, from 49.316 down to 48.949.
v2: Only fast clear resolve when image & view have different formats (Lionel)
v3: Update warning (Jason)
add5a2ec92 anv: flush fast clear colors into compressed surfaces
src/intel/vulkan/genX_cmd_buffer.c | 49 ++++++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)