TOP_LEVEL_ARRAY_STRIDE is 0 for top level arrays


When using glGetProgramResourceiv to query this block member (GPUSkinningBlock.skinBlendMatrices[0]) for TOP_LEVEL_ARRAY_STRIDE, the Nvidia driver returns 0 where the AMD driver returns the array stride (same value as GL_ARRAY_STRIDE).

buffer GPUSkinningBlock 
    mat4 skinBlendMatrices[MAX_INSTANCES]; 
  } gpuSkinning;

For another block, both AMD and Nvidia drivers return the stride as I would expect when querying any of the two members:

struct ModelStruct
  uint modelId;
  mat4 instancingTransform;

layout(shared) buffer ModelBlock
  ModelStruct model[];

So it seems that with the Nvidia driver, GL_TOP_LEVEL_ARRAY_STRIDE returns 0 if the element queried is the top level array itself. The OpenGL specification doesn’t say anything about this special case, so I’d assume it should also return the stride in this case, it’s not completely clear, though.

Am I missing something or could this be considered a bug in the driver?