#ifndef CARTAN_VKFFT_WRAPPER_H
#define CARTAN_VKFFT_WRAPPER_H
#define VKFFT_BACKEND 0
#include "vkFFT/vkFFT.h"
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
int cartan_vkfft_version(void);
void cartan_vkfft_delete(VkFFTApplication* app);
typedef struct CartanVkFftBacking {
uint64_t phys;
uint64_t device;
uint64_t queue;
uint64_t pool;
uint64_t fence;
uint64_t buffer;
uint64_t buffer_size;
} CartanVkFftBacking;
int cartan_vkfft_plan(
VkFFTApplication* app,
CartanVkFftBacking* backing,
uint64_t physical_device,
uint64_t device,
uint64_t queue,
uint64_t command_pool,
uint64_t fence,
uint64_t buffer,
uint64_t buffer_size_bytes,
uint32_t dim,
uint64_t size_x,
uint64_t size_y,
uint64_t size_z,
uint64_t batch
);
int cartan_vkfft_exec(
VkFFTApplication* app,
uint64_t device,
uint64_t queue,
uint64_t command_pool,
uint64_t fence,
uint64_t buffer,
int inverse
);
#ifdef __cplusplus
}
#endif
#endif