Gfx GX Fn GXSetVtxDescv - wowjinxy/libPorpoise GitHub Wiki

GXSetVtxDescv

  • Category: Geometry and Vertex
  • Matrix Status: Implemented
  • Matrix Notes: Verified list iteration semantics to GX_VA_NULL; delegates per-entry behavior to GXSetVtxDesc.
  • Matrix Link: Gfx-GX-API-Matrix

Official SDK (Reference)

  • Manual page: E:/GPT5/Porpoise_SDK/libPorpoise/reference/man/gfx/gx/Geometry/GXSetVtxDescv.html
  • Related pages:
    • E:/GPT5/Porpoise_SDK/libPorpoise/reference/man/gfx/gx/Geometry/GXSetVtxDesc.html
    • E:/GPT5/Porpoise_SDK/libPorpoise/reference/man/gfx/gx/Geometry/GXClearVtxDesc.html
  • SDK source parity check area: E:/GPT5/ACGC-PC-Port-Debug-Stuff/src/static/dolphin/gx/GXAttr.c
  • Notes:
    • Manual signature: void GXSetVtxDescv(GXVtxDescList* attr_list).
    • Manual semantics: consumes {attr,type} pairs until GX_VA_NULL.
    • SDK source behavior: loops list and applies same descriptor semantics as GXSetVtxDesc for each entry.

libPorpoise Implementation

  • Runtime implementation area: E:/GPT5/Porpoise_SDK/libPorpoise/src/gx/pc_gx.c
  • Legacy implementation area: E:/GPT5/Porpoise_SDK/libPorpoise/src/gx/GXGeometry.cpp
  • Public API surface: E:/GPT5/Porpoise_SDK/libPorpoise/include/dolphin/gx/GXGeometry.h
  • Notes:
    • Signature matches manual (GXVtxDescList*).
    • Iterates until GX_VA_NULL sentinel.
    • Uses GXSetVtxDesc per entry, so NRM/NBT mutual-exclusion parity is preserved.
    • Null list is ignored safely on PC backend (SDK would assert in debug builds).

SDK vs Porpoise Diff

  • Signature parity:
    • SDK manual: void GXSetVtxDescv(GXVtxDescList* attr_list)
    • Porpoise: same
  • Behavioral parity:
    • SDK: apply list entries in order until GX_VA_NULL
    • Porpoise: same
  • Known divergence:
    • SDK debug path asserts on null/invalid parameters; PC backend fails soft instead.

Validation Checklist

  • GX demo coverage checked
  • Pikmin usage path checked
  • Matrix status/notes reviewed
  • Notes updated with concrete file/function references

Working Notes

  • Keep in sync with GXSetVtxDesc parity; this function is a list wrapper, not an independent descriptor interpreter.