# About Mali GPU index buffer processing (group of 4 indices)

Hello. I have some questions about Mali GPU (After Valhall) index buffer shading.

Related Video : https://youtu.be/BD1zXW7Uz8Q?t=2838

Related Q&A :

According to Q&A and Video, I understood index buffer is processed like below
[0, 7, 15] => [0, 1, 2, 3, 4, 5, 6, 7, 12, 13, 14, 15]
for example,

a. pick 3 indices at right side of target index.
ex.) [1, 5, 7]
-> 1, 2, 3, 4
-> 5, 6, 7, 8
b. pick 3 indices at right side of target index, if count if not enough, pick at left side too.
ex.) [1, 5, 13]
-> 1, 2, 3, 4
-> 5, 6, 7, 8
-> 10, 11, 12, 13
c, pick 3 indices at left side of target index.
ex.) [1, 10, 15]
-> 1
-> 7, 8, 9, 10
-> 12, 13, 14, 15
Does ARM GPU uses one of these method when it makes group? or use other?
(Background)
I'm currently testing a LOD System using procedural draw call which is adjusting index count base on LOD Level and this is why I wanted to ask above question.
ex.)
- LOD 0 : index count 100
- LOD 1 : index count 50
- LOD 2 : index count 10
This system re-orders index buffer.
-> ex.)
original triangles : [a(1, 2, 3), b(2, 3, 4), c(3, 4, 5), d(...), e, f, g, h, i]
reorder result : [a, i, e, b, c, f, d, g, h]
=> index does not increase linearly. it jumps.

Because of the way ARM GPU shades indices, IDVS position shader invocations has increased after LOD System applied.
To prevent increasing, I wanted to add some duplicated vertices but I think i need to know the way of making index group to find optimal way to put duplicate vertices.
And I wonder if you know any libraries that can be applied to situations like this.