1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00
Commit Graph

113 Commits

Author SHA1 Message Date
LuoZhihao
7b797988cc Document the rids that will be freed automatically when free their deps
Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
2025-10-31 18:25:23 +08:00
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
Bryce Hutchings
1f7e7de82b Fix D3D12 driver returning internal types to RenderingDevice's texture_get_native_handle/get_driver_resource 2025-10-15 10:35:38 -07:00
Allen Pestaluky
46e40969a2 Replace the term "color space" with "color encoding". Add additional detail to Color class description. State clearly that Color is expected to use the nonlinear sRGB transfer function. 2025-09-15 18:11:53 -04:00
MaidOpi
7cb1598d64 Update descriptions for driver resource enums . 2025-07-24 01:11:59 +08:00
Stuart Carnie
5230f6c60c Apple: Use image atomic operations on supported Apple hardware
Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
2025-07-05 05:59:00 +10:00
A Thousand Ships
2db7ecd410 [Docs] Various grammar and spelling fixes 2025-06-23 20:54:08 +02:00
Rémi Verschelde
cec5c89f9d Merge pull request #107143 from Mickeon/documentation-miscellaneous-oddities-part-5
Fix miscellaneous oddities around the class reference (part 5)
2025-06-13 15:53:47 +02:00
Rémi Verschelde
7585dfca99 Merge pull request #102511 from DevPoodle/breadcrumb_docs
Add basic descriptions to the BreadcrumbMarker enum
2025-06-07 00:43:17 +02:00
Rémi Verschelde
dea3269c35 Merge pull request #107172 from clayjohn/docs-texture-create
Clarify the data param in the docs for RD.texture_create
2025-06-06 17:37:44 +02:00
DevPoodle
8cb8243719 Add basic descriptions to the BreadcrumbMarker enum 2025-06-06 08:16:06 -07:00
Micky
3613306bba Fix miscellaneous oddities around the class reference (part 5) 2025-06-06 15:21:25 +02:00
kobewi
13f642d959 Replace XML codeblock spaces with tabs 2025-06-06 14:35:38 +02:00
clayjohn
2ef28a138e Clarify the data param in the docs for RD.texture_create 2025-06-05 10:35:53 -07:00
Haoyu Qiu
1e82bafa3a Remove redundant info on the enum types used 2025-06-04 08:21:47 +08:00
Sander
6ae50cad17 RenderingDevice: introduce parameter 'mipmaps' for texture_create_from_extension() 2025-05-07 15:15:55 +03:00
Thaddeus Crews
d98c3f5ffe Merge pull request #104333 from Mickeon/documentation-even-more-miscellaneous-oddities
Fix *even* more miscellaneous oddities around the class reference
2025-04-08 12:32:41 -05:00
Micky
7603945d14 Fix *even* more miscellaneous oddities around the class reference 2025-04-07 17:37:08 +02:00
Micky
a1254fe5ad Fix incorrect data format in RenderingDevice docs 2025-04-05 12:52:09 +02:00
Stuart Carnie
052fe9158d Renderer: Expose and document Features enum for METAL_FX 2025-03-11 12:35:58 +11:00
Thaddeus Crews
4bafafaeb3 Merge pull request #102777 from darksylinc/matias-astc-hdr
Add ASTC HDR format variants
2025-03-06 16:36:06 -06:00
Matias N. Goldberg
fcd785ace2 Add ASTC HDR format variants 2025-02-13 11:45:42 -03:00
Matias N. Goldberg
af900a5825 Change how device address is requested to avoid future API breakage
PR #100062 introduced BUFFER_USAGE_DEVICE_ADDRESS_BIT.

However it did so by adding a boolean to uniform_buffer_create(), called
"bool p_enable_device_address".

This makes maintaining backwards compatibility harder because I am
working on another feature that would require introducing yet another
bit flag.

This would save us the need to add fallback routines when the feature I
am working on makes it to Godot 4.5.

Even if my feature doesn't make it to 4.5 either, this PR makes the
routine more future-proof.

This PR also moves STORAGE_BUFFER_USAGE_DEVICE_ADDRESS into
BUFFER_CREATION_DEVICE_ADDRESS_BIT, since it's an option available to
both storage and uniforms.

This PR also moves the boolean use_as_storage into
BUFFER_CREATION_AS_STORAGE.
2025-02-11 20:00:18 -03:00
thimenesup
3d92f406b2 Implement Buffer Device Address for Rendering Device Vulkan and DirectX12 2025-01-13 22:43:29 -08:00
Stuart Carnie
11dc4f2e5e Metal: Add MetalFX upscaling support
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
2025-01-06 06:03:18 -07:00
Dario
054891de04 Implement buffer_get_data_async and texture_get_data_async. 2024-12-11 11:55:23 -08:00
Dario
6d5ac8f7ef Resolve load and store ops automatically for render passes for discardable textures. 2024-11-25 11:27:48 -03:00
thimenesup
d36a872432 Add draw indirect to Rendering Device 2024-10-29 17:40:28 +01:00
Haoyu Qiu
9e1121a18c Add missing period for sentences in classref 2024-09-20 19:33:32 +08:00
Matias N. Goldberg
59d0422dcd Disable extra memory tracking by default
PR #90993 added several debugging utilities.

Among them, advanced memory tracking through the use of custom
allocators and VK_EXT_device_memory_report.

However as issue #95967 reveals, it is dangerous to leave it on by
default because drivers (or even the Vulkan loader) can too easily
accidentally break custom allocators by allocating memory through std
malloc but then request us to deallocate it (or viceversa).

This PR fixes the following problems:
 - Adds --extra-gpu-memory-tracking cmd line argument
 - Adds missing enum entries to
RenderingContextDriverVulkan::VkTrackedObjectType
 - Adds RenderingDevice::get_driver_and_device_memory_report
    - GDScript users can easily check via print(
RenderingServer.get_rendering_device().get_driver_and_device_memory_report()
)
- Uses get_driver_and_device_memory_report on device lost for appending
further info.

Fixes #95967
2024-08-24 20:52:39 -03:00
Matias N. Goldberg
364f916f3f Add debug utilities for Vulkan
Features:
- Debug-only tracking of objects by type. See
get_driver_allocs_by_object_type et al.
 - Debug-only Breadcrumb info for debugging GPU crashes and device lost
 - Performance report per frame from get_perf_report
- Some VMA calls had to be modified in order to insert the necessary
memory callbacks

Functionality marked as "debug-only" is only available in debug or dev
builds.

Misc fixes:
 - Early break optimization in RenderingDevice::uniform_set_create

============================

The work was performed by collaboration of TheForge and Google. I am
merely splitting it up into smaller PRs and cleaning it up.
2024-08-21 23:48:08 +02:00
BlueCube3310
a20960bce4 Fix texture compression descriptions in RenderingDevice docs 2024-07-15 15:19:02 +02:00
Rémi Verschelde
9cba6ec216 Merge pull request #89491 from thimenesup/compute_dispatch_indirect
Expose bindings to compute dispatch indirect of rendering device
2024-04-09 10:42:22 +02:00
thimenesup
8017c8cf21 Expose bindings to compute dispatch indirect rendering device 2024-04-08 20:46:53 +02:00
Rémi Verschelde
6f6e8b15ce Merge pull request #87082 from Mickeon/documentation-RenderingDevice-dynamic_state
Add descriptions to a few RenderingDevice's PipelineDynamicStateFlags
2024-04-08 11:19:42 +02:00
Micky
f9a758772a Update many Deprecated/Experimental descriptions for consistency 2024-02-17 21:33:12 +01:00
Danil Alexeev
af28f87791 Documentation: Add support for deprecated/experimental messages 2024-02-15 15:59:50 +03:00
Dario
73eff10c76 Finish splitting functionality of the Vulkan and D3D12 backends into RenderingDeviceDriver. 2024-02-12 10:02:18 -03:00
Micky
967a121c8b Add descriptions to a few RenderingDevice's PipelineDynamicStateFlags 2024-01-11 17:39:31 +01:00
Dario
80eacf1b7a Fix incorrect mapping of initial action as clear region continue to clear. 2024-01-09 22:03:21 -03:00
Dario
cc4d39b0c1 Acyclic Command Graph for RenderingDevice.
Adds a new system to automatically reorder commands, perform layout transitions and insert synchronization barriers based on the commands issued to RenderingDevice.
2024-01-08 14:54:56 -03:00
Septian
d3e7b8c8a8 Fix various typos in documentation 2024-01-05 15:47:58 +07:00
Pedro J. Estébanez
12a519bae2 Split RenderingDevice into API-agnostic and RenderingDeviceDriver parts
Credit and thanks to @bruzvg for multiple build fixes, update of 3rd-party items and MinGW support.

Co-authored-by: bruvzg <7645683+bruvzg@users.noreply.github.com>
2023-12-20 19:18:08 +01:00
detomon
48c2012dc2 Fix required parameter values for 2D textures in RenderingDevice.texture_clear() 2023-09-29 16:14:31 +02:00
Shawn Wallace
b12ed82c04 Expose texture_create_from_extension to GDExtension 2023-09-23 16:57:12 -04:00
ARez
bd4d43023d Add missing RenderingDevice method descriptions 2023-08-29 12:32:29 +02:00
Hugo Locurcio
469c462b76 Add missing tutorials to documentation classes 2023-08-19 20:29:24 +02:00
Haoyu Qiu
097c849395 Fix various typos in classref 2023-08-04 16:29:55 +08:00
Yuri Sizov
cc1ee3e599 Merge pull request #79911 from BastiaanOlij/fix_barrier_breakage
Add exceptions for breakage introduced in RD barriers
2023-08-01 17:25:40 +02:00
Yuri Sizov
1c40263665 Merge pull request #79606 from clayjohn/ShaderRD-compilation-groups
Shader rd compilation groups
2023-08-01 17:25:16 +02:00