Gfx GX Fn GXSetTevIndWarp - wowjinxy/libPorpoise GitHub Wiki
GXSetTevIndWarp
- Category:
Indirect Texturing
- Matrix Status:
Implemented
- Matrix Notes: Parity-checked convenience wrapper over
GXSetTevIndirect with canonical signed-bias and replace/wrap mapping.
- Matrix Link: Gfx-GX-API-Matrix
Official SDK (Reference)
- Manual page:
reference/man/gfx/gx/Indirect/GXSetTevIndWarp.html
- SDK source:
reference/gx/GXBump.c (GXSetTevIndWarp, around lines 390+)
- Verified SDK behavior:
- Computes
wrap = replace_mode ? GX_ITW_0 : GX_ITW_OFF.
- Forwards to
GXSetTevIndirect using:
format = GX_ITF_8
bias = signed_offset ? GX_ITB_STU : GX_ITB_NONE
wrap_s = wrap_t = wrap
add_prev = FALSE
utc_lod = FALSE
alpha_sel = GX_ITBA_OFF
- Uses
CHECK_IN_BGN semantics (through the call path).
libPorpoise Implementation
- Runtime implementation area:
src/gx
- Public API surface:
include/dolphin/gx
- Current implementation:
src/gx/pc_gx.c: GXSetTevIndWarp matches SDK wrapper mapping exactly and forwards to GXSetTevIndirect.
- Begin-safe behavior is inherited via
GXSetTevIndirect (which handles pending-begin flush).
SDK vs Porpoise Diff
- Signature parity:
- SDK:
void GXSetTevIndWarp(GXTevStageID, GXIndTexStageID, GXBool, GXBool, GXIndTexMtxID)
- Porpoise: same
- Behavioral parity:
- SDK and Porpoise both implement identical wrapper semantics over
GXSetTevIndirect.
- Known divergence:
- None for wrapper behavior.
Validation Checklist
Working Notes
- No runtime patch required; implementation already matched SDK behavior.