AnsweredAssumed Answered

iMX6 glLinkProgram segmentation fault

Question asked by Hartmut Behrens on Jun 6, 2017
Latest reply on Jul 11, 2017 by Bio_TICFSL

Hi,

 

In my application I use GL_RGBA32F and GL_RGBA32I textures as a mechanism to upload parameters to a shader (filter parameters are set to GL_NEAREST). The parameter values are retrieved in the shader using the GLSL snippet shown below. This mechanism has been tested and works well on many platforms, but on the iMX6 a segmentation fault is generated when glLinkProgram is called. However no GL error is reported, and the GL program info log is also empty.

 

Is anyone able to provide any insight and/or workaround for this problem ?

 

uniform sampler2D u_floatSampler;
uniform isampler2D u_integerSampler;

 

mat4 getModelMatrix(uint Index) { return mat4(texelFetch( u_floatSampler, ivec2( (Index * uint(13)) + uint(0), 0), 0),
texelFetch( u_floatSampler, ivec2( (Index * uint(13)) + uint(1), 0), 0),
texelFetch( u_floatSampler, ivec2( (Index * uint(13)) + uint(2), 0), 0),
texelFetch( u_floatSampler, ivec2( (Index * uint(13)) + uint(3), 0), 0)); }

 

mat4 getPreviousModelMatrix(uint Index) { return mat4(texelFetch( u_floatSampler, ivec2( (Index * uint(13)) + uint(4), 0), 0),
texelFetch( u_floatSampler, ivec2( (Index * uint(13)) + uint(5), 0), 0),
texelFetch( u_floatSampler, ivec2( (Index * uint(13)) + uint(6), 0), 0),
texelFetch( u_floatSampler, ivec2( (Index * uint(13)) + uint(7), 0), 0)); }

 

mat4 getInverseModelMatrix(uint Index) { return mat4(texelFetch( u_floatSampler, ivec2( (Index * uint(13)) + uint(8), 0), 0),
texelFetch( u_floatSampler, ivec2( (Index * uint(13)) + uint(9), 0), 0),
texelFetch( u_floatSampler, ivec2( (Index * uint(13)) + uint(10), 0), 0),
texelFetch( u_floatSampler, ivec2( (Index * uint(13)) + uint(11), 0), 0)); }

int getMaterialID(uint Index) { return int(texelFetch( u_integerSampler, ivec2( (Index * uint(13)) + uint(12), 0), 0).x); }
int getObjectID(uint Index) { return int(texelFetch( u_integerSampler, ivec2( (Index * uint(13)) + uint(12), 0), 0).y); }
int getSplineID(uint Index) { return int(texelFetch( u_integerSampler, ivec2( (Index * uint(13)) + uint(12), 0), 0).z); }

Outcomes