// <auto-generated>
// This file is generated by Ghost.NativeWrapperGen. Do not edit manually.
// </auto-generated>

namespace Ghost.Nvtt;

public unsafe partial struct NvttGPUInputBuffer : System.IDisposable
{
    /// <summary>
    /// From: <see cref="Api.nvttDestroyGPUInputBuffer(NvttGPUInputBuffer*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void Dispose()
    {
        Api.nvttDestroyGPUInputBuffer((NvttGPUInputBuffer*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.nvttGPUInputBufferNumTiles(NvttGPUInputBuffer*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public int NumTiles()
    {
        return Api.nvttGPUInputBufferNumTiles((NvttGPUInputBuffer*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.nvttGPUInputBufferTileSize(NvttGPUInputBuffer*, int*, int*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void TileSize(int* tile_w, int* tile_h)
    {
        Api.nvttGPUInputBufferTileSize(
            (NvttGPUInputBuffer*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            tile_w,
            tile_h);
    }

    /// <summary>
    /// From: <see cref="Api.nvttGPUInputBufferType(NvttGPUInputBuffer*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttValueType Type()
    {
        return Api.nvttGPUInputBufferType((NvttGPUInputBuffer*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.nvttEncodeGPU(NvttGPUInputBuffer*, void*, NvttEncodeSettings*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttBoolean EncodeGPU(void* output, NvttEncodeSettings* settings)
    {
        return Api.nvttEncodeGPU(
            (NvttGPUInputBuffer*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            output,
            settings);
    }

    /// <summary>
    /// From: <see cref="Api.nvttEncodeBC1GPU(NvttGPUInputBuffer*, NvttBoolean, void*, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void EncodeBC1GPU(NvttBoolean fast_mode, void* output, NvttBoolean to_device_mem, NvttTimingContext* tc)
    {
        Api.nvttEncodeBC1GPU(
            (NvttGPUInputBuffer*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            fast_mode,
            output,
            to_device_mem,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttEncodeBC1AGPU(NvttGPUInputBuffer*, void*, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void EncodeBC1AGPU(void* output, NvttBoolean to_device_mem, NvttTimingContext* tc)
    {
        Api.nvttEncodeBC1AGPU(
            (NvttGPUInputBuffer*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            output,
            to_device_mem,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttEncodeBC2GPU(NvttGPUInputBuffer*, void*, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void EncodeBC2GPU(void* output, NvttBoolean to_device_mem, NvttTimingContext* tc)
    {
        Api.nvttEncodeBC2GPU(
            (NvttGPUInputBuffer*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            output,
            to_device_mem,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttEncodeBC3GPU(NvttGPUInputBuffer*, void*, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void EncodeBC3GPU(void* output, NvttBoolean to_device_mem, NvttTimingContext* tc)
    {
        Api.nvttEncodeBC3GPU(
            (NvttGPUInputBuffer*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            output,
            to_device_mem,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttEncodeBC4GPU(NvttGPUInputBuffer*, void*, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void EncodeBC4GPU(void* output, NvttBoolean to_device_mem, NvttTimingContext* tc)
    {
        Api.nvttEncodeBC4GPU(
            (NvttGPUInputBuffer*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            output,
            to_device_mem,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttEncodeBC4SGPU(NvttGPUInputBuffer*, void*, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void EncodeBC4SGPU(void* output, NvttBoolean to_device_mem, NvttTimingContext* tc)
    {
        Api.nvttEncodeBC4SGPU(
            (NvttGPUInputBuffer*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            output,
            to_device_mem,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttEncodeATI2GPU(NvttGPUInputBuffer*, void*, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void EncodeATI2GPU(void* output, NvttBoolean to_device_mem, NvttTimingContext* tc)
    {
        Api.nvttEncodeATI2GPU(
            (NvttGPUInputBuffer*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            output,
            to_device_mem,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttEncodeBC5GPU(NvttGPUInputBuffer*, void*, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void EncodeBC5GPU(void* output, NvttBoolean to_device_mem, NvttTimingContext* tc)
    {
        Api.nvttEncodeBC5GPU(
            (NvttGPUInputBuffer*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            output,
            to_device_mem,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttEncodeBC5SGPU(NvttGPUInputBuffer*, void*, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void EncodeBC5SGPU(void* output, NvttBoolean to_device_mem, NvttTimingContext* tc)
    {
        Api.nvttEncodeBC5SGPU(
            (NvttGPUInputBuffer*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            output,
            to_device_mem,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttEncodeBC6HGPU(NvttGPUInputBuffer*, NvttBoolean, void*, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void EncodeBC6HGPU(NvttBoolean is_signed, void* output, NvttBoolean to_device_mem, NvttTimingContext* tc)
    {
        Api.nvttEncodeBC6HGPU(
            (NvttGPUInputBuffer*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            is_signed,
            output,
            to_device_mem,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttEncodeBC7GPU(NvttGPUInputBuffer*, NvttBoolean, void*, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void EncodeBC7GPU(NvttBoolean imageHasAlpha, void* output, NvttBoolean to_device_mem, NvttTimingContext* tc)
    {
        Api.nvttEncodeBC7GPU(
            (NvttGPUInputBuffer*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            imageHasAlpha,
            output,
            to_device_mem,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttEncodeASTCGPU(NvttGPUInputBuffer*, int, NvttBoolean, void*, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void EncodeASTCGPU(int qualityLevel, NvttBoolean imageHasAlpha, void* output, NvttBoolean to_device_mem, NvttTimingContext* tc)
    {
        Api.nvttEncodeASTCGPU(
            (NvttGPUInputBuffer*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            qualityLevel,
            imageHasAlpha,
            output,
            to_device_mem,
            tc);
    }
}
