#pragma once

#include <Core/Common/NonNullPtr.h>
#include <Graphics/D3D12/D3D12CommandList.h>
#include <Graphics/RenderPass.h>

namespace Juliet::D3D12
{
    extern void BeginRenderPass(NonNullPtr<CommandList> commandList, NonNullPtr<const ColorTargetInfo> colorTargetInfos,
                                uint32 colorTargetInfoCount, const DepthStencilTargetInfo* depthStencilTargetInfo);
    extern void EndRenderPass(NonNullPtr<CommandList> commandList);

    extern void BindGraphicsPipeline(NonNullPtr<CommandList> commandList, NonNullPtr<GraphicsPipeline> graphicsPipeline);
    extern void DrawPrimitives(NonNullPtr<CommandList> commandList, uint32 numVertices, uint32 numInstances,
                               uint32 firstVertex, uint32 firstInstance);
    void        DrawIndexedPrimitives(NonNullPtr<CommandList> commandList, uint32 numIndices, uint32 numInstances,
                                      uint32 firstIndex, uint32 vertexOffset, uint32 firstInstance);
} // namespace Juliet::D3D12
