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) ...@@ -102,6 +102,8 @@ const char *GetCommandString(CommandID id)
return "InsertDebugUtilsLabel"; return "InsertDebugUtilsLabel";
case CommandID::MemoryBarrier: case CommandID::MemoryBarrier:
return "MemoryBarrier"; return "MemoryBarrier";
case CommandID::NextSubpass:
return "NextSubpass";
case CommandID::PipelineBarrier: case CommandID::PipelineBarrier:
return "PipelineBarrier"; return "PipelineBarrier";
case CommandID::PushConstants: case CommandID::PushConstants:
...@@ -483,6 +485,13 @@ void SecondaryCommandBuffer::executeCommands(VkCommandBuffer cmdBuffer) ...@@ -483,6 +485,13 @@ void SecondaryCommandBuffer::executeCommands(VkCommandBuffer cmdBuffer)
1, &params->memoryBarrier, 0, nullptr, 0, nullptr); 1, &params->memoryBarrier, 0, nullptr, 0, nullptr);
break; break;
} }
case CommandID::NextSubpass:
{
const NextSubpassParams *params =
getParamPtr<NextSubpassParams>(currentCommand);
vkCmdNextSubpass(cmdBuffer, params->subpassContents);
break;
}
case CommandID::PipelineBarrier: case CommandID::PipelineBarrier:
{ {
const PipelineBarrierParams *params = const PipelineBarrierParams *params =
......
...@@ -71,6 +71,7 @@ enum class CommandID : uint16_t ...@@ -71,6 +71,7 @@ enum class CommandID : uint16_t
ImageBarrier, ImageBarrier,
InsertDebugUtilsLabel, InsertDebugUtilsLabel,
MemoryBarrier, MemoryBarrier,
NextSubpass,
PipelineBarrier, PipelineBarrier,
PushConstants, PushConstants,
ResetEvent, ResetEvent,
...@@ -359,6 +360,12 @@ struct MemoryBarrierParams ...@@ -359,6 +360,12 @@ struct MemoryBarrierParams
}; };
VERIFY_4_BYTE_ALIGNMENT(MemoryBarrierParams) VERIFY_4_BYTE_ALIGNMENT(MemoryBarrierParams)
struct NextSubpassParams
{
VkSubpassContents subpassContents;
};
VERIFY_4_BYTE_ALIGNMENT(NextSubpassParams)
struct PipelineBarrierParams struct PipelineBarrierParams
{ {
VkPipelineStageFlags srcStageMask; VkPipelineStageFlags srcStageMask;
...@@ -600,6 +607,8 @@ class SecondaryCommandBuffer final : angle::NonCopyable ...@@ -600,6 +607,8 @@ class SecondaryCommandBuffer final : angle::NonCopyable
VkPipelineStageFlags dstStageMask, VkPipelineStageFlags dstStageMask,
const VkMemoryBarrier *memoryBarrier); const VkMemoryBarrier *memoryBarrier);
void nextSubpass(VkSubpassContents subpassContents);
void pipelineBarrier(VkPipelineStageFlags srcStageMask, void pipelineBarrier(VkPipelineStageFlags srcStageMask,
VkPipelineStageFlags dstStageMask, VkPipelineStageFlags dstStageMask,
VkDependencyFlags dependencyFlags, VkDependencyFlags dependencyFlags,
...@@ -1271,6 +1280,12 @@ ANGLE_INLINE void SecondaryCommandBuffer::memoryBarrier(VkPipelineStageFlags src ...@@ -1271,6 +1280,12 @@ ANGLE_INLINE void SecondaryCommandBuffer::memoryBarrier(VkPipelineStageFlags src
paramStruct->memoryBarrier = *memoryBarrier; paramStruct->memoryBarrier = *memoryBarrier;
} }
ANGLE_INLINE void SecondaryCommandBuffer::nextSubpass(VkSubpassContents subpassContents)
{
NextSubpassParams *paramStruct = initCommand<NextSubpassParams>(CommandID::NextSubpass);
paramStruct->subpassContents = subpassContents;
}
ANGLE_INLINE void SecondaryCommandBuffer::pipelineBarrier( ANGLE_INLINE void SecondaryCommandBuffer::pipelineBarrier(
VkPipelineStageFlags srcStageMask, VkPipelineStageFlags srcStageMask,
VkPipelineStageFlags dstStageMask, VkPipelineStageFlags dstStageMask,
......
...@@ -324,6 +324,8 @@ class CommandBuffer : public WrappedObject<CommandBuffer, VkCommandBuffer> ...@@ -324,6 +324,8 @@ class CommandBuffer : public WrappedObject<CommandBuffer, VkCommandBuffer>
VkPipelineStageFlags dstStageMask, VkPipelineStageFlags dstStageMask,
const VkMemoryBarrier *memoryBarrier); const VkMemoryBarrier *memoryBarrier);
void nextSubpass(VkSubpassContents subpassContents);
void pipelineBarrier(VkPipelineStageFlags srcStageMask, void pipelineBarrier(VkPipelineStageFlags srcStageMask,
VkPipelineStageFlags dstStageMask, VkPipelineStageFlags dstStageMask,
VkDependencyFlags dependencyFlags, VkDependencyFlags dependencyFlags,
...@@ -751,6 +753,12 @@ ANGLE_INLINE void CommandBuffer::memoryBarrier(VkPipelineStageFlags srcStageMask ...@@ -751,6 +753,12 @@ ANGLE_INLINE void CommandBuffer::memoryBarrier(VkPipelineStageFlags srcStageMask
nullptr); nullptr);
} }
ANGLE_INLINE void CommandBuffer::nextSubpass(VkSubpassContents subpassContents)
{
ASSERT(valid());
vkCmdNextSubpass(mHandle, subpassContents);
}
ANGLE_INLINE void CommandBuffer::pipelineBarrier(VkPipelineStageFlags srcStageMask, ANGLE_INLINE void CommandBuffer::pipelineBarrier(VkPipelineStageFlags srcStageMask,
VkPipelineStageFlags dstStageMask, VkPipelineStageFlags dstStageMask,
VkDependencyFlags dependencyFlags, 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