chromium/third_party/vulkan-validation-layers/src/layers/sync/sync_op.h

/*
 * Copyright (c) 2019-2024 Valve Corporation
 * Copyright (c) 2019-2024 LunarG, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#pragma once

#include "sync/sync_access_context.h"
#include <vulkan/utility/vk_safe_struct.hpp>

class CommandBufferAccessContext;
class CommandExecutionContext;
class RenderPassAccessContext;
class ReplayState;

namespace vvl {
class ImageView;
class RenderPass;
class CommandBuffer;
}  // namespace vvl

SyncMemoryBarrier;

struct SyncEventState {};

class SyncEventsContext {};

struct SyncBufferMemoryBarrier {};

struct SyncImageMemoryBarrier {};

class SyncOpBase {};

class SyncOpBarriers : public SyncOpBase {};

class SyncOpPipelineBarrier : public SyncOpBarriers {};

class SyncOpWaitEvents : public SyncOpBarriers {};

class SyncOpResetEvent : public SyncOpBase {};

class SyncOpSetEvent : public SyncOpBase {};

class SyncOpBeginRenderPass : public SyncOpBase {};

class SyncOpNextSubpass : public SyncOpBase {};

class SyncOpEndRenderPass : public SyncOpBase {};
// The barrier operation for pipeline and subpass dependencies`
struct PipelineBarrierOp {};

// Batch barrier ops don't modify in place, and thus don't need to hold pending state, and also are *never* layout transitions.
struct BatchBarrierOp : public PipelineBarrierOp {};

// The barrier operation for wait events
struct WaitEventBarrierOp {};

// Allow keep track of the exec contexts replay state
class ReplayState {};