Lazily allocate RIDs for PlaceholderTextures to avoid allocating GPU resources unless used #79874
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes: #77762
This may also fix unreported issues with PlaceholderTexture3D and the PlaceholderTextureLayered types.
The root of the issue here is that Godot instantiates resources to generate documentation in the editor. So the PlaceholderCubemapArray was being allocated on the GPU regardless of whether it was actually being used.
The
get_rid()
function is needed so that the texture types can actually be used. So I added it for PlaceholderTexture3D and PlaceholderTextureLayered. All other texture types lazily allocate RID like this so we don't allocate a texture on the GPU without actually using the texture.