Build Cycles for iPad

Hello everyone, I’ve successfully built Cycles for the iPad, and it runs well when rendering on the CPU. However, I encounter issues when trying to render on the GPU. The problem arises in this code:

template<uint node_feature_mask, ShaderType type, typename ConstIntegratorGenericState>
ccl_device void svm_eval_nodes(KernelGlobals kg,
ConstIntegratorGenericState state,
ccl_private ShaderData *sd,
ccl_global float *render_buffer,
uint32_t path_flag)
{
float stack[SVM_STACK_SIZE];
Spectrum closure_weight;
int offset = sd->shader & SHADER_MASK;

When attempting to access or write to the stack array, I receive an error stating “Compute function exceeds available temporary registers”. I would appreciate any assistance in resolving this issue. Can anybody help to fix this problem.

3 Likes

I’ve never tried building Cycles for the iPad, and it’s not something we support. You can try experimenting yourself to try to find a solution.

For example you could try reducing the value of SVM_STACK_SIZE, or commenting out the cases for some more expensive nodes in this function (NODE_TEX_VORONOI, NODE_TEX_NOISE, …) and see if that helps.

In kernel/types.h there are also features you can try disabling to help identify where the problem is coming from.

Thanks,I’ve tried to set SVM_STACK_SIZE to 1,but it’s still not working.By disable the #define SVM,the problem is gone, but the render result image is not colors, just a gray image, shader is gone.