fsr-sys 0.1.11

Raw FidelityFX Super Resolution 2 bindings for rust.
Documentation
/* automatically generated by rust-bindgen 0.68.1 */

extern "C" {
    #[doc = " Query how much memory is required for the Vulkan backend's scratch buffer.\n\n @returns\n The size (in bytes) of the required scratch memory buffer for the VK backend."]
    #[link_name = "ffxFsr2GetScratchMemorySizeVK"]
    pub fn GetScratchMemorySizeVK(
        physicalDevice: VkPhysicalDevice,
        enumerateDeviceExtensionProperties: PFN_vkEnumerateDeviceExtensionProperties,
    ) -> usize;
}
extern "C" {
    #[doc = " Populate an interface with pointers for the VK backend.\n\n @param [out] fsr2Interface              A pointer to a <c><i>FfxFsr2Interface</i></c> structure to populate with pointers.\n @param [in] device                      A Vulkan device.\n @param [in] scratchBuffer               A pointer to a buffer of memory which can be used by the DirectX(R)12 backend.\n @param [in] scratchBufferSize           The size (in bytes) of the buffer pointed to by <c><i>scratchBuffer</i></c>.\n @param [in] instance                    A Vulkan instance. Provide a nullptr if you don't need to load function pointers from the instance directly.\n @param [in] physicalDevice              The Vulkan physical device that FSR 2.0 will be executed on.\n @param [in] getInstanceProcAddr         A function pointer to vkGetInstanceProcAddr which is used to obtain all the Vulkan instance functions.\n @param [in] getDeviceProcAddr           A function pointer to vkGetDeviceProcAddr which is used to obtain all the Vulkan device functions.\n\n @retval\n FFX_OK                                  The operation completed successfully.\n @retval\n FFX_ERROR_CODE_INVALID_POINTER          The <c><i>interface</i></c> pointer was <c><i>NULL</i></c>.\n\n @ingroup FSR2 VK"]
    #[link_name = "ffxFsr2GetInterfaceVK"]
    pub fn GetInterfaceVK(
        outInterface: *mut Interface,
        scratchBuffer: *mut ::std::os::raw::c_void,
        scratchBufferSize: usize,
        instance: VkInstance,
        physicalDevice: VkPhysicalDevice,
        getInstanceProcAddr: PFN_vkGetInstanceProcAddr,
        getDeviceProcAddr: PFN_vkGetDeviceProcAddr,
    ) -> ErrorCode;
}
extern "C" {
    #[doc = " Create a <c><i>FfxFsr2Device</i></c> from a <c><i>VkDevice</i></c>.\n\n @param [in] device                      A pointer to the Vulkan logical device.\n\n @returns\n An abstract FidelityFX device.\n\n @ingroup FSR2 VK"]
    #[link_name = "ffxGetDeviceVK"]
    pub fn GetDeviceVK(device: VkDevice) -> Device;
}
extern "C" {
    #[doc = " Create a <c><i>FfxCommandList</i></c> from a <c><i>VkCommandBuffer</i></c>.\n\n @param [in] cmdBuf                      A pointer to the Vulkan command buffer.\n\n @returns\n An abstract FidelityFX command list.\n\n @ingroup FSR2 VK"]
    #[link_name = "ffxGetCommandListVK"]
    pub fn GetCommandListVK(cmdBuf: VkCommandBuffer) -> CommandList;
}
extern "C" {
    #[doc = " Create a <c><i>FfxResource</i></c> from a <c><i>VkImage</i></c>.\n\n @param [in] context                     A pointer to a <c><i>FfxFsr2Context</i></c> structure.\n @param [in] imgVk                       A Vulkan image resource.\n @param [in] imageView                   An image view of the given image resource.\n @param [in] width                       The width of the image resource.\n @param [in] height                      The height of the image resource.\n @param [in] imgFormat                   The format of the image resource.\n @param [in] name                        (optional) A name string to identify the resource in debug mode.\n @param [in] state                       The state the resource is currently in.\n\n @returns\n An abstract FidelityFX resources.\n\n @ingroup FSR2 VK"]
    #[link_name = "ffxGetTextureResourceVK"]
    pub fn GetTextureResourceVK(
        context: *mut Context,
        imgVk: VkImage,
        imageView: VkImageView,
        width: u32,
        height: u32,
        imgFormat: VkFormat,
        name: *const widechar,
        state: ResourceStates,
    ) -> Resource;
}
extern "C" {
    #[doc = " Create a <c><i>FfxResource</i></c> from a <c><i>VkBuffer</i></c>.\n\n @param [in] context                     A pointer to a <c><i>FfxFsr2Context</i></c> structure.\n @param [in] bufVk                       A Vulkan buffer resource.\n @param [in] size                        The size of the buffer resource.\n @param [in] name                        (optional) A name string to identify the resource in debug mode.\n @param [in] state                       The state the resource is currently in.\n\n @returns\n An abstract FidelityFX resources.\n\n @ingroup FSR2 VK"]
    #[link_name = "ffxGetBufferResourceVK"]
    pub fn GetBufferResourceVK(
        context: *mut Context,
        bufVk: VkBuffer,
        size: u32,
        name: *const widechar,
        state: ResourceStates,
    ) -> Resource;
}
extern "C" {
    #[doc = " Convert a <c><i>FfxResource</i></c> value to a <c><i>VkImage</i></c>.\n\n @param [in] context                     A pointer to a <c><i>FfxFsr2Context</i></c> structure.\n @param [in] resId                       A resourceID.\n\n @returns\n A <c><i>VkImage</i></c>.\n\n @ingroup FSR2 VK"]
    #[link_name = "ffxGetVkImage"]
    pub fn GetVkImage(context: *mut Context, resId: u32) -> VkImage;
}
extern "C" {
    #[doc = " Convert a <c><i>FfxResource</i></c> value to a <c><i>VkImageView</i></c>.\n\n @param [in] context                     A pointer to a <c><i>FfxFsr2Context</i></c> structure.\n @param [in] resId                       A resourceID.\n\n @returns\n A <c><i>VkImage</i></c>.\n\n @ingroup FSR2 VK"]
    #[link_name = "ffxGetVkImageView"]
    pub fn GetVkImageView(context: *mut Context, resId: u32) -> VkImageView;
}
extern "C" {
    #[doc = " Convert a <c><i>FfxResource</i></c> value to a <c><i>VkImageLayout</i></c>.\n\n @param [in] context                     A pointer to a <c><i>FfxFsr2Context</i></c> structure.\n @param [in] resId                       A resourceID.\n\n @returns\n A <c><i>VkImage</i></c>.\n\n @ingroup FSR2 VK"]
    #[link_name = "ffxGetVkImageLayout"]
    pub fn GetVkImageLayout(context: *mut Context, resId: u32) -> VkImageLayout;
}