디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

SDL / DirectFB / fbdev 를 비교한 성능앱에서 작성

발명도둑잡기(118.216) 2025.12.04 19:54:55
조회 45 추천 0 댓글 0
														

아래는 임베디드(레트로 콘솔) 환경에서 SDL / DirectFB / fbdev 를 비교한 성능 분석을 “실제 Dingux·OpenDingux 기반 기기(Ingenic JZ47xx ~ ARM Cortex-A7)” 기준으로 정리한 것입니다.

요약 (성능 순위)

하드웨어 가속이 없는 순수 소프트웨어 렌더링 환경에서의 성능 순위:

fbdev > DirectFB > SDL 1.2 > SDL 2.0(software renderer)

이 순서는 레트로 콘솔 포팅 커뮤니티에서도 거의 합의된 구조입니다.

1) fbdev (Linux framebuffer)

임베디드에서 가장 빠른 그래픽 출력 방식

특성

/dev/fb0를 메모리에 mmap 해서 직접 픽셀 쓰기

X11, GL, compositor 없음 → 오버헤드 제로

더블버퍼링은 앱이 직접 구현해야 함
(샘플: 두 개의 offscreen buffer를 CPU로 memcpy)

성능

메모리 쓰기 속도 = 화면 업데이트 속도

Ingenic JZ4770(1GHz) 환경에서:

320×240 전 화면 blit: 240–300 FPS

640×480에서도 70–100 FPS

장점

압도적인 속도

지연(latency) 최소

단점

개발자가 모든 렌더링을 직접 구현해야 함

폰트, 이미지 디코딩, 입력 처리 등도 직접 해야 함

API가 너무 로우레벨

2) DirectFB

fbdev 위에 얇은 계층을 둔 2D accelerated API
(하지만 레트로 기기에서는 2D 가속이 거의 없거나 비활성화 → 대부분 software)

특성

fbdev에 비해 프레임버퍼 복사 최적화가 더 잘 되어 있음

색 변환(YUV→RGB), scaling 같은 연산의 소프트웨어 최적화 존재

primitive drawing API를 제공

성능

fbdev에 근접하지만 약간 느림:

320×240 fullscreen blit: 200–250 FPS

scaling/alpha blending 포함하면 속도가 크게 떨어짐

장점

fbdev보다 API가 높아서 개발 편함

SDL보다 최적화가 더 잘 되어 있음

단점

2012년 이후 거의 유지보수 중단

SDL2보다 비표준적

일부 기기에서 드라이버가 불안정

3) SDL 1.2 (1.x)

Dingux 세대에서 가장 널리 사용되는 그래픽 계층

특성

내부적으로 대부분 fbdev 또는 DirectFB backend 사용

소프트웨어 surface → framebuffer로 memcpy(blit)

CPU 렌더링 기반

더블버퍼링 제공(가상 fb 또는 temp surface)

성능

SDL 1.2는 fbdev보다 약 10~30% 정도 느림

320×240 fullscreen blit: 150–220 FPS

sprite blit 2000개 기준: fbdev 대비 20~35% 성능 감소

장점

이식성이 높아 포팅이 매우 쉽다

수많은 에뮬레이터가 SDL 1.x 기반

키·오디오·타이머 모두 포함

단점

최적화가 제한적

alpha blending 느림

Scaling 최소화 필요(특히 소프트 스케일러는 매우 느림)

4) SDL 2.0 (software renderer)

ARM이나 Ingenic 세대의 레트로기기에서는 OpenGL ES가 없거나 매우 느림
→ SDL2는 소프트웨어 렌더러로 fallback → 가장 느림

SDL2는 왜 느린가?

렌더링을 texture 기반으로 abstraction

CPU blit + texture management 오버헤드 발생

내부 surface 처리 단계가 SDL1보다 많음

성능

320×240 fullscreen render: 60–120 FPS
(SDL1 대비 약 40~50% 성능 저하)

scaling 하면 30 FPS 이하로도 떨어짐

장점

modern API

texture batching 기능

다양한 키/조이스틱 지원

단점

GPU 없는 환경에서는 SDL1보다 훨씬 느림

레트로 콘솔(OD, Dingux)에서는 비추천

5) CPU 부하 비교(대략적인 비율)

렌더링 API상대적인 CPU 사용량특징fbdev1× (baseline)mmap + memcpyDirectFB1.1–1.2×최적화 있으나 abstraction 존재SDL 1.21.3–1.6×surface 변환/alpha로 오버헤드SDL 2.0(sw)2.0–2.5×texture 파이프라인 비용

6) 레트로 에뮬레이터 기준 성능 차이

예: 60fps 에뮬(GB/SNES/GBA) 기준

Backend실제 에뮬 성능 차이Notesfbdev 직접 렌더링가장 빠름 — CPU 여유 5~15% 더 남음PS1/N64 포팅 시 중요DirectFB거의 fbdev급가끔 tearingSDL 1.2약 5~15% FPS 손실대부분의 Dingux 앱이 이 방식SDL220~40% loss저사양에서 프레임드롭 발생

7) 결론: 어떤 환경에서 무엇을 쓰는 게 좋은가?

레트로 기기(저사양 CPU, GPU 없음)

목적권장최대 성능(에뮬, fullspeed 목적)fbdev 직접 렌더링개발 편의 + 고성능SDL 1.2GUI 런처SDL 1.x 또는 DirectFBSDL2 선택?GPU 없는 기기에서는 비추천

메모리 64MB~128MB, GPU 없음 → SDL1.2 우위

GPU 존재(파워VR/Adreno 등) → SDL2 + GLES 가능

더 알고 싶으세요?

필요하면 아래도 정리해드릴 수 있습니다:

Ingenic JZ47xx에서 SDL 최적화 기법

SDL로 tearing 없이 vsync 구현하는 법

fbdev 기반 에뮬레이터 렌더링 루프 예제

SDL1 → SDL2 포팅 시 성능 하락 문제 해결법

어떤 부분을 더 깊게 보시겠어요?


추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 이제는 의미 없어진 것 같은 시상식은? 운영자 25/12/01 - -
AD 루틴 ON! 운동 찐템! 지금 할인 중 운영자 25/11/27 - -
공지 프로그래밍 갤러리 이용 안내 [97] 운영자 20.09.28 48836 65
2906689 '19' 틱톡녀 합방 레전드 수위.gif 프갤러(219.248) 03:15 1 0
2906685 otp 4년만에 복구 완료 넥도리아(220.74) 02:59 7 0
2906684 넥도리아 이분 무섭네요 [5] ㅇㅇ(118.235) 02:46 25 0
2906683 국민의힘도 타당하면 동의해줄 것이다. 윤카 제외하고, 넥도리아(220.74) 02:23 13 0
2906682 나의 물귀신 작전은 국민의힘 이 반대의 입장에서 말하는거라서, 넥도리아(220.74) 02:21 11 0
2906681 아이큐 테스트 문제 풀어줄사람 [1] RAIN갤로그로 이동합니다. 02:20 13 0
2906680 I nan, Administrator 감시자 넥도리아(220.74) 02:18 12 0
2906679 윈도우 계정 이름 Administrator 관리자 넥도리아(220.74) 02:17 11 0
2906678 달동네? ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 01:50 16 0
2906677 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 01:46 12 0
2906676 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 01:45 14 0
2906671 이거 왜 오류나요?ㅠ [3] ㅇㅇ(118.235) 01:29 25 0
2906667 121.139 중국인이 대한민국 국민 사살해도, 아무 말 못할 사람이다T [7] 넥도리아(220.74) 01:03 45 0
2906666 121.139 국제 정세 못 읽는 사람이다. 관심주지 마라. 관심법 넥도리아(220.74) 01:00 16 0
2906665 인신매매 정부 니들 매매랑 판매랑 뜻 아냐 중국정부? 마이크 사갖테스트 넥도리아(220.74) 00:58 14 0
2906663 일본과 중국 지지 안하지만, 솔직히 먼저 선전포고한놈이 잘못 한거 아닌가 [6] 넥도리아(220.74) 00:44 40 0
2906662 넥도리아 중일 전쟁 타이완 해협이 어딘지 알았습니다. [7] 넥도리아(220.74) 00:30 33 0
2906661 it 업계 남자와 여자의 차이 프갤러(121.139) 00:27 40 1
2906655 히야.. 이뇬 이거.. [4] ♥발라당냥덩♥갤로그로 이동합니다. 12.05 77 0
2906654 슬롯머신 사이트 추천 디시 ㅇㅇ(59.2) 12.05 20 0
2906652 레고로 종이 한장 빨아올리는거 만들수 있나 발명도둑잡기(118.216) 12.05 28 0
2906650 음기 충전 발명도둑잡기(118.216) 12.05 27 0
2906648 앱 하나 만들어봤는데 [1] 프갤러(165.132) 12.05 35 0
2906644 클라우드플레어 장애 원인: 오피셜 [1] 나르시갤로그로 이동합니다. 12.05 70 1
2906642 러스트와 자바 서버 프로그래밍 비교 나르시갤로그로 이동합니다. 12.05 28 0
2906639 이번 클라우드플레어 장애 원인 나르시갤로그로 이동합니다. 12.05 41 0
2906638 한우 먹는중 프갤러(121.139) 12.05 23 0
2906637 ■개발자말고 아버지소개로 트럭정비사하는게낫냐 [1] ㅇㅇ갤로그로 이동합니다. 12.05 52 0
2906636 클플 장애 뭐였음? ㅇㅅㅇ [1] ㅇㅇ(112.157) 12.05 33 0
2906633 티켓 프로그램 개발자 구합니다 ㅇㅇ(121.181) 12.05 46 0
2906629 센척하지만 나도 러스트 좁밥이다. [6] 프갤러(110.8) 12.05 65 0
2906628 c++로 1인개발 거의 안함? [16] 프갤러(175.197) 12.05 162 0
2906626 클라우드 플레어 이 새끼들 riir하다 터트린거 같은데 [1] 프갤러(221.149) 12.05 72 1
2906624 gitlab 먹통이네, ㅅㅂ [1] 프갤러(125.177) 12.05 53 0
2906623 클라우드플레어 또 터진건가요?? [12] 정신나간정상인갤로그로 이동합니다. 12.05 108 0
2906622 눈빛 좀 봐.. [1] ♥발라당냥덩♥갤로그로 이동합니다. 12.05 59 0
2906621 ai특징이 우덜들 절대 기계로 대체않함 ㅋㅋㅋ기상캐스터 등등 타이밍뒷.통수한방(1.213) 12.05 45 0
2906620 진지하게 언어 뭐로 정할까. 도와주셈 [10] 프갤러(175.197) 12.05 117 0
2906619 유재석 나락감?? 타이밍뒷.통수한방(1.213) 12.05 48 0
2906617 카드값 눈물난다 [2] ㅇㅇ(119.56) 12.05 48 0
2906616 크롬 localhost 접속문제 해결 가능하신분 [4] ㅇㅇ(221.158) 12.05 84 3
2906615 쿠팡 보이콧으로 네이버 쇼핑쓰는데 진짜 개느리구나 [5] 헬마스터갤로그로 이동합니다. 12.05 66 0
2906614 일본거주 11년차 외노자 일어 써봤습니다 [3] 프로외노자갤로그로 이동합니다. 12.05 69 0
2906613 37세 백엔드!! [4] 홍길동갤로그로 이동합니다. 12.05 75 0
2906612 저번달까지 현직자였는데 ai가 대체 못하는거 맞다. 프갤러(221.149) 12.05 94 0
2906611 아니 그록 뭐임 ㅋㅋ 프갤러(115.138) 12.05 69 0
2906610 속보 ) 2026년 윈도우12 출시예정-> 출시취소 타이밍뒷.통수한방(1.213) 12.05 43 0
2906609 쿠팡 해지함 (쿠팡이 망해야 한국경제가 산다) [4] 야옹아저씨갤로그로 이동합니다. 12.05 64 2
2906608 나이먹는거보다 저주인것 타이밍뒷.통수한방(1.213) 12.05 33 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2