|
Deki 0.20.2
임베디드 디스플레이와 데스크톱을 위한 모듈식 C++ 2D 엔진
|
보드를 빠르게 만드는 것의 대부분은 자동으로 정해집니다. 이 페이지는 무엇이 정해지는지, 무엇을 설정해야 하는지, 숫자를 어떻게 읽는지 설명합니다.
보드 패키지(예: deki-lilygo-boards)에는 그 보드가 가장 잘 돌아가는 설정이 들어 있습니다. 보드를 타깃으로 고르면 그 설정이 쓰이며, 따로 조정할 것은 없습니다.
| 보드 | 모든 데모 장면 | 프레임 |
|---|---|---|
| LilyGO T-Display S3 AMOLED | 59.6 fps (패널의 새로 고침) | 찢어지지 않음 (TE 선) |
| LilyGO T-Deck Plus | 60 fps | 찢어지지 않음 (패널의 주사선) |
이 페이지의 나머지는 직접 만든 보드를 위한 것이거나, 어떤 장면이 느린 이유를 찾기 위한 것입니다.
모두 게임이 시작될 때 기기에서 정해집니다. 부팅 로그에 각각 한 줄씩, 무엇을 골랐고 왜 골랐는지 나옵니다.
| 항목 | 정해지는 방식 |
|---|---|
| 프레임 전체 또는 스트립 | 프레임 버퍼가 내부 RAM에 여유 있게 들어가면 프레임 전체, 들어가지 않으면 스트립입니다. 스트립은 몇 행 또는 몇 열씩 내부 RAM에 그리므로, 프레임 전체를 PSRAM에 그리는 것보다 훨씬 빠릅니다. (렌더링 설정 frameMode) |
| 다른 코어에서 보내기 | 듀얼 코어 칩에 프레임 사본 두 개 분량의 메모리가 있으면, 다음 프레임을 그리는 동안 각 프레임을 보냅니다. 그렇지 않으면 그리는 대로 보냅니다. (asyncPresent, 켜짐) |
| 티어링 | TE 선이 연결되어 있으면(tePin) 프레임이 패널의 새로 고침 신호를 따릅니다. 없으면 대신 패널의 주사선을 다시 읽습니다(scanlineSync, 켜짐). 다시 읽을 수 없는 패널은 그리는 대로 보내며, 찢어질 수 있습니다. |
이것들은 보드의 배선을 나타내며, 기기가 스스로 알아낼 수 없습니다.
| 설정 | 설정할 값 |
|---|---|
| controller, busType과 핀 | 보드 회로도에 적힌 대로. |
| spiWriteHz (parallelWriteHz) | 패널이 받는 가장 빠른 클럭. 대부분의 ST7789 모듈은 80 MHz를 받습니다. 병렬 버스에서는 20 MHz가 안전합니다. |
| tePin | 패널의 TE 출력이 연결된 GPIO(연결되어 있다면). 티어링을 막는 가장 좋은 방법입니다. |
| readsOnMosi | 패널이 MISO가 아니라 데이터 선으로 응답하면 켭니다(T-Deck가 그렇습니다). TE 선이 없을 때만 의미가 있습니다. |
| initSequence | 컨트롤러 기본값으로 화면이 이상할 때(색이 바래거나, 이전 이미지가 남음) 쓰는 패널 모듈 자체의 시작 절차. |
| 설정 | 바꿀 때 |
|---|---|
| dirtyTileTracking | 화면 대부분이 멈춰 있고 매 프레임 화면 전체에 그리는 것이 없을 때 켭니다(화면 전체 배경은 화면 전체에 그립니다). 그러면 바뀐 부분만 보냅니다. |
| bandRows | 스트립의 크기. 클수록 장면을 순회하는 횟수가 줄지만 내부 RAM을 더 씁니다. 대부분의 화면에는 40이 맞습니다. |
| frameMode | 자동으로 둡니다. 자기 보드에서 다른 모드가 더 빠르다고 측정한 경우만 예외입니다. |
거의 필요 없는 것: usePsram과 doubleBuffer(엔진이 프레임 전체를 그리는 위치), spiReadHz(T-Deck의 ST7789는 10 MHz에서 안정적으로 읽힘).
시리얼 포트의 DEKI:STATS나 device_stats 도구가 한 줄을 출력합니다:
DEKI:PROFILE은 그리기를 컴포넌트별, 전송 경로별로 나누어 보여 주며, 장면에서 가장 비용이 큰 것을 찾는 데 씁니다.
패널의 새로 고침(59.6~60.3 Hz)에 고정된 프레임 속도가 찢어지지 않는 보드가 낼 수 있는 최선입니다. 프레임은 찢어지는 대신 새로 고침을 기다립니다.