보다 효율적인 ASTC 디코딩

이것은 정말 짧지만 여전히 유용한 기사가 될 것이며 호환 장치에서 성능을 향상시키는 몇 줄의 코드를 설명합니다.

ASTC은 매우 효율적인 텍스처 압축 형식으로 높은 압축률과 적절한 이미지 품질을 결합합니다. 최신 모바일 GPU에서 많은 메모리 대역폭을 절약하는 데 도움이 됩니다.
하지만 이를 11로 설정하고 더 빠르게 실행할 수 있습니까? (특정 시나리오 및 지원되는 하드웨어에서) 가능한 것으로 보입니다.

ARM Mali GPU는 확장GL_EXT_texture_compression_astc_decode_mode을 지원합니다. ASTC 사양에 따르면 LDR 텍스처도 16비트 부동 소수점 값으로 디코딩됩니다. 이 확장은 하드웨어 ASTC 디코더를 더 빠른 모드로 전환하여 텍스처를 더 낮은 정밀도의 정규화된 8비트 부호 없는 정수로 디코딩할 수 있는 가능성을 제공합니다. 소스 텍스처가 일반적으로 24비트 RGB 또는 32비트 RGBA 비트맵이기 때문에 이것은 대부분의 실제 응용 프로그램에 충분합니다.
확장 기능을 사용하는 것은 코드 한 줄을 추가하는 것만큼 간단합니다.

GLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, TEXTURE_ASTC_DECODE_PRECISION_EXT, GLES30.GL_RGBA8);


시각적으로 이미지 품질 저하가 없었고 성능은 동일한 60fps로 안정적이었습니다. 그러나 GPU 프로파일러의 특정 메트릭을 보면 압축된 텍스처 디코더의 부하가 감소하고 텍스처 캐시 액세스가 개선된 것을 볼 수 있습니다.
다음은 중급 Galaxy A21s 휴대폰에서 수행한 당사3D Buddha Live Wallpaper용 ARM Streamline 프로파일러의 측정값입니다.



보시다시피 이 간단한 트릭으로 텍스처 조회가 눈에 띄게 향상되었습니다. 결과적으로 메모리 대역폭 사용량과 장치 전력 소비를 줄였습니다. 따라서 게으르지 말고 이 확장이 감지되면 사용하십시오. 이는 Mali GPU에서 사실상 무료 성능 향상을 제공하는 코드의 사소한 변경입니다.

이 최적화는 3부작 ARM 웹캐스트 "Optimizing Android Graphics"에서 제안되었습니다. 시청을 적극 권장합니다.

좋은 웹페이지 즐겨찾기