Skip to content

v0.0.156

Choose a tag to compare

@github-actions github-actions released this 17 Aug 17:17
· 119 commits to main since this release

rePIU v0.0.156

이전 릴리스 v0.0.155 이후의 변경입니다. 이번 릴리스는 pumpitp3 타이틀 화면에서
확인된 paletted texture 갱신 병목을 제거하면서, palette가 기존 P_8/AP_88 texture에
반영되는 Glide 의미를 유지합니다.

Paletted texture 지연 갱신

  • palette download마다 보존된 모든 P_8/AP_88 texture를 CPU에서 RGBA로 다시 디코드하고
    glTexImage2D로 전량 재업로드하던 eager refresh를 제거했습니다.
  • Win32 OpenGL backend는 실제 palette byte가 바뀔 때만 generation을 증가시킵니다.
    byte-identical palette download는 generation 변경과 texture 작업을 모두 생략합니다.
  • 각 indexed texture는 마지막 적용 palette generation을 기록합니다. textured draw에서
    실제로 sampling되는 현재 texture가 오래된 경우에만 보존 index source를 다시 디코드하고
    기존 GPU allocation을 glTexSubImage2D로 갱신합니다.
  • palette 변경은 다음 sampling 전에 반영되므로 Task 483의 texture/palette 독립 수명과
    P_8 불투명 alpha, AP_88 texel alpha 계약을 유지합니다.

성능 계측

  • 종료 texture census에 palette download의 전체/변경/동일 횟수를 추가했습니다.
  • 지연 갱신 성공/실패 수, source/RGBA byte, CPU decode 시간과 OpenGL upload 호출 시간을
    출력합니다.
  • 기존 Task 483 palette 성능 TODO를 이번 구현과 문서로 완료했습니다.

검증

  • Win32 x86 Debug/Release의 repiu_aot_probe와 repiu 빌드가 성공했습니다.
  • pumpitp3/PIU/PIU.EXE 전체 AOT probe가 두 구성에서 exit 0으로 통과했습니다.
  • glide_texture_table_stack_probe=pass,
    glide_texture_census_palette_refresh_profiled=true,
    glide_texture_census_all=true를 확인했습니다.
  • 사용자가 실제 pumpitp3 타이틀 화면에서 성능 개선을 확인했습니다.
  • 기존 C4819 코드 페이지 경고와 LNK4217 경고만 남았습니다.

rePIU v0.0.156

Changes since v0.0.155. This release removes the paletted-texture refresh
bottleneck observed on the pumpitp3 title screen while preserving the Glide
semantics that make a new palette affect existing P_8/AP_88 textures.

Lazy paletted-texture refresh

  • Removed the eager path that CPU-decoded every retained P_8/AP_88 texture to RGBA
    and re-uploaded the entire set through glTexImage2D on every palette download.
  • The Win32 OpenGL backend advances a generation only when palette bytes actually
    change. A byte-identical download skips both generation advance and texture work.
  • Each indexed texture records its applied palette generation. A textured draw
    decodes retained indices and calls glTexSubImage2D only when the currently
    sampled texture is stale.
  • Palette changes remain visible before the next sample, retaining Task 483's
    independent texture/palette lifetime, opaque P_8 alpha, and AP_88 texel-alpha
    contracts.

Performance telemetry

  • The ending texture census now reports total, changed, and identical palette
    downloads.
  • It also reports lazy-refresh successes/failures, source/RGBA bytes, CPU decode
    time, and OpenGL upload-call time.
  • The deferred Task 483 palette-performance TODO is complete in this implementation
    and its documentation.

Verification

  • Win32 x86 Debug/Release builds of repiu_aot_probe and repiu succeeded.
  • The complete pumpitp3/PIU/PIU.EXE AOT probe exited zero in both configurations.
  • glide_texture_table_stack_probe=pass,
    glide_texture_census_palette_refresh_profiled=true, and
    glide_texture_census_all=true were confirmed.
  • The user confirmed the performance improvement on the real pumpitp3 title
    screen.
  • Only the existing C4819 code-page and LNK4217 warnings remain.