Commit 693d0e0b by Jamie Madill Committed by Commit Bot

Vulkan: Minor cleanup to vk_helpers.

Moves some checks into helper functions. Refactor only. Bug: angleproject:4959 Change-Id: I08053a96f99baff75eb3954ecbb77e83483eba0f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2343406Reviewed-by: 's avatarCharlie Lao <cclao@google.com> Reviewed-by: 's avatarTim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent d488568a
......@@ -69,6 +69,7 @@ struct ImageMemoryBarrierData
{
// The Vk layout corresponding to the ImageLayout key.
VkImageLayout layout;
// The stage in which the image is used (or Bottom/Top if not using any specific stage). Unless
// Bottom/Top (Bottom used for transition to and Top used for transition from), the two values
// should match.
......@@ -526,6 +527,10 @@ bool IsExternalQueueFamily(uint32_t queueFamilyIndex)
}
#endif
bool IsShaderReadOnlyLayout(const ImageMemoryBarrierData &imageLayout)
{
return imageLayout.layout == VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
}
} // anonymous namespace
VkImageLayout ConvertImageLayoutToVkImageLayout(ImageLayout imageLayout)
......@@ -2773,7 +2778,7 @@ angle::Result ImageHelper::initExternal(Context *context,
imageInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
imageInfo.queueFamilyIndexCount = 0;
imageInfo.pQueueFamilyIndices = nullptr;
imageInfo.initialLayout = kImageMemoryBarrierData[initialLayout].layout;
imageInfo.initialLayout = ConvertImageLayoutToVkImageLayout(initialLayout);
mCurrentLayout = initialLayout;
......@@ -3161,7 +3166,7 @@ bool ImageHelper::isCombinedDepthStencilFormat() const
VkImageLayout ImageHelper::getCurrentLayout() const
{
return kImageMemoryBarrierData[mCurrentLayout].layout;
return ConvertImageLayoutToVkImageLayout(mCurrentLayout);
}
gl::Extents ImageHelper::getLevelExtents(uint32_t levelVK) const
......@@ -3323,8 +3328,7 @@ bool ImageHelper::updateLayoutAndBarrier(VkImageAspectFlags aspectMask,
VkPipelineStageFlags srcStageMask = transitionFrom.srcStageMask;
VkPipelineStageFlags dstStageMask = transitionTo.dstStageMask;
if (transitionTo.layout == VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL &&
transitionFrom.layout == VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL)
if (IsShaderReadOnlyLayout(transitionTo) && IsShaderReadOnlyLayout(transitionFrom))
{
// If we are switching between different shader stage reads, then there is no actual
// layout change or access type change. We only need a barrier if we are making a read
......@@ -3361,9 +3365,9 @@ bool ImageHelper::updateLayoutAndBarrier(VkImageAspectFlags aspectMask,
// If we are transition into shaderRead layout, remember the last
// non-shaderRead layout here.
if (transitionTo.layout == VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL)
if (IsShaderReadOnlyLayout(transitionTo))
{
ASSERT(transitionFrom.layout != VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
ASSERT(!IsShaderReadOnlyLayout(transitionFrom));
mLastNonShaderReadOnlyLayout = mCurrentLayout;
mCurrentShaderReadStageMask = dstStageMask;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment