Previously the uniform array flattening feature would trigger on loose
uniform arrays of any basic type (e.g, floats). This PR restricts it
to sampler and texture arrays. Other arrays would end up in their own
uniform block (anonymous or otherwise). (Atomic counter arrays might be an
exception, but those are not currently flattened).
" explicit bindings.\n"
" --amb synonym for --auto-map-bindings\n"
"\n"
- " --flatten-uniform-arrays flatten uniform array references to scalars\n"
+ " --flatten-uniform-arrays flatten uniform texture & sampler arrays to scalars\n"
" --fua synonym for --flatten-uniform-arrays\n"
);
return type.isArray() &&
intermediate.getFlattenUniformArrays() &&
- qualifier == EvqUniform;
+ qualifier == EvqUniform &&
+ // Testing the EbtSampler basic type covers samplers and textures
+ type.getBasicType() == EbtSampler;
}
void HlslParseContext::flatten(const TSourceLoc& loc, const TVariable& variable)