summaryrefslogtreecommitdiffstats
path: root/drivers/vulkan/rendering_device_vulkan.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Merge pull request #50847 from reduz/implement-binary-shader-compilationRémi Verschelde2021-07-261-108/+403
|\ | | | | Implement Binary Shader Compilation
| * Implement Binary Shader Compilationreduz2021-07-261-108/+403
| | | | | | | | | | | | | | | | | | | | * Added an extra stage before compiling shader, which is generating a binary blob. * On Vulkan, this allows caching the SPIRV reflection information, which is expensive to parse. * On other (future) RenderingDevices, it allows caching converted binary data, such as DXIL or MSL. This PR makes the shader cache include the reflection information, hence editor startup times are significantly improved. I tested this well and it appears to work, and I added a lot of consistency checks, but because it includes writing and reading binary information, rare bugs may pop up, so be aware. There was not much of a choice for storing the reflection information, given shaders can be a lot, take a lot of space and take time to parse.
* | Fix various typosluz paz2021-07-251-2/+2
|/ | | Follow-up typos found via `codespell -q 3 -S ./thirdparty,*.po,./DONORS.md -L ackward,ang,ans,ba,beng,cas,childs,childrens,dof,doubleclick,fave,findn,hist,inout,leapyear,lod,nd,numer,ois,ony,paket,seeked,sinc,switchs,te,uint`
* Use const references where possible for List range iteratorsRémi Verschelde2021-07-251-2/+2
|
* Use C++ iterators for Lists in many situationsAaron Franke2021-07-231-5/+5
|
* Fixes to forward mobilereduz2021-07-151-1/+1
| | | | | | * use valid format for framebuffer: VK_FORMAT_A2B10G10R10_UNORM_PACK32 * Unfortunately cant be used for compute. * Mobile will need to do refprobe, sky, mipmapblurring using raster.
* Use specialization constants in clustered rendererreduz2021-07-121-10/+8
| | | | | | | * Keep track of when projector, softshadow or directional sofshadow were enabled. * Enable them via specializaton constant where it makes sense. * Re-implements soft shadows. * Re-implements light projectors.
* Implement Specialization Constantsreduz2021-07-111-4/+156
| | | | | | * Added support to our local copy of SpirV Reflect (which does not support it). * Pass them on render or compute pipeline creation. * Not implemented in our shaders yet.
* Fix material invalidation on reimport.reduz2021-07-071-0/+11
| | | | | | * IF a texture was reimported (calling replace as an example), it would invalidate all materials using it, causing plenty of errors. * Added the possibility to get a notification when a uniform set is erased. * With this notification, materials can be queued for update properly.
* Fix threaded update for texturesreduz2021-07-071-5/+9
| | | | | * Previews and other stuff now works again. * Not the best solution, will have to be improved in the future usinc async queues where supported.
* Fix Render Inforeduz2021-07-031-5/+15
| | | | | | | | * Fixed and redone the process to obtain render information from a viewport * Some stats, such as material changes are too difficult to guess on Vulkan, were removed. * Separated visible and shadow stats, which causes confusion. * Texture, buffer and general video memory can be queried now. * Fixed the performance metrics too.
* Fix Context Validation Layer Errorsreduz2021-06-281-1/+4
| | | | | | | * Multisampling was wrongly selected, possibly fixes #49937 * Image semaphore acquisition is now per window, possibly fixes #41614 Please make sure to test the above two issues again, since I can't reproduce either anyway.
* Implement Framebuffer Subpass supportreduz2021-06-241-222/+559
| | | | | * Required for better optimizing mobile platforms * Will be used by the Vulkan mobile renderer.
* Add stereoscopic rendering through multiviewBastiaan Olij2021-06-131-6/+38
|
* Core: Move DirAccess and FileAccess to `core/io`Rémi Verschelde2021-06-111-1/+1
| | | | | File handling APIs are typically considered part of I/O, and we did have most `FileAccess` implementations in `core/io` already.
* Style: Cleanup uses of double spaces between wordsRémi Verschelde2021-06-071-1/+1
| | | | | Or after punctuation. Tried to leave third-party stuff alone, unless it has been heavily modified for Godot.
* Cleanup vulkan capabilities check and add multiview checkBastiaan Olij2021-05-061-0/+4
|
* Tweak warning messages related to leaked RIDsHugo Locurcio2021-05-031-2/+10
| | | | | | - Use hardcoded pluralization for messages. - Since these messages are English-only, it's fine to hardcode it. - Use double quotes for consistency with other messages.
* Core: Drop custom `copymem`/`zeromem` definesRémi Verschelde2021-04-271-5/+5
| | | | | | | | We've been using standard C library functions `memcpy`/`memset` for these since 2016 with 67f65f66391327b2967a20a89c3627e1dd6e84eb. There was still the possibility for third-party platform ports to override the definitions with a custom header, but this doesn't seem useful anymore.
* Merge pull request #47283 from Panquesito7/fix_lgtm_alertsRémi Verschelde2021-03-311-3/+3
|\ | | | | fix: 3 LGTM alerts/warnings
| * fix: 3 LGTM alerts/warningsDavid Leal2021-03-311-3/+3
| |
* | Obtain supported Vulkan APIBastiaan Olij2021-03-261-0/+13
|/
* Fixes small typos and grammar correctionAnshul7sp12021-03-121-12/+12
|
* Fixes to get Godot running again on Intel IGPreduz2021-02-051-2/+12
| | | | | -Fixed strange bug with shadowed instance_param (this should not have worked anywhere, odd..) -Cleaned up barrier usage further.
* Rewrote how barriers work for faster renderingreduz2021-02-041-34/+262
| | | | | | | | | | | -Added more finegrained control in RenderingDevice API -Optimized barriers (use less ones for thee same) -General optimizations -Shadows render all together unbarriered -GI can render together with shadows. -SDFGI can render together with depth-preoass. -General fixes -Added GPU detection
* Reorganize RenderingDevice barriersreduz2021-01-261-80/+301
| | | | | | | -Removed sync to draw, now everything syncs to draw by default. -Fixed many validation layer errors. -Added support for VkImageViewUsageCreateInfo to fix validation layer warnings. -Texture, buffer, raster and compute functions now all allow spcifying which barriers will be used.
* Add named resources and debug labels in RenderDocclayjohn2021-01-251-0/+66
|
* Shadow map rendering optimizationreduz2021-01-241-8/+16
| | | | | | | -All shadow rendering is done with raster now (no compute) -All shadow rendering is done by rendering directly to the shadow atlas -Improved how buffer clearing is done to optimize the above. -Ability to set shadows as 16 bits.
* Added GPU based cluster builderreduz2021-01-191-7/+38
| | | | Clustering is now GPU based, uses an implementation based on the Activision algorithm.
* spirv-reflect: Update to upstream commit c0ce03a (Jan 6, 2021)Rémi Verschelde2021-01-081-0/+4
|
* Threaded optimizations to cull and renderreduz2021-01-051-7/+7
| | | | | -Reorganize thread work pool for rendering -Fixes to make secondary command buffers to work (disabled because they need more testing)
* Merge pull request #44842 from clayjohn/VULKAN-SSAO-2Rémi Verschelde2021-01-041-1/+10
|\ | | | | SSAO renames and move push constant binding
| * SSAO cleanup and fixesclayjohn2021-01-031-1/+10
| |
* | Update copyright statements to 2021Rémi Verschelde2021-01-011-2/+2
|/ | | | | | | | | | | | | | Happy new year to the wonderful Godot community! 2020 has been a tough year for most of us personally, but a good year for Godot development nonetheless with a huge amount of work done towards Godot 4.0 and great improvements backported to the long-lived 3.2 branch. We've had close to 400 contributors to engine code this year, authoring near 7,000 commit! (And that's only for the `master` branch and for the engine code, there's a lot more when counting docs, demos and other first-party repos.) Here's to a great year 2021 for all Godot users 🎆
* Rename empty() to is_empty()Marcel Admiraal2020-12-281-1/+1
|
* Port ASSAO to Godot to replace SAOclayjohn2020-12-211-2/+13
|
* Merge pull request #44521 from madmiraal/rename-rect2-clipRémi Verschelde2020-12-191-1/+1
|\ | | | | Rename Rect2 and Rect2i clip() to intersection()
| * Rename Rect2 and Rect2i clip() to intersection()Marcel Admiraal2020-12-191-1/+1
| |
* | Fix error spam on wrong attachmentreduz2020-12-191-6/+12
|/ | | | | -For now, disable reading from depth this was always broken, needs to be fixed later -Give better error showing binding and set when this happens.
* Reimplement skeletons and blend shapesreduz2020-12-161-3/+16
| | | | Uses compute shaders, which only once, on demand, and all in parallel.
* Static analyzer fixes:bruvzg2020-12-091-2/+2
| | | | | | Removes unused code in OS. Fixes return types. Fixes few typos.
* Rename RD texture "type" to "texture_type"Aaron Franke2020-12-041-7/+7
| | | "type" isn't very descriptive for exposed code, and this variable is exposed via RD_SETGET.
* Rename RD uniform "type" to "uniform_type"Aaron Franke2020-12-041-3/+3
| | | "type" isn't very descriptive for exposed code, and this variable is exposed via RD_SETGET.
* Refactored Mesh internals and formats.reduz2020-12-021-1/+2
| | | | | | | | | | | | | | | -Changed how mesh data is organized, hoping to make it more efficient on Vulkan and GLES. -Removed compression, it now always uses the most efficient format. -Added support for custom arrays (up to 8 custom formats) -Added support for 8 weights in skeleton data. -Added a simple optional versioning system for imported assets, to reimport if binary is newer -Fixes #43979 (I needed to test) WARNING: -NOT backwards compatible with previous 4.x-devel, will most likely never be, but it will force reimport scenes due to version change. -NOT backwards compatible with 3.x scenes, this will be eventually re-added. -Skeletons not working any longer, will fix in next PR.
* Initialize class/struct variables with default values in core/ and drivers/Rafał Mikrut2020-11-231-1/+0
|
* Remove empty lines around braces with the formatting scriptAaron Franke2020-11-161-8/+0
|
* Reorganized core/ directory, it was too fatty alreadyreduz2020-11-071-2/+2
| | | | | | -Removed FuncRef, since Callable makes it obsolete -Removed int_types.h as its obsolete in c++11+ -Changed color names code
* Synchronization - Clean subpass dependency initJohn Zulauf2020-10-291-3/+3
| | | | Fix incorrect subpass dependency initialization
* Implement CanvasGroup and CanvasItem clippingreduz2020-10-281-5/+4
| | | | | | | | -Allows merging several 2D objects into a single draw operation -Use current node to clip children nodes -Further fixes to Vulkan barriers -Changed font texture generation to white, fixes dark eges when blurred -Other small misc fixes to backbuffer code.
* Fix crash in RenderingDeviceVulkan::shader_creatersjtdrjgfuzkfg2020-10-251-1/+3
| | | | | | | This commit moves the declaration of a local variable to ensure its scope survives long enough; at least in some versions of GCC and LLVM the associated memory was freed too early and thus caused issues ranging from black screens to crashes.