Commit 27a24f6d by Jamie Madill Committed by Commit Bot

Vulkan: Check aggregate barrier feature instead of caching.

Bug: b/157508684 Change-Id: I6c98cb017d44c1279439d815e77f6ad1a32133e2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2360903 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarCharlie Lao <cclao@google.com>
parent ea1bda26
......@@ -900,9 +900,7 @@ angle::Result ContextVk::initialize()
// 2. Put a pointer to each command buffer into queue
for (vk::CommandBufferHelper &commandBuffer : mCommandBuffers)
{
// TODO: b/157508684 Don't cache feature in class like this, just check when needed
commandBuffer.initialize(false,
mRenderer->getFeatures().preferAggregateBarrierCalls.enabled);
commandBuffer.initialize(false);
recycleCommandBuffer(&commandBuffer);
}
// Now assign initial command buffers from queue
......
......@@ -586,7 +586,6 @@ CommandBufferHelper::CommandBufferHelper()
mValidTransformFeedbackBufferCount(0),
mRebindTransformFeedbackBuffers(false),
mIsRenderPassCommandBuffer(false),
mMergeBarriers(false),
mDepthStartAccess(ResourceAccess::Unused),
mStencilStartAccess(ResourceAccess::Unused),
mDepthStencilAttachmentIndex(kInvalidAttachmentIndex)
......@@ -597,7 +596,7 @@ CommandBufferHelper::~CommandBufferHelper()
mFramebuffer.setHandle(VK_NULL_HANDLE);
}
void CommandBufferHelper::initialize(bool isRenderPassCommandBuffer, bool mergeBarriers)
void CommandBufferHelper::initialize(bool isRenderPassCommandBuffer)
{
ASSERT(mUsedBuffers.empty());
......@@ -606,7 +605,6 @@ void CommandBufferHelper::initialize(bool isRenderPassCommandBuffer, bool mergeB
mAllocator.push();
mCommandBuffer.initialize(&mAllocator);
mIsRenderPassCommandBuffer = isRenderPassCommandBuffer;
mMergeBarriers = mergeBarriers;
}
bool CommandBufferHelper::usesBuffer(const BufferHelper &buffer) const
......@@ -727,7 +725,7 @@ void CommandBufferHelper::imageWrite(ResourceUseList *resourceUseList,
}
}
void CommandBufferHelper::executeBarriers(PrimaryCommandBuffer *primary)
void CommandBufferHelper::executeBarriers(ContextVk *contextVk, PrimaryCommandBuffer *primary)
{
// make a local copy for faster access
PipelineStagesMask mask = mPipelineBarrierMask;
......@@ -736,7 +734,7 @@ void CommandBufferHelper::executeBarriers(PrimaryCommandBuffer *primary)
return;
}
if (mMergeBarriers)
if (contextVk->getFeatures().preferAggregateBarrierCalls.enabled)
{
PipelineStagesMask::Iterator iter = mask.begin();
PipelineBarrier &barrier = mPipelineBarriers[*iter];
......@@ -842,7 +840,7 @@ angle::Result CommandBufferHelper::flushToPrimary(ContextVk *contextVk,
addCommandDiagnostics(contextVk);
}
// Commands that are added to primary before beginRenderPass command
executeBarriers(primary);
executeBarriers(contextVk, primary);
if (mIsRenderPassCommandBuffer)
{
......
......@@ -858,7 +858,7 @@ class CommandBufferHelper : angle::NonCopyable
~CommandBufferHelper();
// General Functions (non-renderPass specific)
void initialize(bool isRenderPassCommandBuffer, bool mergeBarriers);
void initialize(bool isRenderPassCommandBuffer);
void bufferRead(ResourceUseList *resourceUseList,
VkAccessFlags readAccessType,
......@@ -884,7 +884,7 @@ class CommandBufferHelper : angle::NonCopyable
angle::Result flushToPrimary(ContextVk *contextVk, PrimaryCommandBuffer *primary);
void executeBarriers(PrimaryCommandBuffer *primary);
void executeBarriers(ContextVk *contextVk, PrimaryCommandBuffer *primary);
void setHasRenderPass(bool hasRenderPass) { mIsRenderPassCommandBuffer = hasRenderPass; }
void reset();
......@@ -1010,7 +1010,6 @@ class CommandBufferHelper : angle::NonCopyable
bool mRebindTransformFeedbackBuffers;
bool mIsRenderPassCommandBuffer;
bool mMergeBarriers;
ResourceAccess mDepthStartAccess;
ResourceAccess mStencilStartAccess;
......
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