← 목록
기타 2026-06-13 2KB 읽기 2분

Coherence Step 3: win_type 매핑 + 게스트 RLE 인코더

개요

CrownyOS Coherence 브릿지 Step 3. 두 갭 해소:

  1. win_type 하드코딩(0) → CWindow.type 실제 매핑
  2. 게스트 RLE 인코더 추가 (host_caps & COH_CAP_RLE 분기, 팽창 폴백)

변경 파일

  • /Users/ef/CrownyOS/crownyc/coh_comp.h — CWin에 int type 필드 추가
  • /Users/ef/CrownyOS/crownyc/compositor_coh.c — coh_comp_window_at에 out->type = w->type 복사
  • /Users/ef/CrownyOS/crownyc/coherence_glue.cout->win_type = (uint8_t)(w.type & 0x07) (하드코딩 0 제거)
  • /Users/ef/CrownyOS/crownyc/coherence_guest.c — RLE 인코더 함수 + coh_guest_send_frame RLE 분기
  • /Users/ef/CrownyOS/crownyc/coh_fullstack_test.c — win_type 단언 + RLE 라운드트립 3케이스
  • /Users/ef/CrownyOS/crownyc/libs/RLE인코더.한선 — 한선씨 동반 (인코드+디코드+자가검증)

구현 요점

RLE 포맷

[count:u16 LE][pixel:u32 LE] 런 반복 — host coh_host_rle_decode와 1:1 대칭. 압축 결과가 raw_bytes 이상이면 비압축 폴백 (COH_FLAG_COMPRESSED 미설정).

win_type 처리

CWin은 "값 복사 미러"라 필드 추가가 CWindow 오프셋에 영향 없음. compositor_coh.c가 복사, coherence_glue.c가 & 0x07 마스킹으로 0~7 범위 보장.

잔여 이슈

  • 실제 E2E 실행 검증이 Bash 권한 부재로 못 됨 — 사용자가 직접 coh_test.sh 실행 필요
  • COH_GUEST_TEST 셀프테스트도 직접 확인 필요

실행 검증 명령

bashcd /Users/ef/CrownyOS/crownyc

# E2E 풀스택
cc -I. -I/Users/ef/crowny-vm/coherence coh_fullstack_test.c compositor_coh.c coherence_glue.c coherence_guest.c /Users/ef/crowny-vm/coherence/coherence_host_core.c -o /tmp/cfs && /tmp/cfs

# 한선씨 동반
CROWNY_STD=libs ./hanseonc_high libs/RLE인코더.한선 > /tmp/rle.toau 2>/tmp/rle.err && ./crownyc run /tmp/rle.toau