Commit 29b1f07f by Shahbaz Youssefi Committed by Commit Bot

Vulkan: Boilerplate for vkCmdNextSubpass

Bug: angleproject:4881 Change-Id: I5c46c07e8c7865ef2bfd8aff0d3f8b5ba3ecd750 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2399181Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarCourtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
parent cbbf9587
......@@ -102,6 +102,8 @@ const char *GetCommandString(CommandID id)
return "InsertDebugUtilsLabel";
case CommandID::MemoryBarrier:
return "MemoryBarrier";
case CommandID::NextSubpass:
return "NextSubpass";
case CommandID::PipelineBarrier:
return "PipelineBarrier";
case CommandID::PushConstants:
......@@ -483,6 +485,13 @@ void SecondaryCommandBuffer::executeCommands(VkCommandBuffer cmdBuffer)
1, &params->memoryBarrier, 0, nullptr, 0, nullptr);
break;
}
case CommandID::NextSubpass:
{
const NextSubpassParams *params =
getParamPtr<NextSubpassParams>(currentCommand);
vkCmdNextSubpass(cmdBuffer, params->subpassContents);
break;
}
case CommandID::PipelineBarrier:
{
const PipelineBarrierParams *params =
......
......@@ -71,6 +71,7 @@ enum class CommandID : uint16_t
ImageBarrier,
InsertDebugUtilsLabel,
MemoryBarrier,
NextSubpass,
PipelineBarrier,
PushConstants,
ResetEvent,
......@@ -359,6 +360,12 @@ struct MemoryBarrierParams
};
VERIFY_4_BYTE_ALIGNMENT(MemoryBarrierParams)
struct NextSubpassParams
{
VkSubpassContents subpassContents;
};
VERIFY_4_BYTE_ALIGNMENT(NextSubpassParams)
struct PipelineBarrierParams
{
VkPipelineStageFlags srcStageMask;
......@@ -600,6 +607,8 @@ class SecondaryCommandBuffer final : angle::NonCopyable
VkPipelineStageFlags dstStageMask,
const VkMemoryBarrier *memoryBarrier);
void nextSubpass(VkSubpassContents subpassContents);
void pipelineBarrier(VkPipelineStageFlags srcStageMask,
VkPipelineStageFlags dstStageMask,
VkDependencyFlags dependencyFlags,
......@@ -1271,6 +1280,12 @@ ANGLE_INLINE void SecondaryCommandBuffer::memoryBarrier(VkPipelineStageFlags src
paramStruct->memoryBarrier = *memoryBarrier;
}
ANGLE_INLINE void SecondaryCommandBuffer::nextSubpass(VkSubpassContents subpassContents)
{
NextSubpassParams *paramStruct = initCommand<NextSubpassParams>(CommandID::NextSubpass);
paramStruct->subpassContents = subpassContents;
}
ANGLE_INLINE void SecondaryCommandBuffer::pipelineBarrier(
VkPipelineStageFlags srcStageMask,
VkPipelineStageFlags dstStageMask,
......
......@@ -324,6 +324,8 @@ class CommandBuffer : public WrappedObject<CommandBuffer, VkCommandBuffer>
VkPipelineStageFlags dstStageMask,
const VkMemoryBarrier *memoryBarrier);
void nextSubpass(VkSubpassContents subpassContents);
void pipelineBarrier(VkPipelineStageFlags srcStageMask,
VkPipelineStageFlags dstStageMask,
VkDependencyFlags dependencyFlags,
......@@ -751,6 +753,12 @@ ANGLE_INLINE void CommandBuffer::memoryBarrier(VkPipelineStageFlags srcStageMask
nullptr);
}
ANGLE_INLINE void CommandBuffer::nextSubpass(VkSubpassContents subpassContents)
{
ASSERT(valid());
vkCmdNextSubpass(mHandle, subpassContents);
}
ANGLE_INLINE void CommandBuffer::pipelineBarrier(VkPipelineStageFlags srcStageMask,
VkPipelineStageFlags dstStageMask,
VkDependencyFlags dependencyFlags,
......
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