#pragma once

namespace Juliet
{
    enum class BufferUsage : uint8
    {
        None             = 0,
        IndexBuffer      = 1 << 0,
        ConstantBuffer   = 1 << 1,
        StructuredBuffer = 1 << 2,
    };

    enum class TransferBufferUsage : uint8
    {
        Download,
        Upload
    };

    struct BufferCreateInfo
    {
        size_t      Size;
        size_t      Stride;
        BufferUsage Usage;
        bool        IsDynamic;
    };

    struct TransferBufferCreateInfo
    {
        size_t              Size;
        TransferBufferUsage Usage;
    };

    // Opaque
    struct GraphicsBuffer;
    struct GraphicsTransferBuffer;
} // namespace Juliet
