Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Memory Leaks in SubViewport When Window is Minimized #90030

Open
MizunagiKB opened this issue Mar 30, 2024 · 3 comments
Open

Memory Leaks in SubViewport When Window is Minimized #90030

MizunagiKB opened this issue Mar 30, 2024 · 3 comments

Comments

@MizunagiKB
Copy link

Tested versions

4.2.stable

System information

Godot v4.2.stable - macOS 14.3.1 - Vulkan (Forward+) - integrated Apple M2 Max - Apple M2 Max (12 Threads)

Issue description

I've observed that memory leaks occur when explicit initialization (setting to transparent_bg) is performed every time when using SubViewport.
This issue could lead to significant performance issues and needs to be resolved.

Additional Information:
This issue is not specifically related to whether the SubViewport is connected to a node.
It seems to occur regardless of the node connection status of the SubViewport.

This can be reproduced with the following code:

extends Node2D

var v: SubViewport

func _ready():
    v = SubViewport.new()
    
func _process(_delta):
    v.transparent_bg = true

mleak_vp_transparent_bg

This issue was discovered during the investigation of the following issue:
#89651
#90017

Steps to reproduce

To reproduce this issue, execute the mleak_vp_transparent_bg.tscn file included in the attached project.

While the application is running, open the Debugger/Monitors in the Editor and pay attention to the value of Memory/Static.

This value will gradually increase while the application being debugged is minimized.
When the application is restored from minimization, the increased memory is released.

Minimal reproduction project (MRP)

mleak_vp_transparent_bg.zip

@Sauermann
Copy link
Contributor

I have tried the MRP on Windows 10 with v4.3.dev.custom_build [29b3d9e] and there seems to be no memory leak.

image

@clayjohn
Copy link
Member

clayjohn commented Apr 2, 2024

#90055 will fix this MRP. But the issue should still be reproducible with the following code:

extends Node2D

var v: SubViewport

func _ready():
    v = SubViewport.new()
    
func _process(_delta):
    v.transparent_bg = !v.transparent_bg 

@MizunagiKB Can you test with the code I provided here and let me know if the leak looks the same?

@MizunagiKB
Copy link
Author

@clayjohn I have executed a build applying the specified pull request #90055.

Upon applying the pull request, the memory leak that I reported in my script no longer occurred.

fig1_ss


However, the same memory leak occurred in the provided script (the code that changes the transparent_bg value every frame).

fig2_ss

In the screenshot, the renderer is set to Mobile, but the same result was observed with Forward+.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants