blob: 2092e8025307a40f0e4729809c5c5f180e1e9689 [file] [log] [blame]
//
// Copyright 2021 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// vk_command_buffer_utils:
// Helpers for secondary command buffer implementations.
//
#ifndef LIBANGLE_RENDERER_VULKAN_VK_COMMAND_BUFFER_UTILS_H_
#define LIBANGLE_RENDERER_VULKAN_VK_COMMAND_BUFFER_UTILS_H_
namespace rx
{
namespace vk
{
// A helper class to track commands recorded to a command buffer.
class CommandBufferCommandTracker
{
public:
void onDraw() { ++mRenderPassWriteCommandCount; }
void onClearAttachments() { ++mRenderPassWriteCommandCount; }
uint32_t getRenderPassWriteCommandCount() const { return mRenderPassWriteCommandCount; }
void reset() { *this = CommandBufferCommandTracker{}; }
private:
// The number of commands recorded that can modify a render pass attachment, i.e.
// vkCmdClearAttachment and vkCmdDraw*. Used to know if a command might have written to an
// attachment after it was invalidated.
uint32_t mRenderPassWriteCommandCount = 0;
};
} // namespace vk
} // namespace rx
#endif // LIBANGLE_RENDERER_VULKAN_VK_COMMAND_BUFFER_UTILS_H_