목록Android (30)
코딩하기 좋은날
요즘 안드로이드 UI개발을 거의 Compose로만 하고 있어서, Compose 관련 공식문서들을 좀 정리해보려고 한다. 이번 글은 Jetpack Compose의 Phases("단계")에 관한 아래의 구글 공식문서를 번역한 글이다. 출처: https://developer.android.com/jetpack/compose/phases 다른 대부분의 UI toolkit과 유사하게 Compose는 몇가지의 단계를 거쳐 한 frame을 렌더링한다. Android View system에서는 measure, layout, draw 라는 주요 3가지 단계가 있음을 알고 있을 것이다. Compose도 아주 유사하게 이러한 단계들을 거치지만, 시작 단계에서, “composition”이라는 중요한 추가 단계가 있다. The..
출처: https://source.android.com/devices/graphics/arch-st, https://source.android.com/devices/graphics/arch-tv SurfaceTexture SurfaceTexture는 Surface와 GLES texture의 조합이다. SurfaceTexture instance는 GLES texture로 출력되는 Surface를 제공하는 데 사용된다. SurfaceTexture는 app이 consumer인 BufferQueue instance를 포함하고 있다. onFrameAvailable() 콜백은 producer가 새로운 buffer를 큐에 넣을 때 앱에게 알려준다. 그때, 앱은 이전에 있던 buffer를 release하는 update..
출처: https://source.android.com/devices/graphics/arch-sv-glsv SurfaceView SurfaceView는 다른 View들과 동일한 종류의 인자를 받으므로, SurfaceView의 위치와 크기를 지정하거나 주위에 다른 UI요소들을 넣을 수 있다. SurfaceView가 rendering 할 때가 되면, 컨텐츠들은 완전히 투명하게 된다. GL context 또는 media decoder와 같은 외부 buffer 소스로 rendering할 때 buffer를 화면에 표시하려면 buffer 소스에서 buffer를 복사해야 한다. SurfaceView를 사용하면 그렇게 할 수 있다. SurfaceVIew의 View컴포넌트가 시각화 되려고 할때, 프레임워크는 Surfa..
참조: https://source.android.com/devices/graphics/arch-sh#canvashttps://source.android.com/devices/graphics/surfaceflinger-windowmanager Surface screen compositor에 의해 관리되는 raw buffer에 대한 처리를 한다. Surface는 보통 image buffer의 consumer로 부터 만들어진다. — image buffer의 예는 SurfaceTexture, MediaRecorder, android.renderscript.Allocation, android.opengl.EGL14 , android.media.MediaPlayer , android.hardware.camera2...
참조: https://source.android.com/devices/graphics/surfaceflinger-windowmanager, https://source.android.com/devices/graphics/hwc 하드웨어 컴포저 HAL | Android 오픈소스 프로젝트 | Android Open Source Project 하드웨어 컴포저 HAL 하드웨어 컴포저(HWC) HAL은 버퍼를 가용한 하드웨어와 합성하기 위한 가장 효율적인 방식을 파악합니다. HAL로서는 구현이 기기와 관련이 있으며 보통 디스플레이 하드웨어 OE source.android.com 안드로이드에서 모든 그래픽 요소들의 중심에는 BufferQueue라는 클래스가 있다. 이것의 역할은 그래픽 데이터 버퍼들을 생성하는 컴포넌..
BufferQueue클래스는 그래픽 데이터의 buffer를 생성하는 생산자(producer)를 표시 또는 추가처리 하기 위해 데이터를 받는 소비자(consumer)에 연결한다. 시스템을 통해 그래픽 데이터의 버퍼를 이동하는 거의 모든 것이 BufferQueue에 의존한다. Gralloc memory allocator는 buffer할당을 수행하고 2가지 공급업체별 HIDL interface(IPC에 사용하기 위한 언어)를 구현한다. allocate()함수는 width, height, pxiel format을 인자로 취하고 일련의 flag를 사용한다. BufferQueue producers and consumers 소비자는 BufferQueue 데이터 구조를 만들고 소유하며 그들의 생산자와 다른 프로세스에 ..
출처: https://source.android.com/devices/graphics/architecture 모든 개발자는 Surfaces, SurfaceHolder, EGLSurface, SurfaceView, GLSurfaceView, SurfaceTexture, TextureView, SurfaceFlinger, Vulkan에 대해서 알아야 한다. 이 페이지에서는 Android-system-level graphics architecture의 필수적인 요소와 이것들을 App 프레임워크와 multimedia system에서 사용하는 방법에 대해 설명한다. 초점은 그래픽 데이터의 buffer가 어떻게 시스템을 통해 이동하는지에 있다. SurfaceView와 TextureView가 작동하는 방식이나 Sur..
안드로이드의 Graphics 챕터의 모든 내용을 번역하고자 한다. 문서에서도 추천하듯, 순서대로 읽을 것을 권장하며 안드로이드 그래픽 아키텍처에 대해 궁금한적이 있다면, 올바르게 찾아왔다. 글을 번역하는 시점은 2022년 7월경이며, 시간이 흐름에 따라 미래에는 상당부분 내용이 달라질 수 있음을 인지해야 한다. 참조: https://source.android.com/devices/graphics 그래픽 | Android 오픈소스 프로젝트 | Android Open Source Project 그래픽 Android 프레임워크는 그래픽 드라이버의 제조업체 구현과 상호작용하는 다양한 2D 및 3D용 그래픽 렌더링 API를 제공합니다. 따라서 이러한 API가 더 높은 수준에서 어떻게 작동하는지를 제 source...