Commit Graph

97 Commits

Author SHA1 Message Date
8c3e46b13b Move transitions of textures initialized by transfer workers to the main graphics queue.
Also adds a new possible texture layout and API trait to support a particular behavior in D3D12 where only the COMMON layout is supported in copy queues. Fixes #98158.
2024-10-18 09:15:25 -03:00
5ed10e3604 Remove "Using present mode" verbose prints in Vulkan and Direct3D 12
These messages were printed every time the swapchain was recreated
(e.g. on viewport size change), which could easily end up spamming
the output.

The chosen present mode is already displayed when using the Print FPS
project setting or command line argument.
2024-10-17 23:18:28 +02:00
a44f691fc7 CI: Add MinGW/GCC build to Windows GHA 2024-10-10 10:10:55 -05:00
e2c6daf7ef Implement asynchronous transfer queues, thread guards on RenderingDevice. Add ubershaders and rework pipeline caches for Forward+ and Mobile.
- Implements asynchronous transfer queues from PR #87590.
- Adds ubershaders that can run with specialization constants specified as push constants.
- Pipelines with specialization constants can compile in the background.
- Added monitoring for pipeline compilations.
- Materials and shaders can now be created asynchronously on background threads.
- Meshes that are loaded on background threads can also compile pipelines as part of the loading process.
2024-10-02 15:11:58 -03:00
c92a6c7e27 CI: Update clang-format pre-commit hook to 19.1.0 2024-09-26 11:46:12 +02:00
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
1fea6ed01c Merge pull request #94733 from RandomShaper/d3d12_tex_barr_fast
D3D12: Be explicit about all-resources texture barriers
2024-08-16 10:34:49 +02:00
cddf321d30 Merge pull request #94731 from RandomShaper/d3d12_no_null_barr_grps
D3D12: Avoid validation warnings about zero-sized barrier groups
2024-08-16 10:34:42 +02:00
8cf2903c7f D3D12: Avoid cases of redundant render target clears 2024-08-02 14:26:17 +02:00
3260437afc D3D12: Be explicit about all-resources texture barriers 2024-07-25 15:06:42 +02:00
bb0a8e56e1 D3D12: Avoid validation warnings about zero-sized barrier groups 2024-07-25 11:47:34 +02:00
ffd6162c76 Merge pull request #94267 from RandomShaper/d3d12_db
D3D12: Avoid enabling depth bounds test if unsupported
2024-07-17 11:43:39 +02:00
a8adb2bbc3 D3D12: Avoid enabling depth bounds test if unsupported 2024-07-15 09:49:34 +02:00
ee2c1584e4 D3D12: Get rid of DXIL.dll! 2024-07-11 17:56:45 +02:00
207f523441 D3D12: Use the right state for resources in certain heap types 2024-07-01 08:06:26 +02:00
10d81a238e [LLVM/MinGW] Fix/suppress DX12 related warnings. 2024-06-19 23:40:06 +03:00
f2796fa06d Merge pull request #91769 from DarioSamo/d3d12_enhanced_barriers
Add support for enhanced barriers in D3D12.
2024-05-31 14:15:49 +02:00
628c81d2d9 [DisplayServer] Add method to check if window transparency is supported and enabled. 2024-05-23 15:23:18 +03:00
adabd14d08 Add support for enhanced barriers in D3D12.
Enables support for enhanced barriers if available.

Gets rid of the implementation of [CROSS_FAMILY_FALLBACK] in the D3D12 driver. The logic has been reimplemented at a higher level in RenderingDevice itself.

This fallback is only used if the RenderingDeviceDriver reports the API traits and the capability of sharing texture formats correctly. Aliases created in this way can only be used for sampling: never for writing. In most cases, the formats that do not support sharing do not support unordered access/storage writes in the first place.
2024-05-20 13:04:44 -03:00
9042ddf19f Improvements to VRS/Foveated rendering 2024-05-03 17:20:30 +10:00
3b3e2374c9 clang-tidy: Enforce modernize-use-nullptr 2024-03-12 10:59:53 -05:00
ec55028f26 Merge pull request #89209 from RandomShaper/padding_for_dummies
Make shader binary alignment handling simpler and more robust
2024-03-06 13:17:09 +01:00
f77b4d155b Make shader binary alignment handling simpler and more robust
Bonus:
Also simplified the rounding to block size in image size calculations.
2024-03-06 11:48:23 +01:00
5d20628c31 Merge pull request #88496 from bruvzg/d3d12_dyn_load
[Windows] Make D3D12 loading dynamic to support pre-Windows 10 versions.
2024-03-05 09:55:41 +01:00
bed48f37aa Direct3D 12: Fix shader model support check for devices not aware of the highest ones 2024-03-04 13:54:28 +01:00
3f530c7091 Direct3D 12: Implement proper fallback for format casting 2024-02-27 17:20:01 +01:00
cfe344f12f Merge pull request #87872 from RandomShaper/d3d12_tex_mem_is_life
Direct3D 12: Enhance management of texture data life cycle
2024-02-27 16:36:59 +01:00
d47021ac6c Direct3D 12: Enhance management of texture data life cycle 2024-02-27 15:45:19 +01:00
13e82094ee Remove word duplicates in comments and strings, and fix casing and punctuation 2024-02-23 17:28:28 -05:00
5fd9d0891f SCons: Add proper MinGW support to D3D12 deps install script
Fix a couple GCC warnings.
2024-02-23 22:13:22 +01:00
ee2d8f68ba Merge execute and present commands for RenderingDeviceDriver. 2024-02-19 13:09:03 -03:00
f4ca6a856a [Windows] Make D3D12 loading dynamic to support pre Windows 10 versions. 2024-02-19 15:08:04 +02:00
c1ad24571a Merge pull request #88252 from RandomShaper/d3d12_slice_of_cube
Direct3D 12: Fix cubemap slicing
2024-02-15 15:45:03 +01:00
1a2f9741cf [D3D12] Improve shader validation handling. 2024-02-13 11:27:48 +02:00
5a0ae10f58 Direct3D 12: Fix cubemap slicing 2024-02-12 16:08:27 +01:00
73eff10c76 Finish splitting functionality of the Vulkan and D3D12 backends into RenderingDeviceDriver. 2024-02-12 10:02:18 -03:00
b8b0eea1f8 Merge pull request #87570 from RandomShaper/d3d12_defensive
Direct3D 12: Make format feature check more defensive
2024-02-12 13:34:09 +01:00
efa587ad36 Merge pull request #87795 from RandomShaper/d3d12_dont_leak_please
Direct3D 12: Avoid terrible leak related to command allocators
2024-02-02 12:04:25 +01:00
6057ec9b06 Direct3D 12: Avoid terrible leak related to command allocators 2024-01-31 20:00:23 +01:00
184009eda6 Merge pull request #87482 from RandomShaper/d3d12_spacey
Direct3D 12: Let NIR runtime data and push constants use the same register scheme as bindings
2024-01-26 11:45:49 +01:00
6807cd8673 Direct3D 12: Make format feature check more defensive 2024-01-25 10:12:07 +01:00
0a89a2db9e Direct3D 12: Let NIR runtime data and push constants use the same register scheme as bindings 2024-01-22 19:39:27 +01:00
44013b88eb Merge pull request #87298 from RandomShaper/d3d12_qp
D3D12 RDD: Fix wrong argument when resolving timestamp queries
2024-01-17 18:53:37 +01:00
925263c35b D3D12 RDD: Fix wrong argument when resolving timestamp queries 2024-01-17 16:59:13 +01:00
2893c0b475 Fix DX12 build on older MSVC versions, fix missing PIX include. 2024-01-15 11:03:16 +02:00
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
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