godot/servers/rendering
Stuart Carnie 230adb7511 Add Persistent Buffers
This work is a heavily refactored and rewritten from TheForge's initial
code.

TheForge's original code had too many race conditions and was
fundamentally flawed as it was too easy to incur into those data races
by accident.

However they identified the proper places that needed changes, and the
idea was sound. I used their work as a blueprint to design this work.

This PR implements:

 - Introduction of UMA buffers used by a few buffers
(most notably the ones filled by _fill_instance_data).

Ironically this change seems to positively affect PC more than it does
on Mobile.

Updates D3D12 Memory Allocator to get GPU_UPLOAD heap support.

Metal implementation by Stuart Carnie.

Co-authored-by: Stuart Carnie <stuart.carnie@gmail.com>
Co-authored-by: TheForge team
2025-10-24 08:16:19 +11:00
..
dummy Add Stretch Modes for Splash Screen 2025-10-21 18:20:44 -04:00
environment Move server files into their subfolders 2025-09-30 19:39:39 -07:00
renderer_rd Add Persistent Buffers 2025-10-24 08:16:19 +11:00
storage Overhaul screen space reflections. 2025-10-21 19:23:38 +03:00
instance_uniforms.cpp Implement 2D instance shader parameters 2024-12-17 23:59:16 +01:00
instance_uniforms.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
multi_uma_buffer.h Add Persistent Buffers 2025-10-24 08:16:19 +11:00
renderer_canvas_cull.cpp Merge pull request #85080 from Cykyrios/draw-ellipse 2025-09-23 12:08:51 -05:00
renderer_canvas_cull.h Merge pull request #85080 from Cykyrios/draw-ellipse 2025-09-23 12:08:51 -05:00
renderer_canvas_render.cpp Avoid crashes when engine leaks canvas items and friends 2023-12-20 13:19:46 +01:00
renderer_canvas_render.h Move server files into their subfolders 2025-09-30 19:39:39 -07:00
renderer_compositor.cpp Add Stretch Modes for Splash Screen 2025-10-21 18:20:44 -04:00
renderer_compositor.h Add Stretch Modes for Splash Screen 2025-10-21 18:20:44 -04:00
renderer_geometry_instance.cpp allow moving meshes without motion vectors 2025-04-25 14:25:06 +02:00
renderer_geometry_instance.h allow moving meshes without motion vectors 2025-04-25 14:25:06 +02:00
renderer_scene_cull.cpp fix: set visible layers in multiview camera 2025-10-13 17:31:01 +02:00
renderer_scene_cull.h Overhaul screen space reflections. 2025-10-21 19:23:38 +03:00
renderer_scene_occlusion_cull.cpp Merge pull request #107839 from Rudolph-B/Occlusion-Culling-Optimization 2025-10-03 12:01:13 -05:00
renderer_scene_occlusion_cull.h Merge pull request #107839 from Rudolph-B/Occlusion-Culling-Optimization 2025-10-03 12:01:13 -05:00
renderer_scene_render.cpp fix: set visible layers in multiview camera 2025-10-13 17:31:01 +02:00
renderer_scene_render.h Overhaul screen space reflections. 2025-10-21 19:23:38 +03:00
renderer_viewport.cpp More XR disable for Viewport and export. 2025-10-06 20:15:07 +03:00
renderer_viewport.h More XR disable for Viewport and export. 2025-10-06 20:15:07 +03:00
rendering_context_driver.cpp Disable extra memory tracking by default 2024-08-24 20:52:39 -03:00
rendering_context_driver.h Move server files into their subfolders 2025-09-30 19:39:39 -07:00
rendering_device.compat.inc Use Span<uint8_t> in RenderingDevice allocation APIs to avoid intermediary arrays on calls. 2025-06-18 12:31:48 +02:00
rendering_device.cpp Add Persistent Buffers 2025-10-24 08:16:19 +11:00
rendering_device.h Add Persistent Buffers 2025-10-24 08:16:19 +11:00
rendering_device_binds.cpp Add shader baker to project exporter. 2025-05-27 12:45:27 -03:00
rendering_device_binds.h Add ConstIterator to Dictionary. 2025-03-13 01:28:46 +08:00
rendering_device_commons.cpp Renderer: Move reflect_spirv to RenderingShaderContainer 2025-09-30 06:40:14 +10:00
rendering_device_commons.h Add Persistent Buffers 2025-10-24 08:16:19 +11:00
rendering_device_driver.cpp Add shader baker to project exporter. 2025-05-27 12:45:27 -03:00
rendering_device_driver.h Add Persistent Buffers 2025-10-24 08:16:19 +11:00
rendering_device_graph.cpp Add Persistent Buffers 2025-10-24 08:16:19 +11:00
rendering_device_graph.h Add Persistent Buffers 2025-10-24 08:16:19 +11:00
rendering_light_culler.cpp Style: Enable clang-format's InsertBraces config 2025-01-09 16:46:51 +01:00
rendering_light_culler.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
rendering_method.cpp One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
rendering_method.h Overhaul screen space reflections. 2025-10-21 19:23:38 +03:00
rendering_server.compat.inc Move server files into their subfolders 2025-09-30 19:39:39 -07:00
rendering_server.cpp Add Stretch Modes for Splash Screen 2025-10-21 18:20:44 -04:00
rendering_server.h Add Stretch Modes for Splash Screen 2025-10-21 18:20:44 -04:00
rendering_server_constants.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
rendering_server_default.cpp Rename server "free" functions to "free_rid" to match exposed API 2025-09-30 16:52:25 -07:00
rendering_server_default.h Add Stretch Modes for Splash Screen 2025-10-21 18:20:44 -04:00
rendering_server_globals.cpp One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
rendering_server_globals.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
rendering_shader_container.cpp Add Persistent Buffers 2025-10-24 08:16:19 +11:00
rendering_shader_container.h Add Persistent Buffers 2025-10-24 08:16:19 +11:00
rendering_shader_library.h Optimize Mobile renderer by using FP16 explicitly. 2025-06-09 14:39:35 -03:00
SCsub SCons: Add unobtrusive type hints in SCons files 2024-09-25 09:34:35 -05:00
shader_compiler.cpp Divide screen texture by luminance multiplier in compatibility 2025-10-04 00:19:42 -07:00
shader_compiler.h Move server files into their subfolders 2025-09-30 19:39:39 -07:00
shader_include_db.cpp Adding ability to include build-in include files (precursor to custom shader templates) 2024-11-24 08:47:45 +11:00
shader_include_db.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
shader_language.cpp Merge pull request #111223 from Ivorforce/remove-iterator-include 2025-10-06 09:06:49 -05:00
shader_language.h Add stencil support for spatial materials 2025-06-11 09:59:10 -05:00
shader_preprocessor.cpp Rename String::resize to resize_uninitialized, to better communicate to callers that new characters must be initialized. 2025-06-11 18:13:02 +02:00
shader_preprocessor.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
shader_types.cpp Fix a few improper memory accesses in the clustered forward vertex shader 2025-06-22 23:41:03 -07:00
shader_types.h Move server files into their subfolders 2025-09-30 19:39:39 -07:00
shader_warnings.cpp Replace std::size usage with std_size to avoid <iterator> include. 2025-10-05 00:26:11 +02:00
shader_warnings.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00