Bandwidth memori data vertex dapat menjadi potensi bottleneck bagi performa GPU game Anda. Ada beberapa penghitung di profil sistem AGI yang dapat membantu mendiagnosis masalah bandwidth memori vertex.
Penghitung Qualcomm Adreno
Pada perangkat dengan GPU Qualcomm Adreno, beberapa penghitung yang terkenal meliputi:
Negosiasikan | Deskripsi |
---|---|
Pembacaan Memori Vertex | Bandwidth data vertex yang dibaca dari memori eksternal. |
Rata-Rata Byte/Vertex | Ukuran rata-rata data vertex, dalam byte. |
% Kios Pengambilan Vertex | Persentase siklus jam saat GPU diblokir pada data verteks. |
Penghitung Mali ARM (WIP)
Pada perangkat dengan GPU ARM Mali, beberapa penghitung yang penting meliputi:
Negosiasikan | Deskripsi |
---|---|
Memuat/menyimpan ketukan pembacaan dari memori eksternal | Data yang dibaca dari memori eksternal oleh unit pemuatan/penyimpanan, dirata-ratakan di atas inti shader. |
Memuat/menyimpan ketukan pembacaan dari cache L2 | Data yang dibaca dari cache L2 oleh unit pemuatan/penyimpanan, dirata-ratakan dari inti shader. |
[Lainnya] |
Untuk menghitung bandwidth keseluruhan dari ketukan operasi baca rata-rata, nilai penghitung dikalikan dengan lebar bus (biasanya 16 byte) dan dengan jumlah total inti shader. [Lainnya]
Analisis penghitung
Untuk mengukur perilaku penghitung ini, Anda dapat mengukur bandwidth rata-rata dan puncak selama frame GPU tunggal, yang dapat digambarkan dengan blok Pemakaian GPU yang berdekatan.
![Memori vertex membaca bandwidth untuk satu frame, dengan nilai rata-rata 327 MBps dan nilai puncak 1,16 GBps](https://developer.android.google.cn/static/images/agi/vertex-memory-bw-images/sample_vert_bw.png?authuser=19&hl=id)
Sebaiknya bandwidth pembacaan memori verteks puncak tidak lebih tinggi dari 1,5 GBps, dan bandwidth rata-rata tidak lebih dari 500 MBps. Nilai yang lebih tinggi merupakan indikator dari salah satu masalah umum:
- Ukuran verteks terlalu besar: Verteks mungkin memiliki atribut verteks yang besar atau atribut verteks dalam jumlah besar, yang memengaruhi waktu shading verteks secara keseluruhan.
- Aliran atribut Vertex tidak dibagi: Atribut Vertex disilangkan menjadi satu buffer, sehingga mengurangi efisiensi cache.
- Terlalu banyak verteks yang dikirimkan per frame: Model kompleks dan/atau model dalam jumlah besar mungkin memerlukan bandwidth yang lebih besar dan memerlukan waktu yang lebih lama untuk shading.
Masalah ukuran vertex juga dapat didiagnosis melalui jalur Average Bytes / Vertex, yang sebaiknya tidak lebih tinggi dari 32 byte atau verteks.
![Ukuran verteks rata-rata untuk satu frame, dengan nilai rata-rata 31,3 byte](https://developer.android.google.cn/static/images/agi/vertex-memory-bw-images/sample_bytes_per_vert.png?authuser=19&hl=id)
Cara terbaik untuk mendiagnosis masalah yang mungkin Anda hadapi adalah dengan mengambil pelacakan profil frame untuk menganalisis format verteks.