docs(terrain): decode transient shade cache lookup
This commit is contained in:
+20
-10
@@ -1598,20 +1598,30 @@ The cache boundary is now mechanically separated from the WEAR loader. In the
|
|||||||
`GetShade` object, the `Shade.wea` manager is stored at byte offset `3092`, but
|
`GetShade` object, the `Shade.wea` manager is stored at byte offset `3092`, but
|
||||||
the dispatcher calls a distinct object at byte offset `3244`. Its virtual slot
|
the dispatcher calls a distinct object at byte offset `3244`. Its virtual slot
|
||||||
`+16` receives every type-11 key repeatedly with mode values `512`, `16`,
|
`+16` receives every type-11 key repeatedly with mode values `512`, `16`,
|
||||||
`20497`, and `20752`, and returns a runtime record rather than a WEAR row. The
|
`20497`, and `20752`. The cache object itself has an eight-byte entry table at
|
||||||
dispatcher reads that record's flags at `+60`, a secondary selector at `+24`,
|
`+316` and its exclusive key count at `+320`: the first dword of an entry is a
|
||||||
an optional byte at `+88`, a referenced state block at `+104`, three signed
|
stored-record pointer and its byte at `+4` selects a 212-byte profile bank. A
|
||||||
shorts at `+108`, and another selector at `+112`. Those fields are inputs to
|
key outside that count, or an entry pointer below `0x1000`, fails the lookup.
|
||||||
visibility tests, primitive construction and texture/secondary passes, but the
|
On success the method returns the shared result view at cache offset `+24`, not
|
||||||
cache builder and bit meanings are still not recovered; the Vulkan path must
|
the stored-record pointer and not a WEAR row. Thus the dispatcher's observed
|
||||||
not map any of them to invented pipeline state.
|
flags at result-view `+60`, secondary selector `+24`, optional byte `+88`,
|
||||||
|
referenced state block `+104`, three signed shorts `+108`, and another selector
|
||||||
|
`+112` are materialized lookup state, not yet proven on-disk record offsets.
|
||||||
|
Mode `0x0200` (`512`) only validates the key in the recovered path; mode
|
||||||
|
`0x5011` includes the recovered selector-table transfer and mode `0x5110`
|
||||||
|
includes the recovered bank-byte transfer. The meanings of their remaining
|
||||||
|
bits, the cache builder, and the result fields remain unrecovered, so the Vulkan
|
||||||
|
path must not map any of them to invented pipeline state.
|
||||||
|
|
||||||
A read-only elevated AutoDemo probe confirms that this is a lifecycle boundary,
|
A read-only elevated AutoDemo probe confirms that this is a lifecycle boundary,
|
||||||
not a permanently allocated table: the live `GetShade` singleton is initialized
|
not a permanently allocated table: the live `GetShade` singleton is initialized
|
||||||
and its `Shade.wea` manager pointer is non-null, while its byte-offset `3244`
|
and its `Shade.wea` manager pointer is non-null, while its byte-offset `3244`
|
||||||
cache pointer was null at the sampled instant. Therefore a future runtime
|
cache pointer is normally null. Passive 100-ms sampling of the unattended
|
||||||
implementation must treat cache availability as contextual and cannot dereference
|
AutoDemo caught it briefly at `0x035C64B4`; its relocated vtable is
|
||||||
or prebuild the cache solely from constructor state.
|
`Terrain.dll` RVA `0x643D0` and slot `+16` is RVA `0x10910`, matching the
|
||||||
|
recovered lookup routine. Therefore a future runtime implementation must treat
|
||||||
|
cache availability as contextual and cannot dereference or prebuild the cache
|
||||||
|
solely from constructor state.
|
||||||
|
|
||||||
The static Vulkan bridge now carries each contiguous face run as a separate
|
The static Vulkan bridge now carries each contiguous face run as a separate
|
||||||
draw range keyed by the original packed `material_tag`; it neither reorders
|
draw range keyed by the original packed `material_tag`; it neither reorders
|
||||||
|
|||||||
Reference in New Issue
Block a user