* Added explicit StopCurrentRenderPass() before all transfer ops
vkCmdCopyImage / vkCmdPipelineBarrier / vkCmdBlitImage / vkCmdResolveImage cannot be called inside a render pass and would report VUID-vkCmdXXX-renderpass validation errors
* Only bind RenderTargets when we actually have any
Prevents loading defaults which can cause validation errors
* Add missing state transitions for DoF and Bloom
So they don't interrupt the renderpass with an implicit transition via StopCurrentRenderPass.
* SetupForDraw() early return when render area is 0
Avoid VUID-VkRenderingInfo-None-08994 - Zero-extent render
Happened when minimizing / resizing
* Set correct mip level when binding and transitioning render targets
Could cause VUID-VkImageMemoryBarrier-oldLayout-01197 for render targets
And VUID-vkCmdDraw-None-09600 when rendering cube maps
* Remove unnecessary static singletons in MainMenu code
* Empty SceneWorld delete queues during shutdown
* Dresser cancel async load operation on destroy
* Use reflection to null references to static native resources on shutdown
This way we don't have to remember doing this manually.
* Fix SoundOcclusionSystem using static lists to reference resources
* Sound System: Use weak references to refer to scenes
* Cleanup static logging listeners that kept strong refs to panels
* UISystem Cleanup, make sure all panel/stylesheet refs are released
* RenderTarget and RenderAttributes shutdown cleanup
* Rework AvatarLoader, ThumbLoader & HTTPImageLoader Cache
First try to go through ResourceLibrary.WeakIndex which might already hold the texture.
If there is no hit, go through a second cache that caches HTTP & Steam API response bytes instead of textures.
We want to cache the response bytes rather than the actual Texture, so stuff cached sits in RAM not VRAM.
Before avatars and thumbs would reside in VRAM.
* Fix rendertarget leak in CommandList.Attr.SetValue
GetDepthTarget() / GetColorTarget() return a new strong handle (ref count +1).
We need to DestroyStrongHandle() that ref. So handles don't leak.
* Call EngineLoop.DrainFrameEndDisposables before shutdown
* NativeResourceCache now report leaks on shutdown
* Override Resource.Destroy for native resources, kill stronghandles
* Deregister SceneWorld from SceneWorld.All during destruction
* Ensure async texture loading cancels on shutdown
* SkinnedModelRender bonemergetarget deregister from target OnDisabled
* Clear shaderMaterials cache during shutdown
* Refactor Shutdown code
Mostly renaming methods from Clear() -> Shutdown()
Adding separate GlobalContext.Shutdown function (more aggressive than GlobalContext.Reset).
Clear some static input state.
* Deregister surfaces from Surface.All in OnDestroy
* RunAllStaticConstructors when loading a mount
* Advanced managed resource leak tracker enabled via `resource_leak_tracking 1`
Works by never pruning the WeakTable in NativeResourceCache.
So we can check for all resources if they are still being held on to and log a callstack.
* Make SpriteBatchSceneObject shaders static, so we don't create them per instance
* Avoid per frame shader/material creation in PostProcessing
* Avoid per frame shader/material creation in HudPainter
* Move a few more compute shaders into static members
* Reduce allocations in NormalizeFilename
* Reduce string allocations in Material.FromShader