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

namespace Ghost.Nvtt;

public unsafe partial struct NvttApi
{
    /// <summary>
    /// From: <see cref="Api.nvttIsCudaSupported()" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static NvttBoolean IsCudaSupported()
    {
        return Api.nvttIsCudaSupported();
    }

    /// <summary>
    /// From: <see cref="Api.nvttUseCurrentDevice()" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void UseCurrentDevice()
    {
        Api.nvttUseCurrentDevice();
    }

    /// <summary>
    /// From: <see cref="Api.nvttErrorString(NvttError)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static sbyte* ErrorString(NvttError e)
    {
        return Api.nvttErrorString(e);
    }

    /// <summary>
    /// From: <see cref="Api.nvttVersion()" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static uint Version()
    {
        return Api.nvttVersion();
    }

    /// <summary>
    /// From: <see cref="Api.nvttSetMessageCallback(delegate* unmanaged[Cdecl]<NvttSeverity, NvttError, sbyte*, void*, void>, void*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static NvttBoolean SetMessageCallback(delegate* unmanaged[Cdecl]<NvttSeverity, NvttError, sbyte*, void*, void> callback, void* userData)
    {
        return Api.nvttSetMessageCallback(
            callback,
            userData);
    }

    /// <summary>
    /// From: <see cref="Api.nvttGetTargetExtent(int*, int*, int*, int, NvttRoundMode, NvttTextureType, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void GetTargetExtent(int* width, int* height, int* depth, int maxExtent, NvttRoundMode roundMode, NvttTextureType textureType, NvttTimingContext* tc)
    {
        Api.nvttGetTargetExtent(
            width,
            height,
            depth,
            maxExtent,
            roundMode,
            textureType,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttCountMipmaps(int, int, int, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static int CountMipmaps(int w, int h, int d, NvttTimingContext* tc)
    {
        return Api.nvttCountMipmaps(
            w,
            h,
            d,
            tc);
    }
}
