Vulkan: Improve generateMipmapsWithBlit barrier usage
ImageHelper::generateMipmapsWithBlit() implements glGenerateMipmap using
vkCmdBlitImage. For each level it changes layout to
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL and issue a blit. In order to keep
all mipmap levels' layout consistent, it issues a vkCmdPipelineBarrier
call for the the very last mipmap level to change it to
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL as well. This creates an
unnecessary barrier for the next operation, that now it sees a barrier
against transfer stage. This CL changes all levels to
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL so that the whole image will
have consistent layout. After glGenerateMipmap call, the next reasonable
usage is use it in fragment shader, so the barrier is not wasted.
Bug: angleproject:5986
Change-Id: I3690ae8417d97bc504fcf036d016f289e6370526
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2909757
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by:
Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by:
Tim Van Patten <timvp@google.com>
Showing
Please
register
or
sign in
to comment