March 2012
4 posts
렌더스크립트를 소개합니다.
안드로이드 허니컴부터 소개된 렌더스크립트는 아직 미지의 기술인 것 같습니다. 여러 모임을 참석해 보면 많은 사람들은 막연히 허니컴 이후에 추가된 그래픽 기술이라고 생각하고는 뭔가 향상점이 있겠지하고 지나가더군요. 또, 렌더스크립트에 대해 기술된 쓸만한 글들도 거의 없는 실정입니다. 그렇기 때문에 개발자 블로그에 올라왔던 세개의 렌더스크립트 기사는 꽤 유용했던 것 같습니다. 아래는 제가 렌더스크립트 기사들을 번역한 것입니다.
렌더스크립트를 소개합니다.
렌더스크립트 2부
렌더스크립트로 레벨 바꾸기
위 아티클 들은 실제 그래픽 처리보다는 렌더스크립트가 보일 수 있는 분산 처리를 이용한 연산 가속(compute acceleration)에 더 비중을 두고 있습니다. 그래픽 관련 아티클을 보고자 하시는 분들은...
안드로이드 렌더링의 특징: 디스플레이 리스트
안드로이드 3.0(허니컴)부터 렌더링 부분이 많이 향상되었습니다. 하드웨어 가속이라는 특성도 그 중의 하나이죠. 또 다른 변화 중 하나는 디스플레이 리스트가 추가된 점입니다. 진저브레드까지 안드로이드는 변화를 전파하는 모델을 가지고 있었습니다.
이런 모델은 변경 사항을 ViewRoot까지 전파하는 문제가 있었습니다.
전파되어 올라간 후 다시 아래로 내려오면서 그려야 합니다.
이런 모델은 하나의 뷰 변경이 꽤 많은 코드를 접근하게 하여 비효율적이었습니다. 하나의 뷰를 다시 그리기 위한 정보가 상단의 유아이 요소까지 올라가야만 얻을 수 있기 때문에 변경 내역을 전파하고 다시 그려야만 했습니다.
이 비효율에 대한 대안은 디스플레이 리스트를 사용하는 것입니다.
뷰가 위와 같은 목록을...
안드로이드 소스 개별 리포지토리
안드로이드 소스는 여러개의 리포지토리가 합쳐 구성되어 있습니다. 전체를 받는 것은 많은 시간이 들기도 하고 용량이 많기 때문에 부담이 된다는 분들이 계시더군요.
개별 리포지토리의 주소를 따 두었습니다. (이렇게 따두는 것은 어려운 일은 아니긴 하지만 조금 귀찮은 일입니다.)
https://docs.google.com/document/pub?id=1TigHy4rEIOKyCoiAbuUYt_X7twrNXbLmmwbDTc3Xh7Y
하나씩 https 주소를 따 두어서 git clone <https 주소> 이렇게 입력하면 하나 씩 받을 수 있습니다.
PS: 안드로이드는 서브모듈을 쓰지 않고 repo라는 도구를 씁니다. repo는 여러 리포지토리를 받아와 소스 트리를 구성해주고 변경된 내역을...
스핀락의 구현
스핀락에 대해 어렵게 생각하시는 분들이 많으시더군요.
static inline void arch_spin_lock(arch_spinlock_t *lock)
{
unsigned long tmp;
/*
* 스핀락의 ARM 아키텍쳐 구현입니다.
* 1. lock->lock의 값을 가져와서 tmp에 저장합니다.
* 배타적 로드(ldrex)를 썼기 때문에 이후에 오는 배타적
* 스토어(strex)가 오기 까지 변경이 되었는지
* 하드웨어가 검증합니다.
* 2. 값이 0인지 확인하여, 0인 경우에만 lock->lock에 1을
* 저장합니다.
* 3. 배타적 로드와 스토어 사이에...