마이크로컨트롤러를 위한 JIT 비트맵 텍스트 렌더링

1 day ago 3

RP2350 기반 vic-2350은 문자열을 최적화된 렌더링 코드로 즉석 변환하는 JIT를 사용해, 비례 간격과 커닝을 지원하는 비트맵 텍스트를 빠르게 그려냄 프레임버퍼 대신 주사선마다 영상 버퍼를 채우는 race-the-beam 방식을 사용하며, 픽셀당 약 6사이클의 처리 예산 안에서 동작하도록 설계함 생성된 코드는 압축된 글리프 비트맵에서 픽셀을 추출해 1bpp 중간 버퍼에 합성하고, 별도 단계에서 RGB565로 확장함 텍스트 데모의 JIT 컴파일과 생성 코드 실행은 RP2350 단일 코어 처리량의 약 2.6% 를 사용하며, RGB565 변환에는 그보다 약 3배 많은 비용이 듦 내적 기반 커닝은 글리프 양쪽의 비트 벡터를 AND한 뒤 켜진 비트 수를 세어 간격을 계산하며, 글리프당 2바이트의 테이블만 필요함 비트맵 글꼴과 주사선 단위 렌더링 vic-2350은 RP2350 마이크로컨트롤러 보드에서 1980년대 가정용 컴퓨터를 재구상하는 프로젝트임 효율성과 저해상도에서 의도적으로 설계한 선명한 픽셀 형태를 선호해, 안티앨리어싱 글꼴 대신 비트맵 글꼴을 선택함 초기 Macintosh와 그 전신의 미감을 살리기 위해 비례 간격과 커닝도 구현함 RP2350 프로젝트 대부분의 텍스트 렌더링은 성능 확보가 까다로워 고정 문자 셀에 기반함 1980년대 중반의 고정 셀 텍스트 방식은 화면 출력 중 글꼴 ROM에서 문자를 찾아 제한된 하드웨어로도 빠른 갱신과 반응성을 얻었지만, 고정폭 글꼴만 지원함 Xerox Alto에서 Apple Lisa, Macintosh로 이어진 비트맵 프레임버퍼는 훨씬 유연했지만 갱신에 더 많은 연산이 필요했음 1980년대 초에는 텍스트가 점진적으로 그려지는 모습을 흔히 볼 수 있었음 가정용 컴퓨터에도 그래픽 모드는 있었지만 대체로 텍스트 모드보다 해상도가 낮았고, 1MHz 6502급 CPU의 처리력도 부족해 워드프로세서와 스프레드시트는 텍스트 모드를 사용함 RP2350은 HSTX 주변장치로 DVI 출력을 지원하지만, 영상 버퍼를 채우는 일은 소프트웨어가 담당함 SRAM이 520kB이므로 프레임버퍼를 쓰려면 해상도나 비트 심도, 또는 둘 다 제한해야 하며 애플리케이션용 메모리도 남겨야 함 vic-2350은 주사선마다 버퍼를 채워 더 풍부한 화면과 낮은 지연시간을 얻는 대신, 픽셀당 약 6사이클이라는 엄격한 렌더링 예산을 지켜야 함 텍스트 처리 비용을 줄일수록 다른 그래픽 객체와 애플리케이션 기능에 더...

Read Entire Article




피플앤툴즈 네트워크
🛍 샵