Commit graph

140 commits

Author SHA1 Message Date
Aaron Franke
19bdd01438
Rename RD uniform "type" to "uniform_type"
"type" isn't very descriptive for exposed code, and this variable is exposed via RD_SETGET.
2020-12-04 19:34:50 -05:00
reduz
70f5972905 Refactored Mesh internals and formats.
-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.
2020-12-02 13:07:59 -03:00
Hanif Bin Ariffin
cc2097c79c Better error handling of vkEnumerateInstanceExtensionProperties
Refer: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEnumerateInstanceExtensionProperties.html
According to the documentation, there are 2 success code:
1. VK_SUCCESS
2. VK_INCOMPLETE

VK_INCOMPLETE will be returned when not all avaiable properties are returned.
2020-11-28 19:28:23 +08:00
Rafał Mikrut
7bd03b7188 Initialize class/struct variables with default values in core/ and drivers/ 2020-11-23 17:38:46 +01:00
Jordan Schidlowsky
e9527d0353 allow vulkan validation layers in release builds if explicity asked for 2020-11-18 14:07:28 -06:00
Aaron Franke
02161aad5a
Remove empty lines around braces with the formatting script 2020-11-16 23:38:11 -05:00
bruvzg
f09a37a8d5
Fixes crash if Vulkan presentation surface is not available. 2020-11-14 13:41:13 +02:00
reduz
127458ed17 Reorganized core/ directory, it was too fatty already
-Removed FuncRef, since Callable makes it obsolete
-Removed int_types.h as its obsolete in c++11+
-Changed color names code
2020-11-07 20:17:12 -03:00
John Zulauf
784f8fbbe5 Synchronization - Clean subpass dependency init
Fix incorrect subpass dependency initialization
2020-10-29 15:53:47 -06:00
Rémi Verschelde
6a951267ae
vulkan: Backport build fix for MinGW-w64 8.0.0
Taken from https://github.com/KhronosGroup/Vulkan-Loader/pull/475.

Supersedes and reverts #43119 since the upstream change removes the need for
that custom define.
2020-10-29 12:47:35 +01:00
reduz
8ab9b39707 Implement CanvasGroup and CanvasItem clipping
-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.
2020-10-28 18:53:32 -03:00
Rémi Verschelde
54e6338c9b
Vulkan: Make validation layers optional
They're now disabled by default, and can be enabled with the command line
argument `--vk-layers`.

When enabled, the errors about them being missing are now warnings, as
users were confused and thought this meant Vulkan is broken for them.

Fix crash in `~VulkanContext` when validation layers are disabled (exposed by
this PR since before they could not be disabled without source modification).

Also moved VulkanContext member initializations to header.

Fixes #37102.
2020-10-27 16:19:15 +01:00
K. S. Ernest (iFire) Lee
b2d5b619fd Changes for 43094 mingw llvm build error. 2020-10-26 19:58:44 -07:00
Rémi Verschelde
825ab3b784
Merge pull request #42817 from akien-mga/vulkan-sdk-1.2.154.0
vulkan: Sync loader, headers and glslang to sdk-1.2.154.0
2020-10-26 15:15:19 +01:00
rsjtdrjgfuzkfg
b1f95e150e Fix crash in RenderingDeviceVulkan::shader_create
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.
2020-10-25 22:32:10 +01:00
reduz
84d734da0e Refactored 2D shader and lighting system
-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.
2020-10-24 15:57:25 -03:00
reduz
dd0b097e44 Fix invalid buffer updates in SDFGI 2020-10-19 17:39:09 -03:00
Juan Linietsky
c71e941ee8
Revert "Revert "Synchronization validation fix patch set 3 (inclusive of all previous patches)"" 2020-10-19 17:32:19 -03:00
Juan Linietsky
f11f28936d
Revert "Synchronization validation fix patch set 3 (inclusive of all previous patches)" 2020-10-19 17:04:24 -03:00
Juan Linietsky
791b259a63
Revert "Cause buffer_update to emit error if called during compute/draw list" 2020-10-19 17:00:13 -03:00
Juan Linietsky
5f65eba5c4
Merge pull request #40849 from jzulauf-lunarg/zulauf_buffer_update_err_msg
Cause buffer_update to emit error if called during compute/draw list
2020-10-19 14:10:41 -03:00
John Zulauf
d2083282c0 Add pre-copy barrier to buffer update
Add a barrier to "safe" the buffer update write from previous accesses
to buffer range being updated.  Remove duplicate unneed barrier.
2020-10-16 19:18:33 -06:00
John Zulauf
459fa078e0 Add subpass sync support for layout transitions
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.
2020-10-16 19:17:07 -06:00
John Zulauf
5191a8e9db Sync fix for clear texture
Make pre and post barriers non-conditional on format, as there are cases
where pending operations in the GENERAL layout hazarding with clear.
2020-10-16 15:50:48 -06:00
John Zulauf
9a9f667818 Sync fix texture_get_data bad barrier param
Changed srcStageMask to the valid stage for post transfer barrier.
2020-10-16 15:43:51 -06:00
John Zulauf
3a1f14461a Additional synchronization fixes w/o FORCE_FULL_BARRIER
Additional synchronization fixes from hazards arising from disabling
FORCE_FULL_BARRIER.
2020-10-16 11:33:02 -06:00
John Zulauf
474fc19601 Correct stage masks for storage texture barriers
Change the srcStageMasks and dstStageMasks for the storage texture end
draw barriers to refer to the correct stages for the use.
2020-10-16 11:33:02 -06:00
John Zulauf
d92f2e4a2d Add barrier for buffer getting
Add barrier for source buffer when getting.  Refactor common "owner and
stage/access" code to utility function.
2020-10-16 11:33:02 -06:00
John Zulauf
5a77eb5a83 Add fragment stage to texture copy/resolve barriers
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.
2020-10-16 11:33:02 -06:00
Rémi Verschelde
148ad49c93
vulkan: Sync loader, headers and glslang to sdk-1.2.154.0
Actually sdk-1.2.154.1 for Vulkan-Loader.

glslang is updated to bacaef3237c515e40d1a24722be48c0a0b30f75f which is the
known-good version for Vulkan-ValidationLayers 1.2.154.0.

COPYRIGHT.txt was synced with the current version of the glslang LICENSE.txt,
and `glslang/register_types.cpp` now uses the upstream definition for its
default builtin resource instead of hardcoding it.
2020-10-15 12:29:42 +02:00
bruvzg
80b8eff6aa
[Complex Test Layouts] Change String to use UTF-32 encoding on all platforms. 2020-09-03 19:56:24 +03:00
John Zulauf
98d677ef26 Cause buffer_update to emit error if called during compute/draw list
Add error message to buffer update if a compute or draw list is active.
2020-07-29 14:13:37 -06:00
Rémi Verschelde
3b340985cc SCons: Support linking system Vulkan loader while using vendored VMA 2020-07-26 13:20:08 +02:00
Sergey Minakov
fe60815d66 iOS SCons: static Vulkan binary usage
Add VMA to iphone platform Use linkflag for iphone building to enforce static linking. Works fine with dynamic '.framework' library
Updated xcode project to use '.a' static library
2020-07-25 21:55:25 +02:00
Rémi Verschelde
dfdfee04df Vulkan: Fix struct init for VkClearAttachment
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.
2020-07-22 16:31:22 +02:00
Rémi Verschelde
f54fd5ac10
Merge pull request #38835 from madmiraal/fix-38829
Fix may be used unitialized warnings in _render_pass_create() and  _draw_list_insert_clear_region().
2020-07-22 16:12:54 +02:00
Rémi Verschelde
a5fb445121
Merge pull request #40450 from asmaloney/spelling
Fix spelling & grammar in comments, docs, and messages
2020-07-21 22:14:04 +02:00
Andy Maloney
4dda62f591 Fix spelling & grammar in comments, docs, and messages 2020-07-21 15:17:23 -04:00
Andy Maloney
8b949918b1 Fix spelling of a var, a struct, and message output 2020-07-17 12:02:06 -04:00
bruvzg
996910b627
Add error messages if Vulkan init failed, prevent Vulkan context freeing uninitialized device and instance. 2020-07-13 19:24:21 +03:00
Juan Linietsky
201d606b3d Addition of SDFGI for open world global illumination
Move GI to a deferred pass
2020-06-26 11:06:48 -03:00
Rémi Verschelde
5e62a2ee75 Vulkan: Initialize struct members on declaration
Supersedes and closes #38945.
2020-06-03 13:18:22 +02:00
Marcel Admiraal
19d3e17f01 Fix may be used unitialized warnings in _render_pass_create()
and  _draw_list_insert_clear_region()
2020-05-19 04:14:57 +01:00
Rémi Verschelde
4f23215395
Merge pull request #38750 from madmiraal/fix-vulkan-uninitialized-warning
Silence mulitple may be used uninitialized warnings in RenderingDeviceVulkan::uniform_set_create()
2020-05-15 18:02:56 +02:00
Marcel Admiraal
8f0b3392c3 Silence mulitple may be used uninitialized warnings in
RenderingDeviceVulkan::uniform_set_create()
2020-05-15 11:48:06 +01:00
Rémi Verschelde
07bc4e2f96 Style: Enforce separation line between function definitions
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.
2020-05-14 16:54:55 +02:00
Rémi Verschelde
0be6d925dc Style: clang-format: Disable KeepEmptyLinesAtTheStartOfBlocks
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.
2020-05-14 16:54:55 +02:00
Juan Linietsky
1bea8e1eac New lightmapper
-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)
2020-05-10 15:59:09 -03:00
Rémi Verschelde
69de7ce38c Style: clang-format: Disable AllowShortCaseLabelsOnASingleLine
Part of #33027.
2020-05-10 13:13:54 +02:00
Rémi Verschelde
e956e80c1f Style: clang-format: Disable AllowShortIfStatementsOnASingleLine
Part of #33027, also discussed in #29848.

Enforcing the use of brackets even on single line statements would be
preferred, but `clang-format` doesn't have this functionality yet.
2020-05-10 13:12:16 +02:00