The translation guide for porting rkvdec_vp9_run and its config_*
helpers from the flat vdpu34x register layout to the segmented vdpu381
layout. Each row maps a legacy field to its new location across the
4 segments (common, vp9_param, common_addr, vp9_addr).
Key semantic deltas captured:
- reg02.dec_mode → reg009_dec_mode.dec_mode (VDPU381_MODE_VP9=2)
- Per-ref indexed arrays (reg17_19[i], reg29_31[i], reg37_39[i],
reg48_50[i]) become separate per-frame-slot registers
(last/golden/altref triplets) in vdpu381
- Decode trigger moves from RKVDEC_REG_INTERRUPT=0x004 +
RKVDEC_INTERRUPT_DEC_E mask to VDPU381_REG_DEC_E=0x028 +
VDPU381_DEC_E_BIT (single bit)
- reg09.yuv_virstride dropped (legacy-only convenience field)
- reg51.lastref_yuv_virstride dropped (not in vdpu381 layout)
- NEW fields surfaced: reg103_frame_flags (intra_only, prob_update_en,
refresh_en, allow_high_precision_mv, interp_filter_switch_en),
reg064_cprheader.cprheader_offset, reg105.count_update_en
Also captures 5 open questions for the next code-writing session
(prob-index rotation, delta_prob_base aliasing, RCB integration,
timeout threshold sizing).
This document IS the load-bearing artifact for the Phase 2 backend
implementation. The .c file translation walks this table line-by-line.
Companion to commit 47431635801d (regs header VP9 struct definitions).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>