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