Merge pull request #74566 from clayjohn/GL-canvas-texture

Avoid copying CanvasTexture when updating proxy
This commit is contained in:
Rémi Verschelde 2023-03-08 08:59:04 +01:00
commit d150bb84a6
No known key found for this signature in database
GPG Key ID: C3336907360768E1
2 changed files with 6 additions and 0 deletions

View File

@ -832,6 +832,8 @@ void TextureStorage::texture_proxy_update(RID p_texture, RID p_proxy_to) {
tex->is_render_target = false;
tex->is_proxy = true;
tex->proxies.clear();
tex->canvas_texture = nullptr;
tex->tex_id = 0;
proxy_to->proxies.push_back(p_texture);
}

View File

@ -1193,6 +1193,9 @@ void TextureStorage::texture_proxy_update(RID p_texture, RID p_proxy_to) {
prev_tex->proxies.erase(p_texture);
}
// Copy canvas_texture so it doesn't leak.
CanvasTexture *canvas_texture = tex->canvas_texture;
*tex = *proxy_to;
tex->proxy_to = p_proxy_to;
@ -1200,6 +1203,7 @@ void TextureStorage::texture_proxy_update(RID p_texture, RID p_proxy_to) {
tex->is_proxy = true;
tex->proxies.clear();
proxy_to->proxies.push_back(p_texture);
tex->canvas_texture = canvas_texture;
tex->rd_view.format_override = tex->rd_format;
tex->rd_texture = RD::get_singleton()->texture_create_shared(tex->rd_view, proxy_to->rd_texture);