OpenGLRenderer 구성

이 문서에서는 하드웨어를 최대한 활용하기 위해 사용할 수 있는 성능 조정에 관해 설명합니다.

OpenGLRenderer(libhwui) 속성

이 문서에는 Android의 2D 하드웨어 가속 렌더링 파이프라인을 제어하는 데 사용할 수 있는 모든 속성이 나열되어 있습니다. 이러한 속성은 device.mk에서 PRODUCT_PROPERTY_OVERRIDES로 설정하세요.

모든 Android 버전의 속성

속성 유형 기본값 설명
ro.zygote.disable_gl_preload boolean false 부팅 시 Zygote에 EGL/GL 드라이버 미리 로드를 사용하도록 설정하거나 사용하지 않도록 설정하는 데 사용됩니다. 이 속성을 false로 설정하면 Zygote가 eglGetDisplay(EGL_DEFAULT_DISPLAY)를 호출하여 GL 드라이버를 미리 로드합니다. 목표는 Zygote에 동적 라이브러리 코드를 로드하여 다른 모든 프로세스와 공유하는 것입니다. 드라이버가 공유를 지원하지 않는 경우에는 이 속성을 true로 설정하세요.

Android 8.0 이하의 속성

속성 유형 기본값 설명
ro.hwui.disable_scissor_opt boolean false

시저 최적화를 사용하도록 설정하거나 사용하지 않도록 설정하는 데 사용됩니다. 허용되는 값은 true 및 false입니다. 시저 최적화가 사용 설정되면 OpenGLRenderer는 GL 시저 테스트를 선택적으로 사용 설정 및 사용 중지하여 시저링의 사용을 최소화하려고 시도합니다.

최적화가 사용 중지되면 OpenGLRenderer는 GL 시저 테스트의 사용 설정을 유지하고 필요에 따라 시저 rect를 변경합니다. 일부 GPU(예: SGX 540)는 시저 테스트를 자주 사용 설정 또는 사용 중지할 때보다 시저 rect를 자주 변경할 때 훨씬 뛰어난 성능을 발휘합니다.

ro.hwui.texture_cache_size float 24 프로세스당 텍스처 캐시의 크기를 메가바이트로 정의합니다. 32비트 텍스처에 준하는 여러 화면을 보관할 수 있을 정도로 큰 캐시를 사용하는 것이 좋습니다. 예를 들어 1280 x 800 디스플레이에서는 전체 화면 버퍼가 약 4MB를 사용하므로 캐시가 최소 20MB여야 합니다.
ro.hwui.layer_cache_size float 16 프로세스당 레이어 캐시의 크기를 메가바이트로 정의합니다. 32비트 화면의 4배를 보관할 수 있을 정도로 큰 캐시를 사용하는 것이 좋습니다. 예를 들어 1280 x 800 디스플레이에서는 전체 화면 버퍼가 약 4MB를 사용하므로 캐시가 최소 16MB여야 합니다.
ro.hwui.gradient_cache_size 0.5 float 프로세스당 그라디언트 캐시의 크기를 메가바이트로 정의합니다. 단일 그라디언트는 보통 1~4KB의 메모리를 차지합니다. 그라디언트 12개 이상을 보관할 수 있을 정도로 큰 캐시를 사용하는 것이 좋습니다.
ro.hwui.patch_cache_size integer 128 프로세스당 9-패치 캐시의 크기를 킬로바이트로 정의합니다. 이 캐시는 꼭짓점 데이터만 보관하므로 작게 유지할 수 있습니다. 각 꼭짓점은 부동 소수점 수 4개 또는 16바이트로 구성됩니다.
ro.hwui.path_cache_size float 4 프로세스당 경로 캐시의 크기를 메가바이트로 정의합니다. 32비트 텍스처에 준하는 화면을 적어도 1개는 보관할 수 있을 정도로 큰 캐시를 사용하는 것이 좋습니다. 예를 들어 1280 x 800 디스플레이에서는 전체 화면 버퍼가 약 4MB를 사용하므로 캐시가 최소 4MB여야 합니다.
ro.hwui.shape_cache_size float 1 프로세스당 도형 캐시의 크기를 메가바이트로 정의합니다. 이 값은 원과 모서리가 둥근 직사각형 등의 여러 캐시에 의해 사용됩니다. 8비트 화면을 적어도 1개는 보관할 수 있을 정도로 큰 캐시를 사용하는 것이 좋습니다. 예를 들어 1280 x 800 디스플레이에서는 전체 화면 버퍼가 약 1MB를 사용하므로 캐시가 최소 1MB여야 합니다.
ro.hwui.drop_shadow_cache_size float 2 프로세스당 텍스트 그림자 캐시의 크기를 메가바이트로 정의합니다. 8비트 텍스처에 준하는 화면 2개를 보관할 수 있을 정도로 큰 캐시를 사용하는 것이 좋습니다. 예를 들어 1280 x 800 디스플레이에서는 전체 화면 버퍼가 약 1MB를 사용하므로 캐시가 최소 2MB여야 합니다.
ro.hwui.r_buffer_cache_size float 2 프로세스당 렌더링 버퍼 캐시의 크기를 메가바이트로 정의합니다. 8비트 화면의 두 배를 보관할 수 있을 정도로 큰 캐시를 사용하는 것이 좋습니다. 예를 들어 1280x800 디스플레이에서는 전체화면 버퍼가 약 1MB를 사용하므로 캐시가 최소 2MB여야 합니다. 기기가 4비트 또는 1비트 스텐실 버퍼를 지원하는 경우 캐시가 더 작을 수 있습니다.
ro.hwui.texture_cache_flush_rate float 0.6 메모리 플러시 이후에 유지할 텍스처 캐시 비율을 정의합니다. 메모리 플러시는 시스템이 모든 애플리케이션의 메모리를 복원해야 하는 경우에 트리거됩니다. 이러한 상황에서는 캐시의 50% 정도만 해제하는 것이 좋습니다.
ro.hwui.text_small_cache_width integer 1024 기본 글꼴 캐시의 너비를 픽셀로 정의합니다. 상한값은 GPU의 텍스처 업로드 속도에 따라 다릅니다. 최소 1024픽셀, 최대 2048픽셀을 사용하는 것이 좋습니다. 또한 두 값의 거듭제곱을 사용해야 합니다.
ro.hwui.text_small_cache_height integer 256 기본 글꼴 캐시의 높이를 픽셀로 정의합니다. 상한값은 GPU의 텍스처 업로드 속도에 따라 다릅니다. 최소 256픽셀, 최대 1024픽셀을 사용하는 것이 좋습니다.
ro.hwui.text_large_cache_width integer 2048 대형 글꼴 캐시의 너비를 픽셀로 정의합니다. 이 캐시는 기본 글꼴 캐시에 맞추기에는 너무 큰 글리프에 사용됩니다. 상한값은 GPU의 텍스처 업로드 속도에 따라 다릅니다. 최소 2048픽셀, 최대 4096픽셀을 사용하는 것이 좋습니다. 또한 두 값의 거듭제곱을 사용해야 합니다.
ro.hwui.text_large_cache_height integer 512 대형 글꼴 캐시의 높이를 픽셀로 정의합니다. 대형 글꼴 캐시는 기본 글꼴 캐시에 맞추기에는 너무 큰 글리프에 사용됩니다. 상한값은 GPU의 텍스처 업로드 속도에 따라 다릅니다. 최소 512픽셀, 최대 2048픽셀을 사용하는 것이 좋습니다. 또한 두 값의 거듭제곱을 사용해야 합니다.
hwui.text_gamma_correction string lookup 텍스트 감마 교정 기법을 선택합니다. 4가지 중에서 선택할 수 있습니다.
  • lookup3: 참고표에 따른 교정값입니다. 흑백 텍스트의 경우 감마 교정값이 다릅니다(아래의 기준점 참고).
  • lookup: 단일 참고표에 따른 교정값입니다.
  • shader3: GLSL 셰이더에 의해 교정값이 적용됩니다. 흑백 텍스트의 경우 감마 교정값이 다릅니다(아래의 기준점 참고).
  • shader: GLSL 셰이더에 의해 교정값이 적용됩니다.
조회 감마 교정값이 셰이더 계산이 제한된 GPU에서 가장 잘 작동합니다. 셰이더 감마 교정값은 메모리를 저장하는 데 가장 적합합니다. 품질, 속도 및 메모리 사용량 측면에서 좋은 절충안을 제공하는 기본 lookup 기법을 사용하는 것이 좋습니다.
hwui.text_gamma float 1.4 텍스트 감마 교정에 사용되는 감마 값을 정의합니다. 이 값은 기기에서 사용하는 디스플레이에 따라 조정 가능합니다.
hwui.text_gamma.black_threshold integer 64 검은색 감마 교정값이 적용되는 휘도 기준점을 정의합니다(기준점 밑으로 적용). 값은 0..255 범위에서 정의해야 합니다.
hwui.text_gamma.white_threshold integer 192 흰색 감마 교정값이 적용되는 휘도 기준점을 정의합니다(기준점 위로 적용). 값은 0..255 범위에서 정의해야 합니다.
hwui.use_gpu_pixel_buffers boolean true OpenGL ES 3.0 하드웨어에 PBO를 사용 설정하거나 사용 중지하는 데 사용됩니다. PBO는 렌더러가 특히 글꼴 캐시에 대해 비동기 텍스처 업로드를 수행하는 데 사용됩니다. 이 속성은 항상 사용 설정 상태를 유지해야 하지만 PBO의 사용으로 손상 또는 심각한 성능 저하가 발생하는 경우에는 도입 또는 개발 도중에 사용 중지할 수 있습니다. 따라서 속성도 읽기 전용이 아닙니다.