-
-
Couldn't load subscription status.
- Fork 118
Description
First off, thanks a lot for this great library, I use it for image processing and could not do without it.
Now to my issue: My input buffer was becoming too big (>4gb) for Vulkan so I tried switching to passing multiple smaller input buffers instead.
The code before the adaption worked without issues, with the adapted code I'm now getting a VKFFT_ERROR_FAILED_SHADER_PARSE (4014) error and I don't quite understand if this is a bug or if there is some misconfiguration on my end.
The error in the shader seems to be caused by the use of 'outputBlocks' which has not been defined (full shader output below).
Also the error seems to occur only when the size of the individual buffers crosses a certain size (the error occured in a scenario where each buffer was about 250mb, in another scenario where each buffer was just roughly 64mb the parse error did not occur).
I have inserted the relevant code below. If you have any hint or feedback at what might go wrong that would be greatly appreciated.
In my code the app is initialized as follows:
VkFence dftFence;
CALL_VK(vkCreateFence, mDevice, &fenceCreateInfo, nullptr, &dftFence);
mDftFence = dftFence;
VkBuffer dftBuffers[] = {
mFftTempBuffers[0]->getBufferHandle(),
mFftTempBuffers[1]->getBufferHandle()
};
uint64_t dftBufferSizes[] = {
mFftTempBuffers[0]->getSize(),
mFftTempBuffers[1]->getSize()
};
VkFFTConfiguration configuration = {};
configuration.FFTdim = 2;
configuration.size[0] = mContext->getRenderWidth();
configuration.size[1] = mContext->getRenderHeight();
configuration.device = &mDevice;
configuration.queue = &mQueue;
configuration.commandPool = &mCommandPool;
configuration.fence = &mDftFence;
configuration.physicalDevice = &mPhysicalDevice;
configuration.bufferNum = 2;
configuration.buffer = dftBuffers;
configuration.bufferSize = dftBufferSizes;
result = initializeVkFFT(&mVkFFTDftApplication, configuration);
if (result != VKFFT_SUCCESS)
{
LOGE("initializeVkFFT (fft) failed with errorCode=%u", result)
return false;
}
In my code the append looks like this:
VkCommandBuffer commandBuffer = mCommandBuffer->handle();
VkFFTLaunchParams launchParams = {};
launchParams.commandBuffer = &commandBuffer;
{
TimeElapsedLogger timeElapsedLogger("process - VkFFTAppend");
VkFFTResult result = VkFFTAppend(&mVkFFTDftApplication, inverse, &launchParams);
if (result != VKFFT_SUCCESS)
{
LOGE("VkFFTAppend failed with errorCode=%u", result)
}
}
Full shader error output:
#version 450
layout (local_size_x = 16, local_size_y = 16, local_size_z = 1) in;
layout(std430, binding = 0) buffer DataIn{
vec2 inputs[67108864];
};
layout(std430, binding = 1) buffer DataOut{
vec2 outputs[33554432];
};
shared vec2 sdata[2048];
void main() {
vec2 temp_0;
temp_0.x = 0.0f;
temp_0.y = 0.0f;
vec2 temp_1;
temp_1.x = 0.0f;
temp_1.y = 0.0f;
vec2 temp_2;
temp_2.x = 0.0f;
temp_2.y = 0.0f;
vec2 temp_3;
temp_3.x = 0.0f;
temp_3.y = 0.0f;
vec2 temp_4;
temp_4.x = 0.0f;
temp_4.y = 0.0f;
vec2 temp_5;
temp_5.x = 0.0f;
temp_5.y = 0.0f;
vec2 temp_6;
temp_6.x = 0.0f;
temp_6.y = 0.0f;
vec2 temp_7;
temp_7.x = 0.0f;
temp_7.y = 0.0f;
vec2 w;
w.x = 0.0f;
w.y = 0.0f;
vec2 loc_0;
loc_0.x = 0.0f;
loc_0.y = 0.0f;
uint tempInt;
tempInt = 0;
uint tempInt2;
tempInt2 = 0;
uint shiftX;
shiftX = 0;
uint shiftY;
shiftY = 0;
uint shiftZ;
shiftZ = 0;
vec2 iw;
iw.x = 0.0f;
iw.y = 0.0f;
uint stageInvocationID;
stageInvocationID = 0;
uint blockInvocationID;
blockInvocationID = 0;
uint sdataID;
sdataID = 0;
uint combinedID;
combinedID = 0;
uint inoutID;
inoutID = 0;
uint inoutID_x;
inoutID_x = 0;
uint inoutID_y;
inoutID_y = 0;
uint disableThreads;
disableThreads = 1;
float angle;
angle = 0.0f;
shiftX = gl_GlobalInvocationID.x;
shiftZ = 0;
shiftZ = shiftZ + 0;
inoutID_x = shiftX % 8192;
tempInt2 = shiftX / 8192;
tempInt2 = tempInt2 % 1;
tempInt = shiftX / 8192;
tempInt = tempInt * 128;
tempInt2 = tempInt2 + tempInt;
if (tempInt2 < 8192) {
inoutID_y = gl_LocalInvocationID.y * 1;
inoutID_y = inoutID_y + tempInt2;
inoutID = inoutID_x;
tempInt = inoutID_y * 8192;
inoutID = inoutID + tempInt;
inoutID = inoutID + shiftZ;
temp_0 = inputs[inoutID];
inoutID = inoutID + 131072;
temp_1 = inputs[inoutID];
inoutID = inoutID + 131072;
temp_2 = inputs[inoutID];
inoutID = inoutID + 131072;
temp_3 = inputs[inoutID];
inoutID = inoutID + 131072;
temp_4 = inputs[inoutID];
inoutID = inoutID + 131072;
temp_5 = inputs[inoutID];
inoutID = inoutID + 131072;
temp_6 = inputs[inoutID];
inoutID = inoutID + 131072;
temp_7 = inputs[inoutID];
}
stageInvocationID = gl_LocalInvocationID.y + 0;
stageInvocationID = stageInvocationID % 1;
angle = stageInvocationID * 3.14159265358979312e+00f;
w.x = 1.00000000000000000e+00f;
w.y = 0.00000000000000000e+00f;
loc_0.x = temp_4.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_4.x, w.x, loc_0.x);
loc_0.y = temp_4.y * w.x;
loc_0.y = fma(temp_4.x, w.y, loc_0.y);
temp_4.x = temp_0.x - loc_0.x;
temp_4.y = temp_0.y - loc_0.y;
temp_0.x = temp_0.x + loc_0.x;
temp_0.y = temp_0.y + loc_0.y;
loc_0.x = temp_5.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_5.x, w.x, loc_0.x);
loc_0.y = temp_5.y * w.x;
loc_0.y = fma(temp_5.x, w.y, loc_0.y);
temp_5.x = temp_1.x - loc_0.x;
temp_5.y = temp_1.y - loc_0.y;
temp_1.x = temp_1.x + loc_0.x;
temp_1.y = temp_1.y + loc_0.y;
loc_0.x = temp_6.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_6.x, w.x, loc_0.x);
loc_0.y = temp_6.y * w.x;
loc_0.y = fma(temp_6.x, w.y, loc_0.y);
temp_6.x = temp_2.x - loc_0.x;
temp_6.y = temp_2.y - loc_0.y;
temp_2.x = temp_2.x + loc_0.x;
temp_2.y = temp_2.y + loc_0.y;
loc_0.x = temp_7.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_7.x, w.x, loc_0.x);
loc_0.y = temp_7.y * w.x;
loc_0.y = fma(temp_7.x, w.y, loc_0.y);
temp_7.x = temp_3.x - loc_0.x;
temp_7.y = temp_3.y - loc_0.y;
temp_3.x = temp_3.x + loc_0.x;
temp_3.y = temp_3.y + loc_0.y;
w.x = 1.00000000000000000e+00f;
w.y = 0.00000000000000000e+00f;
loc_0.x = temp_2.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_2.x, w.x, loc_0.x);
loc_0.y = temp_2.y * w.x;
loc_0.y = fma(temp_2.x, w.y, loc_0.y);
temp_2.x = temp_0.x - loc_0.x;
temp_2.y = temp_0.y - loc_0.y;
temp_0.x = temp_0.x + loc_0.x;
temp_0.y = temp_0.y + loc_0.y;
loc_0.x = temp_3.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_3.x, w.x, loc_0.x);
loc_0.y = temp_3.y * w.x;
loc_0.y = fma(temp_3.x, w.y, loc_0.y);
temp_3.x = temp_1.x - loc_0.x;
temp_3.y = temp_1.y - loc_0.y;
temp_1.x = temp_1.x + loc_0.x;
temp_1.y = temp_1.y + loc_0.y;
iw.x = -w.y;
iw.y = w.x;
loc_0.x = temp_6.y * iw.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_6.x, iw.x, loc_0.x);
loc_0.y = temp_6.y * iw.x;
loc_0.y = fma(temp_6.x, iw.y, loc_0.y);
temp_6.x = temp_4.x - loc_0.x;
temp_6.y = temp_4.y - loc_0.y;
temp_4.x = temp_4.x + loc_0.x;
temp_4.y = temp_4.y + loc_0.y;
loc_0.x = temp_7.y * iw.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_7.x, iw.x, loc_0.x);
loc_0.y = temp_7.y * iw.x;
loc_0.y = fma(temp_7.x, iw.y, loc_0.y);
temp_7.x = temp_5.x - loc_0.x;
temp_7.y = temp_5.y - loc_0.y;
temp_5.x = temp_5.x + loc_0.x;
temp_5.y = temp_5.y + loc_0.y;
w.x = 1.00000000000000000e+00f;
w.y = 0.00000000000000000e+00f;
loc_0.x = temp_1.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_1.x, w.x, loc_0.x);
loc_0.y = temp_1.y * w.x;
loc_0.y = fma(temp_1.x, w.y, loc_0.y);
temp_1.x = temp_0.x - loc_0.x;
temp_1.y = temp_0.y - loc_0.y;
temp_0.x = temp_0.x + loc_0.x;
temp_0.y = temp_0.y + loc_0.y;
iw.x = -w.y;
iw.y = w.x;
loc_0.x = temp_3.y * iw.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_3.x, iw.x, loc_0.x);
loc_0.y = temp_3.y * iw.x;
loc_0.y = fma(temp_3.x, iw.y, loc_0.y);
temp_3.x = temp_2.x - loc_0.x;
temp_3.y = temp_2.y - loc_0.y;
temp_2.x = temp_2.x + loc_0.x;
temp_2.y = temp_2.y + loc_0.y;
iw.x = w.y * 7.07106781186547573e-01f;
iw.x = -iw.x;
iw.x = fma(w.x, 7.07106781186547573e-01f, iw.x);
iw.y = w.y * 7.07106781186547573e-01f;
iw.y = fma(w.x, 7.07106781186547573e-01f, iw.y);
loc_0.x = temp_5.y * iw.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_5.x, iw.x, loc_0.x);
loc_0.y = temp_5.y * iw.x;
loc_0.y = fma(temp_5.x, iw.y, loc_0.y);
temp_5.x = temp_4.x - loc_0.x;
temp_5.y = temp_4.y - loc_0.y;
temp_4.x = temp_4.x + loc_0.x;
temp_4.y = temp_4.y + loc_0.y;
w.x = -iw.y;
w.y = iw.x;
loc_0.x = temp_7.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_7.x, w.x, loc_0.x);
loc_0.y = temp_7.y * w.x;
loc_0.y = fma(temp_7.x, w.y, loc_0.y);
temp_7.x = temp_6.x - loc_0.x;
temp_7.y = temp_6.y - loc_0.y;
temp_6.x = temp_6.x + loc_0.x;
temp_6.y = temp_6.y + loc_0.y;
barrier();
stageInvocationID = gl_LocalInvocationID.y + 0;
blockInvocationID = stageInvocationID;
stageInvocationID = stageInvocationID % 1;
blockInvocationID = blockInvocationID - stageInvocationID;
inoutID = blockInvocationID * 8;
inoutID = inoutID + stageInvocationID;
sdataID = inoutID + 0;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
sdata[sdataID] = temp_0;
sdataID = inoutID + 1;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
sdata[sdataID] = temp_4;
sdataID = inoutID + 2;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
sdata[sdataID] = temp_2;
sdataID = inoutID + 3;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
sdata[sdataID] = temp_6;
sdataID = inoutID + 4;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
sdata[sdataID] = temp_1;
sdataID = inoutID + 5;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
sdata[sdataID] = temp_5;
sdataID = inoutID + 6;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
sdata[sdataID] = temp_3;
sdataID = inoutID + 7;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
sdata[sdataID] = temp_7;
barrier();
stageInvocationID = gl_LocalInvocationID.y + 0;
stageInvocationID = stageInvocationID % 8;
angle = stageInvocationID * 3.92699081698724139e-01f;
sdataID = gl_LocalInvocationID.y + 0;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
temp_0 = sdata[sdataID];
sdataID = gl_LocalInvocationID.y + 16;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
temp_4 = sdata[sdataID];
sdataID = gl_LocalInvocationID.y + 32;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
temp_2 = sdata[sdataID];
sdataID = gl_LocalInvocationID.y + 48;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
temp_6 = sdata[sdataID];
sdataID = gl_LocalInvocationID.y + 64;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
temp_1 = sdata[sdataID];
sdataID = gl_LocalInvocationID.y + 80;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
temp_5 = sdata[sdataID];
sdataID = gl_LocalInvocationID.y + 96;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
temp_3 = sdata[sdataID];
sdataID = gl_LocalInvocationID.y + 112;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
temp_7 = sdata[sdataID];
w.x = cos(angle);
w.y = sin(angle);
loc_0.x = temp_1.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_1.x, w.x, loc_0.x);
loc_0.y = temp_1.y * w.x;
loc_0.y = fma(temp_1.x, w.y, loc_0.y);
temp_1.x = temp_0.x - loc_0.x;
temp_1.y = temp_0.y - loc_0.y;
temp_0.x = temp_0.x + loc_0.x;
temp_0.y = temp_0.y + loc_0.y;
loc_0.x = temp_5.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_5.x, w.x, loc_0.x);
loc_0.y = temp_5.y * w.x;
loc_0.y = fma(temp_5.x, w.y, loc_0.y);
temp_5.x = temp_4.x - loc_0.x;
temp_5.y = temp_4.y - loc_0.y;
temp_4.x = temp_4.x + loc_0.x;
temp_4.y = temp_4.y + loc_0.y;
loc_0.x = temp_3.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_3.x, w.x, loc_0.x);
loc_0.y = temp_3.y * w.x;
loc_0.y = fma(temp_3.x, w.y, loc_0.y);
temp_3.x = temp_2.x - loc_0.x;
temp_3.y = temp_2.y - loc_0.y;
temp_2.x = temp_2.x + loc_0.x;
temp_2.y = temp_2.y + loc_0.y;
loc_0.x = temp_7.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_7.x, w.x, loc_0.x);
loc_0.y = temp_7.y * w.x;
loc_0.y = fma(temp_7.x, w.y, loc_0.y);
temp_7.x = temp_6.x - loc_0.x;
temp_7.y = temp_6.y - loc_0.y;
temp_6.x = temp_6.x + loc_0.x;
temp_6.y = temp_6.y + loc_0.y;
loc_0.x = angle * 5.00000000000000000e-01f;
w.x = cos(loc_0.x);
w.y = sin(loc_0.x);
loc_0.x = temp_2.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_2.x, w.x, loc_0.x);
loc_0.y = temp_2.y * w.x;
loc_0.y = fma(temp_2.x, w.y, loc_0.y);
temp_2.x = temp_0.x - loc_0.x;
temp_2.y = temp_0.y - loc_0.y;
temp_0.x = temp_0.x + loc_0.x;
temp_0.y = temp_0.y + loc_0.y;
loc_0.x = temp_6.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_6.x, w.x, loc_0.x);
loc_0.y = temp_6.y * w.x;
loc_0.y = fma(temp_6.x, w.y, loc_0.y);
temp_6.x = temp_4.x - loc_0.x;
temp_6.y = temp_4.y - loc_0.y;
temp_4.x = temp_4.x + loc_0.x;
temp_4.y = temp_4.y + loc_0.y;
iw.x = -w.y;
iw.y = w.x;
loc_0.x = temp_3.y * iw.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_3.x, iw.x, loc_0.x);
loc_0.y = temp_3.y * iw.x;
loc_0.y = fma(temp_3.x, iw.y, loc_0.y);
temp_3.x = temp_1.x - loc_0.x;
temp_3.y = temp_1.y - loc_0.y;
temp_1.x = temp_1.x + loc_0.x;
temp_1.y = temp_1.y + loc_0.y;
loc_0.x = temp_7.y * iw.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_7.x, iw.x, loc_0.x);
loc_0.y = temp_7.y * iw.x;
loc_0.y = fma(temp_7.x, iw.y, loc_0.y);
temp_7.x = temp_5.x - loc_0.x;
temp_7.y = temp_5.y - loc_0.y;
temp_5.x = temp_5.x + loc_0.x;
temp_5.y = temp_5.y + loc_0.y;
loc_0.x = angle * 2.50000000000000000e-01f;
w.x = cos(loc_0.x);
w.y = sin(loc_0.x);
loc_0.x = temp_4.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_4.x, w.x, loc_0.x);
loc_0.y = temp_4.y * w.x;
loc_0.y = fma(temp_4.x, w.y, loc_0.y);
temp_4.x = temp_0.x - loc_0.x;
temp_4.y = temp_0.y - loc_0.y;
temp_0.x = temp_0.x + loc_0.x;
temp_0.y = temp_0.y + loc_0.y;
iw.x = -w.y;
iw.y = w.x;
loc_0.x = temp_6.y * iw.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_6.x, iw.x, loc_0.x);
loc_0.y = temp_6.y * iw.x;
loc_0.y = fma(temp_6.x, iw.y, loc_0.y);
temp_6.x = temp_2.x - loc_0.x;
temp_6.y = temp_2.y - loc_0.y;
temp_2.x = temp_2.x + loc_0.x;
temp_2.y = temp_2.y + loc_0.y;
iw.x = w.y * 7.07106781186547573e-01f;
iw.x = -iw.x;
iw.x = fma(w.x, 7.07106781186547573e-01f, iw.x);
iw.y = w.y * 7.07106781186547573e-01f;
iw.y = fma(w.x, 7.07106781186547573e-01f, iw.y);
loc_0.x = temp_5.y * iw.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_5.x, iw.x, loc_0.x);
loc_0.y = temp_5.y * iw.x;
loc_0.y = fma(temp_5.x, iw.y, loc_0.y);
temp_5.x = temp_1.x - loc_0.x;
temp_5.y = temp_1.y - loc_0.y;
temp_1.x = temp_1.x + loc_0.x;
temp_1.y = temp_1.y + loc_0.y;
w.x = -iw.y;
w.y = iw.x;
loc_0.x = temp_7.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_7.x, w.x, loc_0.x);
loc_0.y = temp_7.y * w.x;
loc_0.y = fma(temp_7.x, w.y, loc_0.y);
temp_7.x = temp_3.x - loc_0.x;
temp_7.y = temp_3.y - loc_0.y;
temp_3.x = temp_3.x + loc_0.x;
temp_3.y = temp_3.y + loc_0.y;
barrier();
stageInvocationID = gl_LocalInvocationID.y + 0;
blockInvocationID = stageInvocationID;
stageInvocationID = stageInvocationID % 8;
blockInvocationID = blockInvocationID - stageInvocationID;
inoutID = blockInvocationID * 8;
inoutID = inoutID + stageInvocationID;
sdataID = inoutID + 0;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
sdata[sdataID] = temp_0;
sdataID = inoutID + 8;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
sdata[sdataID] = temp_1;
sdataID = inoutID + 16;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
sdata[sdataID] = temp_2;
sdataID = inoutID + 24;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
sdata[sdataID] = temp_3;
sdataID = inoutID + 32;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
sdata[sdataID] = temp_4;
sdataID = inoutID + 40;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
sdata[sdataID] = temp_5;
sdataID = inoutID + 48;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
sdata[sdataID] = temp_6;
sdataID = inoutID + 56;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
sdata[sdataID] = temp_7;
barrier();
stageInvocationID = gl_LocalInvocationID.y + 0;
stageInvocationID = stageInvocationID % 64;
angle = stageInvocationID * 4.90873852123405174e-02f;
sdataID = gl_LocalInvocationID.y + 0;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
temp_0 = sdata[sdataID];
sdataID = gl_LocalInvocationID.y + 64;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
temp_4 = sdata[sdataID];
w.x = cos(angle);
w.y = sin(angle);
loc_0.x = temp_4.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_4.x, w.x, loc_0.x);
loc_0.y = temp_4.y * w.x;
loc_0.y = fma(temp_4.x, w.y, loc_0.y);
temp_4.x = temp_0.x - loc_0.x;
temp_4.y = temp_0.y - loc_0.y;
temp_0.x = temp_0.x + loc_0.x;
temp_0.y = temp_0.y + loc_0.y;
stageInvocationID = gl_LocalInvocationID.y + 16;
stageInvocationID = stageInvocationID % 64;
angle = stageInvocationID * 4.90873852123405174e-02f;
sdataID = gl_LocalInvocationID.y + 16;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
temp_1 = sdata[sdataID];
sdataID = gl_LocalInvocationID.y + 80;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
temp_5 = sdata[sdataID];
w.x = cos(angle);
w.y = sin(angle);
loc_0.x = temp_5.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_5.x, w.x, loc_0.x);
loc_0.y = temp_5.y * w.x;
loc_0.y = fma(temp_5.x, w.y, loc_0.y);
temp_5.x = temp_1.x - loc_0.x;
temp_5.y = temp_1.y - loc_0.y;
temp_1.x = temp_1.x + loc_0.x;
temp_1.y = temp_1.y + loc_0.y;
stageInvocationID = gl_LocalInvocationID.y + 32;
stageInvocationID = stageInvocationID % 64;
angle = stageInvocationID * 4.90873852123405174e-02f;
sdataID = gl_LocalInvocationID.y + 32;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
temp_2 = sdata[sdataID];
sdataID = gl_LocalInvocationID.y + 96;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
temp_6 = sdata[sdataID];
w.x = cos(angle);
w.y = sin(angle);
loc_0.x = temp_6.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_6.x, w.x, loc_0.x);
loc_0.y = temp_6.y * w.x;
loc_0.y = fma(temp_6.x, w.y, loc_0.y);
temp_6.x = temp_2.x - loc_0.x;
temp_6.y = temp_2.y - loc_0.y;
temp_2.x = temp_2.x + loc_0.x;
temp_2.y = temp_2.y + loc_0.y;
stageInvocationID = gl_LocalInvocationID.y + 48;
stageInvocationID = stageInvocationID % 64;
angle = stageInvocationID * 4.90873852123405174e-02f;
sdataID = gl_LocalInvocationID.y + 48;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
temp_3 = sdata[sdataID];
sdataID = gl_LocalInvocationID.y + 112;
sdataID = sdataID * 16;
sdataID = sdataID + gl_LocalInvocationID.x;
temp_7 = sdata[sdataID];
w.x = cos(angle);
w.y = sin(angle);
loc_0.x = temp_7.y * w.y;
loc_0.x = -loc_0.x;
loc_0.x = fma(temp_7.x, w.x, loc_0.x);
loc_0.y = temp_7.y * w.x;
loc_0.y = fma(temp_7.x, w.y, loc_0.y);
temp_7.x = temp_3.x - loc_0.x;
temp_7.y = temp_3.y - loc_0.y;
temp_3.x = temp_3.x + loc_0.x;
temp_3.y = temp_3.y + loc_0.y;
inoutID = shiftX / 8192;
tempInt2 = inoutID % 1;
tempInt2 = tempInt2 * 64;
tempInt = shiftX / 8192;
tempInt2 = tempInt2 + tempInt;
tempInt = inoutID % 1;
inoutID = shiftX / 8192;
inoutID = inoutID * 128;
tempInt = tempInt + inoutID;
if (tempInt < 8192) {
inoutID_y = gl_LocalInvocationID.y * 64;
inoutID_y = inoutID_y + tempInt2;
inoutID = inoutID_x;
tempInt = inoutID_y * 8192;
inoutID = inoutID + tempInt;
inoutID = inoutID + shiftZ;
outputBlocks[inoutID / 33554432].outputs[inoutID % 33554432] = temp_0;
inoutID = inoutID + 8388608;
outputBlocks[inoutID / 33554432].outputs[inoutID % 33554432] = temp_1;
inoutID = inoutID + 8388608;
outputBlocks[inoutID / 33554432].outputs[inoutID % 33554432] = temp_2;
inoutID = inoutID + 8388608;
outputBlocks[inoutID / 33554432].outputs[inoutID % 33554432] = temp_3;
inoutID = inoutID + 8388608;
outputBlocks[inoutID / 33554432].outputs[inoutID % 33554432] = temp_4;
inoutID = inoutID + 8388608;
outputBlocks[inoutID / 33554432].outputs[inoutID % 33554432] = temp_5;
inoutID = inoutID + 8388608;
outputBlocks[inoutID / 33554432].outputs[inoutID % 33554432] = temp_6;
inoutID = inoutID + 8388608;
outputBlocks[inoutID / 33554432].outputs[inoutID % 33554432] = temp_7;
}
}
ERROR: 0:586: 'outputBlocks' : undeclared identifier
ERROR: 0:586: 'outputBlocks' : left of '[' is not of type array, matrix, or vector
ERROR: 0:586: '' : compilation terminated
ERROR: 3 compilation errors. No code generated.