pretty straightforward, as i divide down and come up with the mip map width and heights, i arrive at a width that is not an integer multiple of the tile size, and i get a segfault.
From the spec:
When the mipmap chain reaches a level that is not an integer
multiple of the virtual page size in any dimension, padding and memory
layout considerations may make it impossible to treat that level and
subsequent smaller ones as partially populated. The set of levels that
can be partially populated is implementation-dependent. The total number
of levels that may be partially populated may be queried by calling
GetTexParameteriv with the <pname> NUM_SPARSE_LEVELS_ARB.
when i query that number, i get 1000.
here is my storage code
glTexStorage3D(GL_TEXTURE_2D_ARRAY,levels,internalformat,physicalWidth,physicalHeight,slices);
here is my commit call:
int levelWidth = physicalWidth;
int levelHeight = physicalHeight;
for (int level = 0; level < numLevels; ++level) {
glTexturePageCommitmentEXT(mTexId, level, 0, 0, slice, levelWidth, levelHeight, 1, commit);
levelWidth = glm::max(levelWidth / 2, 1);
levelHeight = glm::max(levelHeight / 2, 1);
}