summaryrefslogtreecommitdiffstats
path: root/drivers/vulkan/rendering_device_vulkan.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Refactored 2D shader and lighting systemreduz2020-10-241-3/+3
| | | | | | | | | | -Removed normal/specular properties from nodes -Create CanvasTexture, which can contain normal/specular channels -Refactored, optimized and simplified 2D shaders -Use atlas for light textures. -Use a shadow atlas for shadow textures. -Use both items aboves to make light rendering stateless (faster). -Reorganized uniform sets for more efficiency.
* Fix invalid buffer updates in SDFGIreduz2020-10-191-0/+22
|
* Revert "Revert "Synchronization validation fix patch set 3 (inclusive of all ↵Juan Linietsky2020-10-191-67/+148
| | | | previous patches)""
* Revert "Synchronization validation fix patch set 3 (inclusive of all ↵Juan Linietsky2020-10-191-148/+67
| | | | previous patches)"
* Revert "Cause buffer_update to emit error if called during compute/draw list"Juan Linietsky2020-10-191-4/+0
|
* Merge pull request #40849 from jzulauf-lunarg/zulauf_buffer_update_err_msgJuan Linietsky2020-10-191-0/+4
|\ | | | | Cause buffer_update to emit error if called during compute/draw list
| * Cause buffer_update to emit error if called during compute/draw listJohn Zulauf2020-07-291-0/+4
| | | | | | | | Add error message to buffer update if a compute or draw list is active.
* | Add pre-copy barrier to buffer updateJohn Zulauf2020-10-161-1/+1
| | | | | | | | | | Add a barrier to "safe" the buffer update write from previous accesses to buffer range being updated. Remove duplicate unneed barrier.
* | Add subpass sync support for layout transitionsJohn Zulauf2020-10-161-0/+12
| | | | | | | | | | | | | | | | | | | | | | Add additional source and dest mask bits for "from external" and "to external" subpass dependencies (respectively) when intial and final layouts cause implicit layout transitions. This is a big hammer -- any transition in a given direction will create a full barrier. Attachment specific stage and access flags could be used instead with additional logic to deduce the prior and intended subsequent usages.
* | Sync fix for clear textureJohn Zulauf2020-10-161-12/+16
| | | | | | | | | | Make pre and post barriers non-conditional on format, as there are cases where pending operations in the GENERAL layout hazarding with clear.
* | Sync fix texture_get_data bad barrier paramJohn Zulauf2020-10-161-1/+1
| | | | | | | | Changed srcStageMask to the valid stage for post transfer barrier.
* | Additional synchronization fixes w/o FORCE_FULL_BARRIERJohn Zulauf2020-10-161-18/+76
| | | | | | | | | | Additional synchronization fixes from hazards arising from disabling FORCE_FULL_BARRIER.
* | Correct stage masks for storage texture barriersJohn Zulauf2020-10-161-1/+1
| | | | | | | | | | Change the srcStageMasks and dstStageMasks for the storage texture end draw barriers to refer to the correct stages for the use.
* | Add barrier for buffer gettingJohn Zulauf2020-10-161-34/+41
| | | | | | | | | | Add barrier for source buffer when getting. Refactor common "owner and stage/access" code to utility function.
* | Add fragment stage to texture copy/resolve barriersJohn Zulauf2020-10-161-4/+4
| | | | | | | | | | | | | | Added the fragment stage to the texture copy and resolve final barriers for source and dest. As the textures could subsequently be used by the fragment stage, this was triggering a validation error from the pre-alpha synchronization validation.
* | [Complex Test Layouts] Change `String` to use UTF-32 encoding on all platforms.bruvzg2020-09-031-10/+10
|/
* Vulkan: Fix struct init for VkClearAttachmentRémi Verschelde2020-07-221-27/+2
| | | | | | | | The changes from #38835 were not sufficient to fix #38829, as VkClearAttachment still had uninitialized member structs in its VkClearColor member struct. The struct rabbit hole goes deep and trying to do validation as done in #38829 doesn't appear realistic.
* Merge pull request #38835 from madmiraal/fix-38829Rémi Verschelde2020-07-221-6/+31
|\ | | | | Fix may be used unitialized warnings in _render_pass_create() and _draw_list_insert_clear_region().
| * Fix may be used unitialized warnings in _render_pass_create()Marcel Admiraal2020-05-191-6/+31
| | | | | | | | and _draw_list_insert_clear_region()
* | Merge pull request #40450 from asmaloney/spellingRémi Verschelde2020-07-211-11/+11
|\ \ | | | | | | Fix spelling & grammar in comments, docs, and messages
| * | Fix spelling & grammar in comments, docs, and messagesAndy Maloney2020-07-211-11/+11
| | |
* | | Fix spelling of a var, a struct, and message outputAndy Maloney2020-07-171-7/+7
|/ /
* | Addition of SDFGI for open world global illuminationJuan Linietsky2020-06-261-10/+203
| | | | | | | | Move GI to a deferred pass
* | Vulkan: Initialize struct members on declarationRémi Verschelde2020-06-031-6/+7
|/ | | | Supersedes and closes #38945.
* Merge pull request #38750 from madmiraal/fix-vulkan-uninitialized-warningRémi Verschelde2020-05-151-0/+6
|\ | | | | Silence mulitple may be used uninitialized warnings in RenderingDeviceVulkan::uniform_set_create()
| * Silence mulitple may be used uninitialized warnings inMarcel Admiraal2020-05-151-0/+6
| | | | | | | | RenderingDeviceVulkan::uniform_set_create()
* | Style: Enforce separation line between function definitionsRémi Verschelde2020-05-141-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I couldn't find a tool that enforces it, so I went the manual route: ``` find -name "thirdparty" -prune \ -o -name "*.cpp" -o -name "*.h" -o -name "*.m" -o -name "*.mm" \ -o -name "*.glsl" > files perl -0777 -pi -e 's/\n}\n([^#])/\n}\n\n\1/g' $(cat files) misc/scripts/fix_style.sh -c ``` This adds a newline after all `}` on the first column, unless they are followed by `#` (typically `#endif`). This leads to having lots of places with two lines between function/class definitions, but clang-format then fixes it as we enforce max one line of separation. This doesn't fix potential occurrences of function definitions which are indented (e.g. for a helper class defined in a .cpp), but it's better than nothing. Also can't be made to run easily on CI/hooks so we'll have to be careful with new code. Part of #33027.
* | Style: clang-format: Disable KeepEmptyLinesAtTheStartOfBlocksRémi Verschelde2020-05-141-121/+0
|/ | | | | | | | | | | | | | Which means that reduz' beloved style which we all became used to will now be changed automatically to remove the first empty line. This makes us lean closer to 1TBS (the one true brace style) instead of hybridating it with some Allman-inspired spacing. There's still the case of braces around single-statement blocks that needs to be addressed (but clang-format can't help with that, but clang-tidy may if we agree about it). Part of #33027.
* New lightmapperJuan Linietsky2020-05-101-1/+9
| | | | | | | -Added LocalVector (needed it) -Added stb_rect_pack (It's pretty cool, we could probably use it for other stuff too) -Fixes and changes all around the place -Added library for 128 bits fixed point (required for Delaunay3D)
* Style: clang-format: Disable AllowShortCaseLabelsOnASingleLineRémi Verschelde2020-05-101-99/+197
| | | | Part of #33027.
* Add proper type to most public API uses of ArrayJuan Linietsky2020-04-211-2/+2
|
* Exposed RenderingDevice to script APIJuan Linietsky2020-04-201-25/+25
| | | | | | | | | | | | | Also added an easier way to load native GLSL shaders. Extras: Had to fix no-cache for subresources in resource loader, it was not properly working, making shaders not properly reload. Note: The precommit hooks are broken because they don't seem to support enums from one class being used in another. Feel free to fix this after merging this PR.
* Ability to create local RenderingDevice instances.Juan Linietsky2020-04-181-70/+145
|
* Fixes leaks in ResourceCache, Vulkan and X11qarmin2020-04-151-0/+5
|
* Implement decalsJuan Linietsky2020-04-141-4/+4
| | | | | | Also implemented decal atlas, so projectors and other stuff can be added. Sidenote: Had to make RID hashable, so some unrelated includes changed in order to include it in hashfuncs.h
* Implement MSAAJuan Linietsky2020-04-121-0/+153
|
* Merge pull request #37808 from reduz/port-effects-to-computeJuan Linietsky2020-04-111-31/+55
|\ | | | | Moved most of the effect code to compute.
| * Moved most of the effect code to compute.Juan Linietsky2020-04-111-31/+55
| | | | | | | | | | Simplifies it and improves performance. Improves image barrier handling per mipmap on RenderingDeviceVulkan
* | Shows proper scene render time in editor infoJuan Linietsky2020-04-101-1/+34
|/ | | | Also fixed GPU profiler, which was not working on nvidia hardware.
* Merge pull request #36919 from nekomatata/android-vulkan-renderingRémi Verschelde2020-04-091-3/+9
|\ | | | | Vulkan rendering support on Android
| * Display Server supportPouleyKetchoupp2020-04-081-1/+4
| |
| * Vulkan rendering for AndroidPouleyKetchoupp2020-04-031-3/+6
| |
* | Merge pull request #37586 from qarmin/vulkan_allocator_leakRémi Verschelde2020-04-071-0/+1
|\ \ | | | | | | Fix leak with Vulkan allocator
| * | Fix leak with Vulkan allocatorqarmin2020-04-041-0/+1
| |/
* | Merge pull request #37635 from qarmin/leak_vertexRémi Verschelde2020-04-061-0/+7
|\ \ | | | | | | Fixed leak with vertex_formats
| * | Fixed leak with vertex_formatsqarmin2020-04-061-0/+7
| |/
* / Vulkan: Use VK_NULL_HANDLE for handles, fixes 32-bit buildsRémi Verschelde2020-04-061-8/+9
|/ | | | | | | | | | | | | | Some Vulkan types are defined as "non dispatchable handles" and use a different typedef on 32-bit and 64-bit systems (struct pointer on 64-bit, `uint64_t` otherwise). https://github.com/KhronosGroup/Vulkan-Headers/blob/0e78ffd1dcfc3e9f14a966b9660dbc59bd967c5c/include/vulkan/vulkan_core.h#L59-L65 Contrarily to `NULL`, `nullptr` can't be converted to `uint64_t` so build was now failing on 32-bit after converting the codebase from using `NULL` to `nullptr`. Fixes #37620.
* Replace NULL with nullptrlupoDharkael2020-04-021-190/+190
|
* Added a Window node, and made it the scene root.Juan Linietsky2020-03-261-3/+3
| | | | Still a lot of work to do.
* Style: Set clang-format Standard to Cpp11Rémi Verschelde2020-03-171-8/+8
| | | | | | | | | | For us, it practically only changes the fact that `A<A<int>>` is now used instead of the C++03 compatible `A<A<int> >`. Note: clang-format 10+ changed the `Standard` arguments to fully specified `c++11`, `c++14`, etc. versions, but we can't use `c++17` now if we want to preserve compatibility with clang-format 8 and 9. `Cpp11` is still supported as deprecated alias for `Latest`.