English
-
Fix updater manifest staging for subsequent transactions using the new
StageArchive; the focused manifest transaction check passed three scenarios with zero failures. This does not repair already mixed installations, remove old resources or establish the unresolved Issue #15 save-flow hang. See Issue #14–#16 triage for the #14–#16 investigation boundaries. -
For Issue #16, add a narrow particle-material compatibility fallback for the zero-entry
xf_shd_aniflz.freezeshader case;LoParticleMaterialCompatTestcompiled and ran with zero failures. Final-branch D3D12/local Asia Disc 3 validation completed the target freeze sequence and subsequent map229/menu progression. Vulkan, other-region coverage and player acceptance remain pending. See the triage record. -
Build and validate the merged local
mainat source version 0.5.6 with normal CMake Release configuration: the D3D12/local Asia Disc 3 target freeze sequence, map229/menu progression and visible movement all passed on the local binary. Release CI completed the formal build with the matching PPC artifact. The downloaded package passed hash/CRC checks for all 50 manifest files and clean source-version provenance; gameplay validation of the local binary is retained separately. Detailed hashes and boundaries are in current status. -
Bound the renderer's vertex metadata cache to 65,536 reserved entries. Full
caches evict from at most 16 rotating candidates, eliminating the old
unordered_mapgrowth path: the diagnostic capture measured a 41.8241 ms
insertion during a 262,144-to-524,288 bucket rehash, while all 495 endian
copies in that frame took 0.0254 ms.LoVertexCacheTestpassed 3,569,548
checks once. Three single Hidden Uhra captures (old map, bounded cache and
the same executable with input/shot controls moved to TEMP) retained
original_saves_changed=false; the final all-city sample reached mean 59.651
FPS, 1% low 45.989 FPS and worst accepted-present 43.0117 ms. The fixed
1600–2800 window reached 59.918 FPS mean and 54.495 FPS 1% low, with zero
draw over-budget samples and zero rehashes. This meets the requested mean
threshold on the route, but is not a locked 60 FPS result, strict S4 pass,
whole-game validation or player acceptance. These changes are included in
v0.5.6; the measurement build is source version
0.5.4. See city vertex-cache follow-up. -
Keep
LO_VERTEX_TIMINGdisabled by default; the added previous-swap,
post-present and command-processor-idle fields are diagnostic measurements,
not optimization savings. The bounded run's 412.9283 ms post-present sample
fell to 0.4193 ms after moving the driver input/screenshot controls to TEMP;
this does not establish a Syncthing filesystem or scheduler root cause. -
Use a PPC prebuilt library by default in the release workflow.
release.ymlrestores a
sharded library bundle from the immutable privateppc/<key>branch selected by
the computed inputs/compiler key, while
manualrebuild_ppc: trueretains the source-compilation path. Local builds can
setLO_PREBUILT_PPC_DIRto importLostOdysseyRecompLib.liband skip PPC C++
compilation; clearing it restores the normal source build. The bundle is kept
in the private input repository and is not a public release artifact. -
Add
tools/release/ppc_prebuilt.pyfor incremental PPC export, bundle restore
and receipt/hash checks. The 13 synthetic bundle checks, local Release/x64
clang-cl PPC export and isolated prebuilt CMake checks pass. The four-shard
library is 138,454,798 bytes with SHA256
ba3e4c4dff009d6d8e844c007186a6e5040266875bca6423f8fe26f8d27fb21b; private
commita6cd91ea35261dd202b78e93b4acb65973369d07was read back and consumed by Release CI.
The CI-compatible cache preserves the original library and records five line-ending
and fourteen symlink-representation differences; all 250 generated outputs,
471 PPC headers and the Release compile contract are identical. Hosted Release CI
and package verification passed; user acceptance remains separate. -
Add opt-in local PPC auto-sync. Enable it with local Git config
git config --local lo.ppcAutoSync true; the CMake option reads that setting,
and an existing cachedOFFvalue may be reconfigured with
-DLO_PPC_AUTO_SYNC=ON. This does not bypass the script's local opt-in. The
post-build hook invokesppc_sync.py sync --already-built; ordinary contributors remain off by default. Matching input/compiler
hashes reuse an existing immutable private branch, while changes publish a
newppc/<key>branch with dynamically sized shards of at most 40 MiB. CI, imported libraries and
LO_PPC_SYNC_ACTIVEnever upload. The auto-sync source is pushed to
github/main as2c0456c.
Hosted PPC prebuilt tests
passed; hosted Release CI and package verification also passed. Nineteen
synthetic sync cases pass. Separately, the built-library roundtrip and
change-during-build checks pass, and the real local auto-sync branch/upload
plus same-key unchanged check pass. This workflow is included in v0.5.6 and was absent
from published v0.5.4. -
Add a 2-slot D3D12 command-list ring, raise the D3D12 descriptor-set
limit to 1800, reuse 2D texture descriptor sets, bind unused 2D/3D/cube
banks to static dummy sets, use BatchCache last-hit for texture sets,
and skip unchanged constant uploads. Header fixtures pass: LoRenderBatchPolicyTest
22/22 and LoTextureDescriptorCacheTest 12/12 (including a 2000 last-hit
loop). Isolated user01 Uhra city walks on two local RelWithDebInfo
EXEs are diagnostic only (ring SHA-256
5917F389F9FD9E88FDEC6DBD3437ADE76D415F1653FB6924575ACCF478C1B9AD
stable city about 57.7 fps, 49.1–60; dummy SHA-256
02E303F1462546FB98236446E24B2397DF762179923DE1D7C02852317ED37BC4
about 56.0 fps, 28–60, bind-path only with no fps win versus the ring
run). Published v0.5.4 city diagnostic was 31–44 fps with about 5.2
batches. The two EXEs are not a laboratory A/B. Commitsb91d279anded90fe9
are included in v0.5.6; the cited measurements remain historical diagnostics,
with no player acceptance or 60 fps claim. See
GPU ring compare. -
Move the vertex dword endian copy helper into
geometry_prepare.hand add an
SSSE3 four-dword path for endian modes 1/2/3, with scalar tails/fallbacks and
memcpyfor endian 0. The focused fixture passed 16,685,865 checks,
including unaligned and inaccessible-page boundary cases. A same-harness
Hidden city run completed withoriginal_saves_changed=false; the SIMD run
still had a 41.736 ms vertex hitch, a separate 47.467 ms flush sample and a
779.572 ms load-in present interval, so the change does not establish a
performance gain or 60 fps acceptance. Both redirected-log runs avoided the
earlier 200–400 ms flush class, but residual stalls remain. The implementation
is included in v0.5.6; the cited local measurement build retains source version
0.5.4. See city 60 FPS handoff.
简体中文
-
修复使用新版
StageArchive的后续更新事务中的 manifest staging;manifest 事务定向检查 3 个场景零失败。该修复不会自动修复已经混装的安装、清理旧资源,也不能证明 #15 存档流程卡顿的原因。#14–#16 调查边界见分流记录。 -
针对 Issue #16 的零项
xf_shd_aniflz.freezeshader 情况增加窄范围 particle-material 兼容回退;LoParticleMaterialCompatTest已编译并运行且零失败。最终分支 D3D12/亚洲 Disc 3 验证已完成目标冻结过场及后续 map229/菜单流程。Vulkan、其他地区覆盖和玩家验收仍待完成,见分流记录。 -
使用普通 CMake Release 配置成功构建并验证合入本地
main的 0.5.6 源码:本地二进制已通过 D3D12/亚洲 Disc 3 目标冻结过场、map229/菜单流程和可见移动。Release CI 已使用匹配的 PPC artifact 完成正式构建;下载的安装包通过全部 50 个 manifest 文件的 hash/CRC 及干净源码版本 provenance 检查。本地二进制的游戏实测记录保持独立。详细 hash 和边界见当前状态。 -
将渲染器顶点 metadata cache 限制为预留 65,536 项。缓存满时最多检查 16 个轮转候选并淘汰,消除了旧
unordered_map扩容路径:诊断捕获中一次 262,144 到 524,288 bucket 的 rehash 插入耗时 41.8241 ms,
而该帧全部 495 次 endian copy 合计仅 0.0254 ms。LoVertexCacheTest一次通过 3,569,548 项检查。
三次单独 Hidden 乌拉住宅区捕获(旧 map、有界缓存、以及将输入/截图控制移到 TEMP 的同一 EXE)均为
original_saves_changed=false;最终全城市样本平均 59.651 FPS、1% low 45.989 FPS,最差 accepted-present
间隔 43.0117 ms。固定 1600–2800 窗口平均 59.918 FPS、1% low 54.495 FPS,draw 超预算为 0、rehash 为 0。
这满足该路线请求的平均帧率门槛,但不能称为全程锁 60 FPS、严格 S4 通过、全游戏验证或玩家验收。
这些改动包含在 0.5.6 中;测量构建仍为 source version 0.5.4。见城市 vertex-cache 后续记录。 -
LO_VERTEX_TIMING默认关闭;新增的 previous-swap、post-present 和 command-processor-idle 字段是诊断测量,
不是优化收益。有界缓存运行中的 412.9283 ms post-present 样本,在将驱动输入/截图控制移到 TEMP 后降至
0.4193 ms;这不能证明 Syncthing 文件系统或调度是根因。 -
发布流程默认使用 PPC 预编译库。
release.yml根据输入/编译参数 key 从私有
不可变的ppc/<key>branch 恢复分片库;手动设置rebuild_ppc: true仍使用源码编译
路径。本地构建可设置LO_PREBUILT_PPC_DIR导入LostOdysseyRecompLib.lib
并跳过 PPC C++ 编译;清除该变量即可恢复普通源码构建。分片库保存在私有输入
仓库中,不作为公共发布产物。 -
增加
tools/release/ppc_prebuilt.py,支持增量导出 PPC 库、恢复 bundle 以及
receipt/hash 校验。13 项合成 bundle 检查、本地 Release/x64 clang-cl PPC
导出和隔离 prebuilt CMake 检查均已通过。四片库大小为 138,454,798 字节,SHA256
为ba3e4c4dff009d6d8e844c007186a6e5040266875bca6423f8fe26f8d27fb21b;私有
commita6cd91ea35261dd202b78e93b4acb65973369d07已远端读回,并由 Release CI 实际使用。
CI 兼容缓存保留原库,记录五项行尾及十四项符号链接表示差异;全部 250 个生成文件、471 个 PPC 头文件和
Release 编译契约完全相同。托管 Release CI 和包检查已通过;用户验收保持独立。 -
增加可选的本地 PPC 自动同步。必须先用 Git 本地配置
git config --local lo.ppcAutoSync true启用;CMake 选项读取该设置,已有缓存
为 OFF 时需重新配置并传入-DLO_PPC_AUTO_SYNC=ON,不能绕过脚本授权。post-build
hook 调用ppc_sync.py sync --already-built;普通贡献者默认关闭。输入与编译参数
hash 相同则复用已有不可变私有 branch,变化时创建新的ppc/<key>branch 并上传每片
不超过 40 MiB 的动态分片。CI、导入库和
LO_PPC_SYNC_ACTIVE不会上传。auto-sync 源码已推送到 github/main,提交为
2c0456c。托管
PPC prebuilt tests
已通过;托管 Release CI 和包检查也已通过。19 项合成同步用例通过;另外,built-library
roundtrip、change-during-build、真实本地自动同步 branch/上传及同 key unchanged
检查均已通过。该流程包含在 v0.5.6 中,此前未包含在已发布的 v0.5.4 中。 -
增加 D3D12 双槽 command-list 环缓冲,将 D3D12 描述符集上限提到 1800,
复用 2D 纹理描述符集,未使用的 2D/3D/cube bank 绑定静态 dummy 集,
纹理集使用 BatchCache last-hit,并跳过未变化的常量上传。头文件夹具通过:
LoRenderBatchPolicyTest 22/22、LoTextureDescriptorCacheTest 12/12
(含 2000 次 last-hit 循环)。两份本地 RelWithDebInfo EXE 的隔离
user01 乌拉城市走图仅为诊断(环缓冲 SHA-256
5917F389F9FD9E88FDEC6DBD3437ADE76D415F1653FB6924575ACCF478C1B9AD
稳定段约 57.7 fps,49.1–60;dummy SHA-256
02E303F1462546FB98236446E24B2397DF762179923DE1D7C02852317ED37BC4
约 56.0 fps,28–60,仅 bind 路径,相对环缓冲一轮没有帧率收益)。
已发布 v0.5.4 城市诊断为 31–44 fps、约 5.2 个 batch。两份 EXE 不是
实验室 A/B。提交b91d279、ed90fe9包含在 v0.5.6 中;上述测量仍为历史诊断,
不构成玩家验收,也不宣称 60 fps。
见GPU 环缓冲实测对比。 -
将顶点 dword endian copy helper 移到
geometry_prepare.h,为 endian 1/2/3
增加每次处理四个 dword 的 SSSE3 路径,并保留 scalar 尾部/fallback,endian 0
使用memcpy。专项夹具通过 16,685,865 项检查,包括非对齐和不可访问页边界。
同一 Hidden 城市脚本的复测为original_saves_changed=false;SIMD 运行仍有
41.736 ms 顶点卡顿、另一个 47.467 ms flush 样本以及 779.572 ms 的载入期
present 间隔,因此不能据此宣称性能提升或 60 fps 验收。两次重定向日志运行
都未复现之前 200–400 ms 的 flush 类别,但残余卡顿仍在。该实现包含在 v0.5.6 中,
上述本地测量构建仍保留 source version 0.5.4。见城市 60 FPS handoff。