Gfx GX Fn GXSetTevIndBumpXYZ - wowjinxy/libPorpoise GitHub Wiki

GXSetTevIndBumpXYZ

  • Category: Indirect Texturing
  • Matrix Status: Implemented
  • Matrix Notes: Parity-checked single-stage EMBM helper as canonical GXSetTevIndirect wrapper (GX_ITF_8, GX_ITB_STU, wrap off).
  • Matrix Link: Gfx-GX-API-Matrix

Official SDK (Reference)

  • Manual page: reference/man/gfx/gx/Indirect/GXSetTevIndBumpXYZ.html
  • SDK source: reference/gx/GXBump.c (GXSetTevIndBumpXYZ, around lines 559+)
  • Verified SDK behavior:
    • Convenience helper that forwards to GXSetTevIndirect with:
      • format = GX_ITF_8
      • bias_sel = GX_ITB_STU
      • matrix_sel = matrix_sel (caller-selected)
      • wrap_s = GX_ITW_OFF, wrap_t = GX_ITW_OFF
      • add_prev = FALSE
      • utc_lod = FALSE
      • alpha_sel = GX_ITBA_OFF
    • Uses CHECK_IN_BGN semantics via wrapper/callee path.

libPorpoise Implementation

  • Runtime implementation area: src/gx
  • Public API surface: include/dolphin/gx
  • Current implementation:
    • src/gx/pc_gx.c: GXSetTevIndBumpXYZ matches the SDK forwarding tuple exactly and routes through GXSetTevIndirect.
    • Begin-safe state mutation is inherited from GXSetTevIndirect.

SDK vs Porpoise Diff

  • Signature parity:
    • SDK: void GXSetTevIndBumpXYZ(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXIndTexMtxID matrix_sel)
    • Porpoise: same
  • Behavioral parity:
    • SDK and Porpoise helper behavior matches.
  • Known divergence:
    • None for this helper wrapper.

Validation Checklist

  • GX demo coverage checked (single-stage EMBM helper setup)
  • Pikmin usage path checked (indirect helper forwarding path)
  • Matrix status updated if needed
  • Notes updated with concrete file/function references

Working Notes

  • No runtime patch required for this function; implementation already matched SDK helper behavior.