void planVulkanFFTAxis(VulkanFFTPlan* vulkanFFTPlan, uint32_t axis) {
VulkanFFTAxis* vulkanFFTAxis = &vulkanFFTPlan->axes[axis];
{
vulkanFFTAxis->stageCount = 31-__builtin_clz(vulkanFFTAxis->sampleCount); // Logarithm of base 2
vulkanFFTAxis->stageRadix = (uint32_t*)malloc(sizeof(uint32_t) * vulkanFFTAxis->stageCount);
uint32_t stageSize = vulkanFFTAxis->sampleCount;
vulkanFFTAxis->stageCount = 0;
while(stageSize > 1) {
uint32_t radixIndex = SUPPORTED_RADIX_LEVELS;
do {
assert(radixIndex > 0);
--radixIndex;
vulkanFFTAxis->stageRadix[vulkanFFTAxis->stageCount] = 2<<radixIndex;
} while(stageSize % vulkanFFTAxis->stageRadix[vulkanFFTAxis->stageCount] > 0);
stageSize /= vulkanFFTAxis->stageRadix[vulkanFFTAxis->stageCount];
++vulkanFFTAxis->stageCount;
}
}