docs(terrain): recover shade cache allocation layout
This commit is contained in:
+13
-1
@@ -1602,6 +1602,18 @@ the dispatcher calls a distinct object at byte offset `3244`. Its virtual slot
|
|||||||
`+316` and its exclusive key count at `+320`: the first dword of an entry is a
|
`+316` and its exclusive key count at `+320`: the first dword of an entry is a
|
||||||
stored-record pointer and its byte at `+4` selects a 212-byte profile bank. A
|
stored-record pointer and its byte at `+4` selects a 212-byte profile bank. A
|
||||||
key outside that count, or an entry pointer below `0x1000`, fails the lookup.
|
key outside that count, or an entry pointer below `0x1000`, fails the lookup.
|
||||||
|
|
||||||
|
The static constructor now identifies this object as the embedded `CLandscape`
|
||||||
|
subobject whose vtable is `Terrain.dll` RVA `0x643D0`. It installs that vtable
|
||||||
|
at parent offset `+316`, allocates the entry table at parent `+632` (subobject
|
||||||
|
`+316`) as `0x1f40` bytes / 1,000 eight-byte entries, and initializes its count
|
||||||
|
to zero. The profile-bank region starts at subobject `+332`: every one of the
|
||||||
|
100 banks has a 116-byte header followed by a 96-byte initialized stream, hence
|
||||||
|
the recovered 212-byte stride. The byte selected from each table entry is
|
||||||
|
therefore a bank index into a constructor-owned, fixed 100-bank region. This
|
||||||
|
proves the cache's allocation layout; it does **not** yet identify the code that
|
||||||
|
populates individual entry records from map resources.
|
||||||
|
|
||||||
On success the method returns the shared result view at cache offset `+24`, not
|
On success the method returns the shared result view at cache offset `+24`, not
|
||||||
the stored-record pointer and not a WEAR row. Thus the dispatcher's observed
|
the stored-record pointer and not a WEAR row. Thus the dispatcher's observed
|
||||||
flags at result-view `+60`, secondary selector `+24`, optional byte `+88`,
|
flags at result-view `+60`, secondary selector `+24`, optional byte `+88`,
|
||||||
@@ -1610,7 +1622,7 @@ referenced state block `+104`, three signed shorts `+108`, and another selector
|
|||||||
Mode `0x0200` (`512`) only validates the key in the recovered path; mode
|
Mode `0x0200` (`512`) only validates the key in the recovered path; mode
|
||||||
`0x5011` includes the recovered selector-table transfer and mode `0x5110`
|
`0x5011` includes the recovered selector-table transfer and mode `0x5110`
|
||||||
includes the recovered bank-byte transfer. The meanings of their remaining
|
includes the recovered bank-byte transfer. The meanings of their remaining
|
||||||
bits, the cache builder, and the result fields remain unrecovered, so the Vulkan
|
bits, record population, and the result fields remain unrecovered, so the Vulkan
|
||||||
path must not map any of them to invented pipeline state.
|
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,
|
||||||
|
|||||||
Reference in New Issue
Block a user