목록전체 글 (195)
코딩하기 좋은날
요즘 안드로이드 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..
안녕하세요~~ 그동안 티스토리 블로그를 운영해왔었는데요. 아무래도 요즘 미디엄 글을 많이 보다보니.. 미디엄에서 글을 올리고 싶다는 욕구가 마구마구 들어서 앞으로는 Medium에서도 활동을 하게 될 것 같습니다. 음 사실 외국 자료를 단순 번역하는 글들은 티스토리에 올릴까 싶기도 하구요. 새로운 기술, 라이브러리나 소스 코드 분석과 같은 내용이 있다면 미디엄에 올릴거 같긴한데.. 어찌 됐든 티스토리를 운영하지 않는 것은 아니구요. 저의 개인적인 순간순간의 마음이겠지만.. 둘다 아무튼 그렇습니다 하하.. 주소는 아래와 같습니다. https://medium.com/@huiung
출처: https://kt.academy/article/cc-suspension How does suspension work in Kotlin coroutines? A deep explanation of how suspension works in Kotlin Coroutines. kt.academy Suspending function은 Kotlin Coroutine의 hallmark(특징)이다. suspension 기능은 다른 모든 Kotlin Coroutine 개념이 구축되는 가장 기본적인 기능이다. 그렇기 때문에 이 장의 목표는 작동 방식에 대한 확실한 이해를 구축하는 것이다. Coroutine을 Suspending 하는 것은 도중에 멈춘다는 의미이다. 이것은 비디오 게임을 멈추는 것과 유사하다. 체..
출처: 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 데이터 구조를 만들고 소유하며 그들의 생산자와 다른 프로세스에 ..