DirectFB 2D 가속 노트.
2009/01/08
1. s3c6410 bitblt 기능의 문제점.
- 프레임버퍼 주소로서 물리 주소를 쓴다.
- 2D 가속 IP의 레지스터에는 물리 주소를 넣어야 한다.
- directFB 단에서 alloc한 주소는 가상 주소이며 사용자 공간이다.
2. 해결안 첫번째.
- 대용량의 비디오메모리를 커널 내부에 확보해놓는다.
- directFB 를 고쳐서 alloc을 디바이스 드라이버를 통해서 커널 주소로 받도록 한다.
3. nvidia 모듈로 본 추정 내용.
- blit은 크게 다이렉트 blit과 CPU 타임을 쓰는 blit이 있다.
- directFB는 state관리를 하고 프레임버퍼에 한 번이라도 이동된 스프라이트 이미지는 따로 표시를 하는 것 같다.
- 따라서 플래그 체크하여 최초 프레임버퍼로 이동 시에는 fromCPU blit을 쓴다.
- 이미 프레임버퍼에 존재시에는 2d 가속 blit을 쓴다.
- 클리핑 영역을 관리하여 병행이 가능할 것 같다.
4. direct_memcpy
- 최초 실행시 실행 시간을 점검하여 빠른 memcpy로 자동 연결하는 것 같다.
5. dfb_fbdev
- mmap 되어 있지만 다이렉트로 쓰려고 하면 다른 곳에서 lock이 걸려있어 그냥 멈춰있다.
- lock 처리를 좀 더 추적해보자.
6. stretch_blit
- 스케일링은 어떻든간에 남는 프레임버퍼로 blit후에 2D 가속 blit으로 처리하면 속도를 벌 수 있다.
7. chromaky_blit
나와 완전한 고민을 하고 있는 친구가 있었다.
http://www.mail-archive.com/linux-embedded@vger.kernel.org/msg01126.html
[t:/] is not "technology - root". dawnsea, rss