Commit Graph

151 Commits

Author SHA1 Message Date
Thaddeus Crews fddd45ea1c Merge pull request #119091 from ArchercatNEO/context-driver-surface-supports-hdr
HDR: Implement checking if surface supports HDR output.
2026-05-06 14:56:27 -05:00
ArchercatNEO 3f29efc8a2 HDR: Implement surface supports HDR output.
Previously the Wayland display server would attempt to enable
HDR output and try to detect if it failed afterwards which had some issues.
Now we can query the rendering driver for support and avoid ever enabling
HDR output when this would fail.
2026-05-06 19:51:54 +01:00
Skyth 5aecc0da58 Fix subpass MSAA resolves with multiple layers not working on D3D12. 2026-05-04 15:29:59 +03:00
Skyth f13267b44b Add support for gl_NumWorkGroups in D3D12. 2026-04-21 15:31:50 +03:00
Antonio Caggiano 24f9ac81ba raytracing: Fix shader binding table record alignment
Raytracing shader binding table records are addressed through Vulkan
alignment rules that distinguish between the raw shader group handle size,
the per-record handle alignment, and the base alignment required for SBT
region addresses.

The previous layout treated the shader group handle size as the record
stride everywhere. This worked only on devices where the handle size
already satisfied all relevant alignment requirements. It broke down once
multiple ray generation shaders were placed in the same SBT: selecting a
non-zero raygen index advanced the raygen region address by the raw handle
size, which could produce an address that was not aligned to the required
shader group base alignment.

Separate the SBT layout into the appropriate strides:

- ray generation records use a base-aligned stride, since selecting a
  raygen shader changes the SBT region start address for the dispatch.
- miss and hit records use the handle-aligned shader group stride, since
  their regions start at a base-aligned address and individual records are
  selected through the region stride.

This keeps the CPU-side SBT population and the dispatch-time SBT regions
using the same layout, so shader group handles are written to the same
aligned slots that Vulkan later addresses.
2026-04-13 23:24:17 +02:00
Skyth 83d2b84a51 Refactor raytracing pipelines. 2026-04-10 14:21:02 +03:00
Skyth e16a299a86 Raytracing API adjustments. 2026-04-03 18:06:34 +03:00
Thaddeus Crews 7351e6909b Merge pull request #116962 from blueskythlikesclouds/blas-create-api-change
Refactor `blas_create` to accept multiple geometries.
2026-04-02 12:33:23 -05:00
Rémi Verschelde 4336184ea4 Style: Tweak ordering of thirdparty includes with angle brackets 2026-03-18 10:41:59 +01:00
Rémi Verschelde e33e98a26f Style: Apply clang-format grouping rules 2026-03-17 20:11:01 +01:00
Rémi Verschelde 7795057e4b Misc includes or modernize fixes found via clangd-tidy 2026-03-16 21:38:26 +01:00
Rémi Verschelde eda0a8d033 Clean up includes in drivers/d3d12 2026-03-14 22:39:01 +01:00
Skyth 1b7fcc3993 Refactor blas_create to accept multiple geometries. 2026-03-11 15:19:56 +03:00
Moritz Leitner 0b7c30fa35 Use ClearUnorderedAccessViewFloat() instead of ClearUnorderedAccessViewUint() in command_clear_color_texture() 2026-03-10 14:08:41 +01:00
Rémi Verschelde 8c0f175c94 Decouple RenderingServer from as much of the codebase as possible
Notably decouples it from:
- AccessibilityServer
- DisplayServer
- Viewport
- Window
2026-03-03 12:48:07 +01:00
Rémi Verschelde a447ac95ec Move DisplayServer enums and typedefs to DisplayServerEnums
This will allow decoupling `display_server.h` from a number of headers in the
codebase which only require those enums and not all the DisplayServer API.
2026-03-03 12:44:02 +01:00
Skyth b394ca0a7a Upgrade D3D12MA. 2026-02-26 14:25:45 +03:00
Thaddeus Crews 4d4f7291ed Merge pull request #116355 from blueskythlikesclouds/get-total-memory-optimization
Optimize `get_total_memory_used` in D3D12 and Vulkan.
2026-02-18 12:04:33 -06:00
Lukas Tenbrink 0ea5ece984 Move binary math functions to Math namespace in math_funcs_binary header. 2026-02-17 12:24:35 +01:00
Skyth 8ed849e416 Optimize get_total_memory_used in D3D12 and Vulkan. 2026-02-16 17:13:06 +03:00
Thaddeus Crews 2d5b30c476 Merge pull request #115963 from blueskythlikesclouds/reduce-includes-to-rd
Reduce includes to rendering device.
2026-02-12 08:19:16 -06:00
Josh Jones b8389cc76b Support output to HDR monitors
Co-authored-by: Alvin Wong <alvinhochun@gmail.com>
Co-authored-by: Allen Pestaluky <allenpestaluky@gmail.com>
2026-02-11 22:13:26 -07:00
Skyth 8fbf2f1e14 Reduce includes to rendering device.
Co-authored-by: Lukas Tenbrink <lukas.tenbrink@gmail.com>
2026-02-10 16:58:50 +03:00
Skyth 2bd91c6646 Handle nearest filtering modes in D3D12 driver when anisotropy is enabled. 2026-01-28 13:18:18 +03:00
Thaddeus Crews 04a2ae7ed4 Merge pull request #99119 from Fahien/fahien/raytracing-base
Vulkan raytracing plumbing
2026-01-27 15:18:24 -06:00
Antonio Caggiano 27e4f24800 raytracing: Initial Vulkan support
- Vulkan implementations in `RenderingDeviceDriverVulkan`.
- Raytracing instruction list in `RenderingDeviceGraph`.
- Functions to create acceleration structures and raytracing pipelines
  in `RenderingDevice`.
- Raygen, Miss, and ClosestHit shader stages support.
- GDScript bindings.
- Update classes documentation.
- Unimplemented placeholders for Metal and D3D12.
- Build acceleration structure command.
- Expose a shader preprocessor define.
- Align build scratch address.
- Create STB after creating the pipeline.
- Separate acceleration structure barriers.
- Use transforms in TLAS instances.
- AnyHit and Intersection stages.
- Optionally set acceleration structure build input buffer usage.
- Introduce instances buffer.
- Move scratch buffers to RenderingDevice.
- Rename AccelerationStructureGeometryBits.
- Use regular buffer creation and free routines for scratch buffer.
- Store trackers in acceleration structures.
- Bump Shader SPIR-V version to 1.4
- Add Position attribute location in blas_create.
- Encapsulate MoltenVK check in preprocessor macro.
- Split SUPPORTS_RAYTRACING for pipeline and query.
2026-01-27 16:17:45 +01:00
Thaddeus Crews 0c7bb27bcd Merge pull request #114076 from blueskythlikesclouds/d3d12-reduce-unnecessary-calls
Reduce unnecessary calls in D3D12 driver.
2026-01-26 15:01:42 -06:00
Rémi Verschelde 4757542c31 Merge pull request #114146 from blueskythlikesclouds/d3d12-discard-state-fix
Fix incorrect resource state when discarding MSAA textures in D3D12.
2026-01-06 10:59:49 +01:00
Skyth 4f7146f59b Fix incorrect resource state when discarding MSAA textures in D3D12. 2025-12-18 14:07:14 +03:00
Skyth 0e2263caa5 Reduce unnecessary calls in D3D12 driver. 2025-12-16 16:28:45 +03:00
Skyth 83af078761 Clear depth stencil textures on first use if the RDD requires it. 2025-12-15 18:34:43 +03:00
Skyth d28758e166 Fix SYNC_ALL bit getting masked out on D3D12. 2025-12-11 17:04:07 +03:00
Rémi Verschelde 4b448fdd19 Merge pull request #113585 from brycehutchings/fix_d3d12_array_multisample
Fix bad D3D12 SRV breaking MSAA with OpenXR
2025-12-05 09:38:38 +01:00
Bryce Hutchings ed4bc24f9b Fix bad D3D12 SRV breaking MSAA with OpenXR 2025-12-04 12:00:13 -08:00
Skyth a8d3ecec13 Refactor descriptor heaps in D3D12 driver. 2025-12-03 11:02:41 +03:00
Thaddeus Crews 0289309270 Merge pull request #112191 from blueskythlikesclouds/point-size-emulation-forward-shader
Implement point size emulation in the forward shader for D3D12.
2025-12-02 11:52:08 -06:00
Thaddeus Crews b93d82a2b3 SCons: Cleanup hardcoded D3D12 driver workarounds 2025-12-02 10:56:50 -06:00
Skyth ba556ebe03 Implement point size emulation in the forward shader for D3D12. 2025-12-02 17:36:31 +03:00
Rémi Verschelde 2e4d5c261f Merge pull request #113277 from blueskythlikesclouds/d3d12-framebuffer-clear-fix
Fix framebuffers getting cleared multiple times on D3D12.
2025-12-02 14:16:50 +01:00
Archie Healy 31b18a2d6c D3D12: Convert non-critical startup warnings to verbose prints 2025-12-01 11:18:09 +01:00
Skyth 3e997f5edb Fix framebuffers getting cleared multiple times on D3D12. 2025-11-28 15:59:14 +03:00
Skyth 56db3aed47 Refactor rendering driver copy APIs to fix D3D12 issues.
Co-authored-by: Stuart Carnie <stuart.carnie@gmail.com>
2025-11-26 12:00:02 +03:00
Dario d17ea061bc Move D3D12's automatic texture clears to RenderingDevice. 2025-11-25 09:34:38 -03:00
Skyth ec7de6b82b Fix all D3D12 object memory leaks. 2025-11-24 16:45:47 +03:00
Thaddeus Crews ccf414ecb4 Merge pull request #112989 from blueskythlikesclouds/typed-uav-load-additional-check
Check for Typed UAV Load Additional Formats capability when creating D3D12 device.
2025-11-21 14:46:53 -06:00
Thaddeus Crews 8480b62202 Merge pull request #113000 from brycehutchings/d3d12_descriptor_heap_pool_corruption_fix
Fix corruption of D3D12 CPU descriptor heap free blocks
2025-11-21 14:46:47 -06:00
Bryce Hutchings 17703ab0fb Fix corruption of cpu descriptor heap free blocks 2025-11-20 15:51:12 -08:00
Skyth 2331470128 Check for Typed UAV Load Additional Formats capability when creating D3D12 device. 2025-11-20 19:26:00 +03:00
Skyth 92d3fc302a Fix buffer creation on old D3D12 runtimes. 2025-11-18 15:33:30 +03:00
Stuart Carnie 90c0e6acca 2D: Switch to VBOs for instance data
- Add support for vertex bindings and UMA vertex buffers in D3D12.
- Simplify 2D instance params and move more into per-batch data to save
  bandwidth

Co-authored-by: Skyth <19259897+blueskythlikesclouds@users.noreply.github.com>
Co-authored-by: Clay John <claynjohn@gmail.com>
Co-authored-by: A Thousand Ships <96648715+athousandships@users.noreply.github.com>
2025-11-15 06:25:49 +11:00