bitsawer
5d18e2ee00
Fix Vulkan multithreaded compute list and GPU particle processing
2023-07-24 12:56:55 +03:00
clayjohn
e970f5249c
Add Shader compile groups to RD Shader system
...
This allows us to specify a subset of variants to compile at load time and conditionally other variants later.
This works seamlessly with shader caching.
Needed to ensure that users only pay the cost for variants they use
2023-07-21 16:42:30 +02:00
Marc Gilleron
8722cbc0a0
Add missing thread-safe method macros to RD Vulkan submit and sync
2023-07-18 20:04:51 +01:00
Bastiaan Olij
a22f495a3c
Split raster barrier into vertex and fragment barrier
2023-07-15 12:30:32 +10:00
Rémi Verschelde
1453dc9d5d
Merge pull request #79143 from clayjohn/wayland-menu
...
Avoid freeze when interacting with menus on Wayland by re-aquiring next swapchain image after updating swapchain
2023-07-09 12:24:07 +02:00
clayjohn
df021b5063
Avoid freeze when interacting with menus on Wayland by re-aquiring next swapchain image after updating swapchain
2023-07-07 10:19:28 +02:00
Joe Marshall
c52fadbe75
fix threading bug in vulkan rendering device
2023-06-28 13:50:25 +01:00
jpcerrone
bd786ce0d9
Fix for Win+M crashing the editor
...
Fixes #77790
Adds missing 'break' statement to 'VulkanContext::prepare_buffers' function.
It was mistakenly removed in #72859
2023-06-14 14:34:09 -03:00
Bastiaan Olij
6dd47e232b
Expose RD::texture_native_handle
2023-06-14 09:58:08 +10:00
Rémi Verschelde
3dd0307f3f
Merge pull request #76348 from warriormaster12/pipeline-cache
...
Implement Vulkan pipeline caching
2023-06-01 00:40:33 +02:00
warriormaster12
dded713dc0
Implement Vulkan pipeline caching
2023-05-31 22:24:18 +03:00
Rémi Verschelde
8b0530be64
Merge pull request #77022 from sakrel/fix_buffer_get_data
...
RenderingDeviceVulkan::buffer_get_data: Use draw command buffer instead of setup command buffer
2023-05-24 08:47:19 +02:00
Rémi Verschelde
b917f748b5
Merge pull request #75945 from Calinou/renderingdevice-finalaction-fix-typo
...
Fix typo in FinalAction `switch` statement in RenderingDevice
2023-05-24 08:46:01 +02:00
sakrel
f52c151fcf
RenderingDeviceVulkan::buffer_get_data: Use draw command buffer instead of setup command buffer
2023-05-12 23:25:20 +02:00
warriormaster12
10797d58dd
fixed a query pool validation error
2023-05-11 17:17:23 +03:00
Rémi Verschelde
564d1b34e0
Merge pull request #74711 from BastiaanOlij/add_texture_native_handle
...
Provide access to internal graphics handles for textures
2023-05-09 19:28:26 +02:00
Bastiaan Olij
c328676d96
For GDExternal use, provides access to internal graphics handles for textures
2023-05-09 13:47:22 +10:00
Pedro J. Estébanez
6465432570
Save cluster render shader from being optimized out entirely
2023-05-08 18:39:49 +02:00
Rémi Verschelde
392fdd106d
Merge pull request #75937 from RandomShaper/threaded_render_load
...
Allow creation of rendering buffers at any time
2023-05-08 13:52:33 +02:00
Hugo Locurcio
5056c427d3
Improve RenderingServer, RenderingDevice, ShaderGlobalsOverride documentation
...
This brings the overall class reference completion percentage from 87% to 92%.
2023-05-06 22:40:32 +02:00
Pedro J. Estébanez
09aa1bbdb3
Fix unsupported sampler filter used for voxel GI
2023-04-26 20:54:06 +02:00
Pedro J. Estébanez
882b869220
Fix issues with Vulkan layout transitions
2023-04-24 12:24:24 +02:00
Hugo Locurcio
dd53037f74
Fix typo in FinalAction switch
statement in RenderingDevice
2023-04-11 18:44:12 +02:00
Pedro J. Estébanez
d4c46f15ae
Allow creation of rendering buffers at any time
2023-04-11 16:33:47 +02:00
Rémi Verschelde
253b4875f3
Merge pull request #72859 from clayjohn/VK-suboptimal
...
Recreate swap chain when suboptimal to avoid error spam
2023-04-03 15:57:43 +02:00
bruvzg
09465f3fe6
Remove (or make verbose only) various debug prints.
2023-03-20 08:14:18 +02:00
clayjohn
06042a23b6
Avoid overflow when calculating ptr address for 3D textures in RenderingDevice texture update
2023-03-06 15:46:40 -08:00
ChibiDenDen
d104d8447b
Fix use-after-free for VkAttachmentReference
...
In the flow where VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME does not exist
VkAttachmentReference are created inside a loop and their backing buffer is referenced in the subpass object.
the VkAttachmentReference vectors are freed once the loop exists, causing the subpass to point to freed data.
Add all the VkAttachmentReference to a vector in the scope of the entire function, to ensure they are not freed until vkCreateRenderPass is called
2023-02-20 11:54:52 +02:00
Wiktor Kocielski
b66f3846b4
Make present mode info message print only on change
...
Styling fix
2023-02-12 16:08:11 +03:00
sakrel
089dbecef4
Make draw command labels thread safe
2023-02-10 21:27:31 +01:00
Rémi Verschelde
ed85a2c8ce
Merge pull request #70663 from EpEpDragon/feature_buffer_get_data_size_option
...
Add optional size parameter to the RenderDevice buffer_get_data method.
2023-02-10 18:49:28 +01:00
clayjohn
22291d7ae2
Add more debug information to swapchain errors in Vulkan context
2023-02-07 13:52:36 -08:00
clayjohn
c9d2bc91aa
Recreate swap chain when suboptimal to avoid error spam
2023-02-07 13:43:14 -08:00
Hugo Locurcio
f3e8300b50
Print name of Vulkan rendering method on startup
...
This helps troubleshooting as the CLI logs now distinguish between
Forward+ and Forward Mobile.
2023-02-03 13:01:48 +01:00
Bastiaan Olij
093289364f
Add layer slice support to render device and render buffers
2023-02-03 09:48:56 +11:00
clayjohn
5931d504c1
Add a few more checks to ensure that unsupported image formats are not used in the mobile renderer
2023-01-23 12:38:09 -08:00
Rémi Verschelde
591100cbd6
Merge pull request #70429 from BastiaanOlij/check_more_vulkan_extensions
...
Enabling additional vulkan extension and adding further checks
2023-01-23 20:10:19 +01:00
Rémi Verschelde
5b1df48c6c
Convert en_GB spelling to en_US with codespell
2023-01-23 11:02:20 +01:00
kobewi
615c517034
Use range iterators in LocalVector loops
2023-01-21 18:44:42 +01:00
Bastiaan Olij
318656d326
Enabling additional vulkan extension and adding further checks
2023-01-15 14:49:15 +11:00
Pedro J. Estébanez
5ca2ba45f1
Make inclusion of Godot version in shader hash universal
2023-01-09 17:47:02 +01:00
EpEpDragon
36d02882b9
Added optional offset and size parameter to RenderDevice buffer_get_data method
2023-01-06 17:08:37 +02:00
Rémi Verschelde
d95794ec8a
One Copyright Update to rule them all
...
As many open source projects have started doing it, we're removing the
current year from the copyright notice, so that we don't need to bump
it every year.
It seems like only the first year of publication is technically
relevant for copyright notices, and even that seems to be something
that many companies stopped listing altogether (in a version controlled
codebase, the commits are a much better source of date of publication
than a hardcoded copyright statement).
We also now list Godot Engine contributors first as we're collectively
the current maintainers of the project, and we clarify that the
"exclusive" copyright of the co-founders covers the timespan before
opensourcing (their further contributions are included as part of Godot
Engine contributors).
Also fixed "cf." Frenchism - it's meant as "refer to / see".
2023-01-05 13:25:55 +01:00
Rémi Verschelde
f318d60e06
Merge pull request #65376 from reduz/astc-support
...
Implement basic ASTC support
2022-12-20 12:44:30 +01:00
Juan Linietsky
71d21c7ccb
Implement basic ASTC support
...
Implements basic ASTC support:
* Only 4x4 and 8x8 block sizes.
* Other block sizes are too complex to handle for Godot image compression handling. May be implemented sometime in the future.
The need for ASTC is mostly for the following use cases:
* Implement a high quality compression option for textures on mobile and M1 Apple hardware.
* For this, the 4x4 is sufficient, since it uses the same size as BPTC.
ASTC supports a lot of block sizes, but the benefit of supporting most of them is slim, while the implementation complexity in Godot is very high.
Supporting only 4x4 (and 8x8) solves the real problem, which is lack of a BPTC alternative on hardware where it's missing.
Note: This does not yet support encoding on import, an ASTC encoder will need to be added.
2022-12-20 11:26:30 +01:00
Clay John
aa8a899f52
Merge pull request #70104 from RandomShaper/vk_dev_asserts
...
Replace certain sanity checks with proper dev-only assertions in Vulkan RD
2022-12-15 08:22:17 -08:00
Pedro J. Estébanez
af6189711e
Replace certain sanity checks with proper dev-only assertions in Vulkan RD
2022-12-15 12:34:08 +01:00
Yuri Rubinsky
807632a90c
Changed STORAGE_BUFFER_USAGE_DISPATCH_INDIRECT
type to enum flags
2022-12-15 14:10:37 +03:00
Rémi Verschelde
762c6d4b36
Merge pull request #69709 from RandomShaper/refactor_spirv_reflection
...
Refactor SPIR-V reflection into a generic RenderingDevice feature
2022-12-15 09:21:35 +01:00
Pedro J. Estébanez
14e301467e
Refactor SPIR-V reflection into a generic RenderingDevice feature
2022-12-12 14:14:53 +01:00
Pedro J. Estébanez
c985ee985f
Tidy up some aspects of Vulkan RD
2022-12-12 14:14:53 +01:00
Rémi Verschelde
f79c034713
Merge pull request #69635 from BastiaanOlij/fix_get_buffer
...
Fix barrier on buffer_get_data
2022-12-12 11:44:29 +01:00
Yuri Rubinsky
6e48db69a3
Changed RD::PipelineDynamicStateFlags
type to enum flags
2022-12-11 15:37:35 +03:00
Bastiaan Olij
d79f692cae
Fix barrier on buffer_get_data
2022-12-06 22:44:35 +11:00
Bastiaan Olij
2562c06032
Fix issue where we should be using device supported version instead of instance version for Vulkan
2022-12-05 10:12:07 +11:00
Yuri Rubinsky
5934eef44c
Changed RenderingDevice::TextureUsageBits
type to enum flags
2022-11-26 13:08:07 +03:00
Bastiaan Olij
a479f5af22
Improve logic for detecting and tracking extensions
2022-11-24 21:48:16 +11:00
Rémi Verschelde
e7418cac3d
Merge pull request #68942 from Chaosus/barrier_mask_flags
...
Expose `BarrierMask` as flags enum in `RenderingDevice`
2022-11-22 08:31:12 +01:00
Yuri Rubinsky
acaf38cfbc
Expose BarrierMask
as flags enum in RenderingDevice
2022-11-22 09:45:20 +03:00
Rémi Verschelde
a9a75e643e
Merge pull request #68527 from pkdawson/vertex-array-offsets
...
Add `offsets` parameter to RenderingDevice::vertex_array_create
2022-11-21 11:43:28 +01:00
Bastiaan Olij
616ba8745f
Fix VRS issues
2022-11-17 00:32:42 +11:00
Hugo Locurcio
efe3220b2e
Fix periods in editor strings and messages
...
- Ensure all strings with ellipsis end with 3 periods instead of 2.
- Fix extraneous period in "Error calling from signal '...' to callable"
messages.
2022-11-14 19:36:36 +01:00
Patrick Dawson
d7136f2d51
Add offsets
parameter to RenderingDevice::vertex_array_create
2022-11-11 15:45:36 +01:00
kobewi
d9f066d5fa
Remove duplicate project settings definitions
2022-11-08 01:29:39 +01:00
Patrick Dawson
382f0f97d6
RenderingDevice: Fix usage of index offset
2022-11-05 21:03:32 +01:00
Rémi Verschelde
c98d6142d0
Merge pull request #68102 from BastiaanOlij/fix_render_issues_xr
...
Fix several render issues found while debugging XR
2022-11-03 22:37:42 +01:00
Rémi Verschelde
f7c611ab71
Style: Misc docs and comment style and language fixes
...
- Removed empty paragraphs in XML.
- Consistently use bold style for "Example:", on a new line.
- Fix usage of `[code]` when hyperlinks could be used (`[member]`, `[constant]`).
- Fix invalid usage of backticks for inline code in BBCode.
- Fix some American/British English spelling inconsistencies.
- Other minor fixes spotted along the way, including typo fixes with codespell.
- Don't specify `@GlobalScope` for `enum` and `constant`.
2022-11-02 19:01:18 +01:00
Bastiaan Olij
a4e58ec84a
Fix several render issues found while debugging XR
2022-11-01 13:27:03 +11:00
Rémi Verschelde
5947f22be9
Merge pull request #67578 from KoBeWi/GEDITOR
...
Unify usage of GLOBAL/EDITOR_GET
2022-10-31 13:15:58 +01:00
Rémi Verschelde
e12043ae3a
Merge pull request #67729 from Riteo/workaround-extension-feature-bug
...
Check for a Vulkan extension before checking its features
2022-10-31 10:48:35 +01:00
Clay John
8fd92ed867
Merge pull request #64710 from MinusKube/window-size-crash
...
Prevent windows from having a size greater than device limit
2022-10-27 10:02:44 -07:00
Clay John
c51a42778d
Merge pull request #67541 from RandomShaper/refactor_subgroup_ads
...
Let the RD driver itself expose subgroup caps
2022-10-24 12:02:06 -07:00
Riteo
3ef598c9f8
Check for a Vulkan extension before checking its features
...
For some reason AFAICT mesa reports a feature as enabled even when its
extension isn't supported. The Vulkan specification says nothing aboutd
this so this is technically more of a workaround, but it works.
2022-10-22 15:31:42 +02:00
Pedro J. Estébanez
ae38d7930e
Let the RD driver itself expose subgroup caps
2022-10-20 19:37:35 +02:00
Riteo
dca76957b2
Use opaque composition if transparency is disabled
2022-10-19 11:01:53 +02:00
kobewi
e48c5daddf
Unify usage of GLOBAL/EDITOR_GET
2022-10-18 19:01:48 +02:00
Clay John
d5ae80c8bd
Merge pull request #67227 from BastiaanOlij/vkCreateRenderPass2KHR_fallback
...
Added fallback to vkCreateRenderPass
2022-10-11 22:46:42 -07:00
Bastiaan Olij
64a78c3dad
Added fallback to vkCreateRenderPass if VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME isn't supported
2022-10-12 09:31:56 +11:00
Rémi Verschelde
6d534f6e89
Merge pull request #66221 from Mickeon/painstakingly-appending-ds-en-you-tea-es
...
Rename remaining "*_enable" to "*_enabled"
2022-10-11 16:17:02 +02:00
Rémi Verschelde
3306ffefd1
Merge pull request #67000 from RandomShaper/split_render_further
...
Polish rendering driver refactor further
2022-10-11 09:23:32 +02:00
Rémi Verschelde
8017827144
SCons: Re-enable treating #warning
as error with werror
...
Replace all TODO uses of `#warning` by proper TODO comments, and will open
matching bug reports to keep track of them.
We don't have a great track record fixing TODOs, but I'd wager we're even
worse for fixing these "TODO #warning" so we should prohibit this usage.
2022-10-10 16:12:26 +02:00
bruvzg
0103af1ddd
Fix MSVC warnings, rename shadowed variables, fix uninitialized values, change warnings=all to use /W4.
2022-10-07 11:32:33 +03:00
Pedro J. Estébanez
24ff292999
Polish rendering driver refactor further
...
Mainly:
- Make `max_descriptors_per_pool` project setting Vulkan-specific.
- Use a common, render driver agnostic magic FourCC for shader binary data.
- Downgrade spirv_reflect to Vulkan-only dependency.
- Add a `RENDER_DRIVER_*` macro to GLSL shader code for per-driver customizations.
2022-10-06 21:08:54 +02:00
bruvzg
6afb2d0225
[Windows] Fix LLVM MinGW build.
2022-10-06 09:30:25 +03:00
Rémi Verschelde
8a47cdc933
Vulkan: Initialize VK_EXT_debug_utils only for dev build or verbose mode
...
End users would get spammed with messages of varying verbosity due to the
mess that thirdparty layers/extensions and drivers seem to leave in their
wake, making the Windows registry a bottomless pit of broken layer JSON.
I'm all for helping end users clean up mess in their registry / system paths
for Vulkan ICDs, layers and extensions, but the way this is done by
VK_EXT_debug_utils is just horrible - and the way for them to fix it (manual
edit of system files) is also not a good thing to recommend.
Closes countless issues where users think Godot is broken because it reports
weird errors.
2022-10-04 16:09:11 +02:00
Rémi Verschelde
166df0896c
Fix typos with codespell
...
Using codespell 2.3-dev from current git.
And fix typo in `methods.py` for `vsproj=yes` option (still won't work
though).
2022-09-30 14:23:36 +02:00
Rémi Verschelde
85fe6ecc32
Fix MSVC warnings C4701 and C4703: Potentially uninitialized variable used
2022-09-28 17:05:34 +02:00
Micky
c1b5b68eee
Rename remaining "*_enable" to "*_enabled"
...
Material.`proximity_fade_enable` -> `proximity_fade_enabled`
Material.`set_proximity_fade` -> `set_proximity_fade_enabled`
(Material.`is_proximity_fade_enabled` is unchanged)
Area3D.`reverb_bus_enable` -> `reverb_bus_enabled`
(`set_use_reverb_bus` & `is_using_reverb_bus` are unchanged)
RDPipelineRasterizationState:
`depth_bias_enable` -> `depth_bias_enabled`
`set_depth_bias_enable` -> `set_depth_bias_enabled`
`get_depth_bias_enable` -> `get_depth_bias_enabled`
Bonus:
Area3D.`set_reverb_bus` -> `set_reverb_bus_name`
Area3D.`get_reverb_bus` -> `set_get_reverb_bus_name`
2022-09-21 22:47:46 +02:00
clayjohn
4a1c7de57c
Split rendering driver project setting into renderer_name and rendering_driver. To differentiate between a driver (e.g. Vulkan or D3D12) and a renderer (e.g. clustered or mobile renderer).
2022-09-19 10:26:10 -07:00
Haoyu Qiu
d1aed76a20
Fix crash when executing SubViewport.set_size_2d_override_stretch
2022-09-07 22:02:21 +08:00
MinusKube
f5a808192b
Prevent windows from having a size greater than device limit
2022-09-04 22:48:54 +02:00
bruvzg
57829b7cc4
Re-enable per-pixel transparency support on Linux, macOS, and Windows (for Vulkan and OpenGL rendering drivers).
2022-09-03 19:16:03 +03:00
Rémi Verschelde
02d510bd07
Merge pull request #63003 from Geometror/msaa-2d
2022-08-30 14:54:20 +02:00
Rémi Verschelde
43dfc12e72
Merge pull request #64883 from RandomShaper/vk_swapchain_sizing
...
Let platforms override the sizing of Vulkan swapchain and window
2022-08-30 07:28:21 +02:00
Pedro J. Estébanez
994d2faf97
Let platforms override the sizing of Vulkan swapchain and window
2022-08-25 19:16:36 +02:00
bruvzg
bcc3643989
Add font LCD sub-pixel anti-aliasing support.
2022-08-23 08:47:21 +03:00
clayjohn
bbbcdd725a
Remove requirement to have vertex positions when creating a mesh. Meshes can now be constructed from an index buffer alone
2022-08-19 14:50:12 -06:00
Hendrik Brucker
e96b1a2c0c
Implement MSAA for 2D [Vulkan only]
2022-08-13 01:09:48 +02:00
Pedro J. Estébanez
8a3bc72954
Apply correct formatting to comments in the Vulkan driver
2022-08-09 22:11:20 +02:00
Bastiaan Olij
4417fc6d43
For dev builds, keep track of resource names in the Vulkan driver
2022-08-09 14:47:22 +10:00