mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-05-02 15:53:51 +00:00
fix: eliminate 490ms transport-doodad stall and GPU device-loss crash
Three root causes identified from wowee.log crash at frame 134368: 1. processPendingTransportDoodads() was doing N separate synchronous GPU uploads (vkQueueSubmit + vkWaitForFences per texture per doodad). With 30+ doodads × multiple textures, this caused the 489ms stall in the 'gameobject/transport queues' update stage. Fixed by wrapping the entire batch in beginUploadBatch()/endUploadBatch() so all texture layout transitions are submitted in a single async command buffer. 2. Game objects whose M2 model has no geometry/particles (empty or unsupported format) were retried every frame because loadModel() returns false without adding to gameObjectDisplayIdModelCache_. Added gameObjectDisplayIdFailedCache_ to permanently skip these display IDs after the first failure, stopping the per-frame spam. 3. renderM2Ribbons() only checked ribbonPipeline_ != null, not ribbonAdditivePipeline_. If additive pipeline creation failed, any ribbon with additive blending would call vkCmdBindPipeline with VK_NULL_HANDLE, causing VK_ERROR_DEVICE_LOST on the GPU side. Extended the early-return guard to cover both ribbon pipelines.
This commit is contained in:
parent
367b48af6b
commit
f855327054
3 changed files with 20 additions and 1 deletions
|
|
@ -3565,7 +3565,7 @@ void M2Renderer::updateRibbons(M2Instance& inst, const M2ModelGPU& gpu, float dt
|
|||
// Ribbon rendering
|
||||
// ---------------------------------------------------------------------------
|
||||
void M2Renderer::renderM2Ribbons(VkCommandBuffer cmd, VkDescriptorSet perFrameSet) {
|
||||
if (!ribbonPipeline_ || !ribbonVB_ || !ribbonVBMapped_) return;
|
||||
if (!ribbonPipeline_ || !ribbonAdditivePipeline_ || !ribbonVB_ || !ribbonVBMapped_) return;
|
||||
|
||||
// Build camera right vector for billboard orientation
|
||||
// For ribbons we orient the quad strip along the spine with screen-space up.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue