Структури даних для відображення на основі плитки (відкладеного)


18

Черепичне відображення використовується в сучасних мобільних архітектурах графічного процесора для підвищення когерентності доступу до пам'яті шляхом підрозділу простору зображення на звичайну сітку з невеликих (наприклад, 32x32 пікселів) плиток. Інформації про типи структур даних, які використовуються для відстеження примітивів, пов'язаних з кожною плиткою, мало, враховуючи, що довільно багато примітивів може перекривати будь-яку плитку.

З точки зору розробника драйверів, які структури даних зазвичай використовуються для представлення примітивних наборів, що належать плитці, і такі структури динамічно розподіляються / змінюються відповідно до геометрії, що перекриває певну плитку?


3
Дійсно цікаве запитання, і хоча я підозрюю, що більшість деталей, що містять солону, є секретним соусом, це може бути хорошим стрибком для всіх, хто хоче зробити дослідження та написати резюме: blog.imgtec.com/powervr/…
Джон Калсбек

Відповіді:


11

Цей запис у блозі, який згадує Джон, - це досить вдалий початок (якщо я сам так скажу!), Але є трохи додаткової деталі, яка може бути корисною.

Для архітектури PowerVR проміжна структура даних - по-різному називається примітивним списком або буфером параметрів (PB) - яка зберігає дані за плиткою, після того, як все затінення вершин і процес плитки завершено, насправді здебільшого генерується та управляється апаратне забезпечення, а не драйвер.

Структури пам'яті PB фізично розділені на дві частини. По-перше, блоки перетворених даних вершин, включаючи атрибути вершин. Блоки стиснуті, і як ви можете собі уявити, вони здебільшого просто запаковані та стислі дані з плаваючою комою. Друга структура пам'яті - це дані плитки, що фактично є списком.

Список верхнього рівня в цій структурі даних називається регіоном, і він може кодувати набір плиток, а не одну плитку за один раз, для даного примітивного блоку. Таким чином, область - це набір розташувань екранів, плиток, а потім список стислих блоків, що містять геометрію в цьому регіоні. Регіони - це те, на що працює растеризатор, і ви можете уявити, що порожні плитки просто автоматично пропускаються, хоча в деяких випадках є вагома причина для растеризатора відвідувати порожні регіони.

Пам'ять, яку GPU використовує для PB, динамічно розподіляється у всіх сучасних реалізаціях PowerVR. Вказівник на цю пам'ять надається драйвером, і драйвер за допомогою графічного процесора розмістить її за необхідності. Цей механізм є компромісом між тим, що потрібно часто перерозподіляти та мінімізувати кількість виділеного простору PB.

Сучасні графічні процесори дуже важко намагаються мінімізувати опосередкованість пам’яті, але ходіння PB для живлення на етапі растеризації є одним із тих випадків, коли це дійсно важко і іншого вибору немає. На щастя вказівний переслідувач вказує на великі блоки, які добре кешуються і передаються в ядро.

Інші архітектури не працюють точно так само, як PowerVR, тому що частина причини PB є такою, якою вона є в нашій архітектурі, в тому, щоб допомогти повністю відкладеній концепції відтінення пікселів, яку ми реалізуємо, але загальна концепція стосується всіх інших плиток у мобільний простір, про який я знаю.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.