텍스처 데이터의 메모리 대역폭은 앱의 GPU 성능에 잠재적인 병목 현상이 될 수 있습니다. AGI 시스템 프로필 에는 텍스처 메모리 대역폭 문제를 진단하는 데 도움이 되는 몇 가지 카운터가 있습니다.
Qualcomm Adreno 카운터
Qualcomm Adreno GPU가 탑재된 기기에는 다음과 같은 주목할 만한 카운터가 있습니다.
| 카운터 | 설명 |
|---|---|
| 텍스처 메모리 읽기 BW (바이트/초) | 외부 메모리에서 읽은 텍스처 데이터의 대역폭입니다. |
| % 텍스처 L1 미스 | 텍스처 가져오기에서 L1 캐시 부적중입니다. |
| % 기본 수준이 아닌 텍스처 | 밉맵인 텍스처 가져오기의 비율입니다. |
| % 비등방성 필터링됨 | 비등방성 필터링된 텍셀의 비율입니다. |
ARM Mali 카운터
ARM Mali GPU가 탑재된 기기에는 다음과 같은 주목할 만한 카운터가 있습니다.
| 카운터 | 설명 |
|---|---|
| 외부 메모리에서 텍스처 읽기 비트 | 셰이더 코어에서 평균화된 텍스처 단위로 외부 메모리에서 읽은 데이터 비트입니다. |
| L2 캐시에서 텍스처 읽기 비트 | 셰이더 코어에서 평균화된 텍스처 단위로 L2 캐시에서 읽은 데이터 비트입니다. |
| [더보기] |
평균 읽기 비트에서 전체 대역폭을 계산하려면 카운터 값에 버스 너비 (일반적으로 16바이트)와 총 셰이더 코어 수를 곱합니다.
카운터 분석
이러한 카운터의 동작을 측정하려면 단일 GPU 프레임 과정에서 평균 및 최대 대역폭을 측정한 다음 연속된 GPU 사용률 블록으로 구분합니다.
평균 텍스처 메모리 읽기 대역폭은 1GBps 이하, 최대 대역폭은 3GBps 이하로 하는 것이 좋습니다. 텍스처 L1 캐시 부적중도 10% 이하여야 합니다. 대역폭 또는 L1 캐시의 값이 높으면 다음과 같은 더 심각한 텍스처 문제를 나타낼 수 있습니다.
- 텍스처가 너무 큼: 큰 텍스처는 패키지 크기를 부풀리고 비용이 많이 들며 캐시 효율성을 저하할 수 있습니다.
- 텍스처가 압축되지 않음: 모든 Android 휴대전화는 ETC1 또는 ASTC와 같은 일부 유형의 텍스처 압축을 지원합니다. 패키지 크기를 줄이고 텍스처 대역폭을 줄이려면 텍스처를 압축해야 합니다.
- 기타: 2의 거듭제곱 텍스처, 밉맵, 비등방성 필터링 등 다양한 기타 텍스처 문제를 고려해야 합니다. 이러한 문제 중 일부는 아래에서 설명한 대로 시스템 프로필에서 관찰할 수 있지만 다른 문제는 더 심층적인 조사가 필요할 수 있습니다.
자유 카메라가 있는 3차원 게임의 경우 텍스처 애셋은 밉맵을 사용해야 하므로 카메라에서 멀리 있는 객체의 메모리 대역폭이 줄고 텍스처 캐시 효율성이 향상되며 이미지 품질이 개선됩니다. Qualcomm Adreno GPU를 사용하는 기기의 경우 평균 10% 미만의 기본 수준이 아닌 텍스처 카운터는 밉맵이 부적절함을 나타낼 수 있습니다.
또 다른 고려사항은 비등방성 필터링의 사용입니다. 이는 비등방성 필터링된 텍셀의 비율에 관한 Qualcomm Adreno GPU의 % 비등방성 필터링됨 카운터로 설명됩니다. 일부 게임의 경우 시각적 품질을 개선할 수 있지만 비용이 많이 들 수 있으므로 GPU 성능 비용과 비교하여 사용 여부를 결정해야 합니다.
더 구체적인 문제를 진단하는 가장 좋은 방법은 프레임 프로필 트레이스를 가져와 텍스처 애셋을 분석하는 것입니다.