aboutsummaryrefslogtreecommitdiff
path: root/docs/tomes/05-render.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/tomes/05-render.md')
-rw-r--r--docs/tomes/05-render.md14
1 files changed, 13 insertions, 1 deletions
diff --git a/docs/tomes/05-render.md b/docs/tomes/05-render.md
index ea8d753..e9ebfe4 100644
--- a/docs/tomes/05-render.md
+++ b/docs/tomes/05-render.md
@@ -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
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.
+
+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
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`,
@@ -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
`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
+bits, record population, 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,