So I’m not sure what I’m doing wrong… I’m even attempting to use clSetKernelArgSize.
clDevice.noiseParams = new NoiseParams(NoiseQuality.QUALITY_BEST);
scaleParams = new ScaleParams(5.0f, 0.05f);
ridgedMultiParams = new RidgedMultiParams(1.0f, 2.0f, 1.0f, 2.0f, 6, 234);
int argnum = 0;
clDevice.GetKernel(KERNEL_NAME).setArg(argnum++, clDevice.GetBuffer("Input"));
clDevice.GetKernel(KERNEL_NAME).setArg(argnum++, clDevice.GetBuffer("Output"));
clDevice.GetKernel(KERNEL_NAME).setArg(argnum++, clDevice.GetBuffer("ColorOutput"));
CL10.clSetKernelArg(clDevice.GetKernel(KERNEL_NAME), argnum, clDevice.noiseParams.Size);<-- Error Here (CL_INVALID_ARG_VALUE)
CL10.clSetKernelArg(clDevice.GetKernel(KERNEL_NAME), argnum++, clDevice.noiseParams.Buffer);<-- Error here if above line is commented (CL_INVALID_ARG_SIZE)
CL10.clSetKernelArg(clDevice.GetKernel(KERNEL_NAME), argnum, scaleParams.Size);
CL10.clSetKernelArg(clDevice.GetKernel(KERNEL_NAME), argnum++, scaleParams.Buffer);
CL10.clSetKernelArg(clDevice.GetKernel(KERNEL_NAME), argnum, ridgedMultiParams.Size);
CL10.clSetKernelArg(clDevice.GetKernel(KERNEL_NAME), argnum++, ridgedMultiParams.Buffer);
clDevice.GetKernel(KERNEL_NAME).setArg(argnum, clDevice.GetBuffer("randomVectors"));
package libnoiseforjava.opencl;
import java.nio.ByteBuffer;
import libnoiseforjava.Interp;
import libnoiseforjava.NoiseGen;
import libnoiseforjava.NoiseGen.NoiseQuality;
import org.lwjgl.BufferUtils;
public class NoiseParams {
public final long Size = clSize.clInt4 + clSize.clInt + clSize.clInt;
public final ByteBuffer Buffer = BufferUtils.createByteBuffer((int)Size);
public NoiseParams(NoiseQuality noiseQuality)
{
Buffer.putInt(NoiseGen.X_NOISE_GEN).putInt(NoiseGen.Y_NOISE_GEN).putInt(NoiseGen.Z_NOISE_GEN).putInt(NoiseGen.SEED_NOISE_GEN);
Buffer.putInt(NoiseGen.SHIFT_NOISE_GEN);
switch (noiseQuality)
{
case QUALITY_FAST:
Buffer.putInt(0);
break;
case QUALITY_STD:
Buffer.putInt(1);
break;
case QUALITY_BEST:
Buffer.putInt(2);
break;
}
Buffer.flip();
}
}
typedef struct
{
float4 vScale;
float nScale;
//float cScale;
} ScaleParams;
typedef struct
{
int4 NOISE_GEN;
int SHIFT_NOISE;
int NOISE_QUALITY;
} NoiseParams;
typedef struct
{
float frequency;
float lacunarity;
float persistance;
int octaveCount;
int seed;
} PerlinParams;
typedef struct
{
float frequency;
float lacunarity;
float offset;
float gain;
int octaveCount;
int seed;
} RidgedMultiParams;
__kernel void Scale(__constant float4* input, __global float4* output, __global float4* colors, const NoiseParams noiseParams, const ScaleParams scale, const RidgedMultiParams rmParams, __constant float4* randomVectors)
...
Edited a couple times for clarity.