summaryrefslogtreecommitdiff
path: root/drivers/vulkan/vulkan_context.cpp
AgeCommit message (Collapse)Author
2020-11-28Better error handling of vkEnumerateInstanceExtensionPropertiesHanif Bin Ariffin
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-18allow vulkan validation layers in release builds if explicity asked forJordan Schidlowsky
2020-11-16Remove empty lines around braces with the formatting scriptAaron Franke
2020-11-14Fixes crash if Vulkan presentation surface is not available.bruvzg
2020-11-07Reorganized core/ directory, it was too fatty alreadyreduz
-Removed FuncRef, since Callable makes it obsolete -Removed int_types.h as its obsolete in c++11+ -Changed color names code
2020-10-27Vulkan: Make validation layers optionalRémi Verschelde
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-07-21Fix spelling & grammar in comments, docs, and messagesAndy Maloney
2020-07-13Add error messages if Vulkan init failed, prevent Vulkan context freeing ↵bruvzg
uninitialized device and instance.
2020-05-14Style: Enforce separation line between function definitionsRémi Verschelde
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-14Style: clang-format: Disable KeepEmptyLinesAtTheStartOfBlocksRémi Verschelde
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-10New lightmapperJuan Linietsky
-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-10Style: clang-format: Disable AllowShortIfStatementsOnASingleLineRémi Verschelde
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-04-26[Vulkan] Use `VK_LAYER_KHRONOS_validation` instead of deprecated ↵bruvzg
`VK_LAYER_LUNARG_standard_validation`.
2020-04-18Ability to create local RenderingDevice instances.Juan Linietsky
2020-04-15Fixes leaks in ResourceCache, Vulkan and X11qarmin
2020-04-14Fixes leaks with Vulkan device and instanceqarmin
2020-04-06Vulkan: Use VK_NULL_HANDLE for handles, fixes 32-bit buildsRémi Verschelde
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.
2020-04-02Replace NULL with nullptrlupoDharkael
2020-03-26Added a Window node, and made it the scene root.Juan Linietsky
Still a lot of work to do.
2020-03-10Revert "Enhanced physical device selection to use device type and available ↵Rémi Verschelde
memory in relation to issue #35397" This reverts commit 4f3006e5ac30d00b90eb531f3bdfd4bfa0d4025b.
2020-03-10Initializes VulkanContext::queue_props to NULLHaoyu Qiu
2020-03-04Vulkan: Use Godot print macros matching MessageSeverity flagRémi Verschelde
Otherwise any verbose/info/warning debug message from Vulkan would raise an error, confusing users about the severity of the message. Cf. #36185, #36790.
2020-03-04Merge pull request #36585 from disks86/masterRémi Verschelde
Enhanced physical device selection
2020-02-29Adds null check of pMessageIdNameHaoyu Qiu
2020-02-28Enhanced physical device selection to use device type and available memory ↵Christopher Joseph Dean Schaefer
in relation to issue #35397
2020-02-27Merge pull request #36186 from Calinou/remove-vulkan-debugging-printsRémi Verschelde
Remove Vulkan debugging prints
2020-02-22Vulkan: Work around false positive on 64-bit Linux w/ 32-bit ICDsRémi Verschelde
In the vast majority of cases, this will be a false positive error thrown by Vulkan-Loader when a Linux system has Vulkan ICDs for both 32-bit and 64-bit. The error is of the form: ``` ERROR: [Loader Message] Code 0 : /usr/lib/libvulkan_intel.so: wrong ELF class: ELFCLASS32 ERROR: [Loader Message] Code 0 : /usr/lib/libvulkan_radeon.so: wrong ELF class: ELFCLASS32 ``` The loader dlopen's the 32-bit ICDs first, raises this error, and then happily goes on to try and use the 64-bit ICDs. Upstream report: https://github.com/KhronosGroup/Vulkan-Loader/issues/262 Fixes #36185.
2020-02-18Fix VisualStudio throwing multiple C4996 warnings in vulkan_context.cpp.Marcel Admiraal
Use Godot's String to concatenate C-strings instead of strcat and sprintf, which are unsafe, because they don't check for buffer overflows.
2020-02-14Fix various GCC compilation warnings after Vulkan mergeRémi Verschelde
Part of #36132.
2020-02-13Remove Vulkan debugging printsHugo Locurcio
2020-02-13Fixes some memory leaksHaoyu Qiu
2020-02-11Vulkan: Move thirdparty code out of drivers, style fixesRémi Verschelde
- `vk_enum_string_helper.h` is a generated file taken from the SDK (Vulkan-ValidationLayers). - `vk_mem_alloc.h` is a library from GPUOpen: https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator
2020-02-11Dynamic object support for GI Probes (a bit buggy still)Juan Linietsky
2020-02-11More GIProbe work and fixesJuan Linietsky
2020-02-11GIProbes working.Juan Linietsky
2020-02-11Environment sky more or less working.Juan Linietsky
2020-02-11Add static Vulkan loader.bruvzg
Initial Vulkan support for Windows. Initial Vulkan support for macOS.
2020-02-11Completed material/2D shader support (missing SCREEN_TEXTURE)Juan Linietsky
2020-02-11Modified light rendering to make it more compatible.Juan Linietsky
Modified polygon management to make it more compatible with MoltenVK
2020-02-11Added ability to retrieve back textures stored on GPUJuan Linietsky
2020-02-11basic 2D engine is more or less working with Vulkan, including editor.Juan Linietsky
Still a lot to do
2020-02-11Basic 2D engine is more or less working, needs more work for editor to be ↵Juan Linietsky
usable.
2020-02-11Initial work on Vulkan:Juan Linietsky
-Added VulkanContext -Added an X11 implementation -Added a rendering device abstraction -added a Vulkan rendering device abstraction -Engine does not work, only shows Godot logo (run it from bin/)