MethanePowered / MethaneKit

🎲 Modern 3D graphics made simple with C++17 cross-platform framework and rendering abstraction API on top of DirectX 12, Metal & Vulkan
Apache License 2.0
878 stars 52 forks source link

Vulkan monolithic state support for improved portability and bug fixes #127

Closed egorodet closed 1 year ago

egorodet commented 1 year ago

This update resolves Vulkan RHI portability blocker for Android and MoltenVK by introducing support of the monolithic pipeline state objects (PSO) and dropping requirement of extension VK_EXT_EXTENDED_DYNAMIC_STATE, which was made optional. Requirement of extension VK_KHR_SYNCHRONIZATION_2 was also dropped. Some newly discovered Vulkan validation layer issues were fixed to improve stability of Vulkan RHI.

NOTE: Vulkan support on MacOS via MoltenVK is still limited. Only "Hello Triangle" tutorial runs using Vulkan RHI successfully on MacOS. Other tutorials are blocked by a weired crash on command buffers submit to Transfer command queue (upload). Metal RHI is still able to run all applications on MacOS/iOS/tvOS without issues.

Graphics libraries

External libraries

Build

GitHub automatically disables all workflows with CRON schedule in Forked repositories.

codecov[bot] commented 1 year ago

Codecov Report

Patch coverage has no change and project coverage change: -0.30% :warning:

Comparison is base (4299e05) 29.89% compared to head (78f9f7e) 29.59%.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## master #127 +/- ## ========================================== - Coverage 29.89% 29.59% -0.30% ========================================== Files 375 376 +1 Lines 18455 18647 +192 Branches 1075 1082 +7 ========================================== Hits 5516 5516 - Misses 12762 12954 +192 Partials 177 177 ``` | Flag | Coverage Δ | | |---|---|---| | linux | `23.37% <0.00%> (-0.27%)` | :arrow_down: | | macosx | `48.45% <0.00%> (-0.34%)` | :arrow_down: | | unittests | `29.59% <0.00%> (-0.30%)` | :arrow_down: | | windows | `52.68% <0.00%> (-0.31%)` | :arrow_down: | Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=MethanePowered#carryforward-flags-in-the-pull-request-comment) to find out more. | [Files Changed](https://app.codecov.io/gh/MethanePowered/MethaneKit/pull/127?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=MethanePowered) | Coverage Δ | | |---|---|---| | [Modules/Data/Types/Include/Methane/Data/Rect.hpp](https://app.codecov.io/gh/MethanePowered/MethaneKit/pull/127?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=MethanePowered#diff-TW9kdWxlcy9EYXRhL1R5cGVzL0luY2x1ZGUvTWV0aGFuZS9EYXRhL1JlY3QuaHBw) | `98.75% <0.00%> (-1.25%)` | :arrow_down: | | [.../Primitives/Include/Methane/Graphics/ImageLoader.h](https://app.codecov.io/gh/MethanePowered/MethaneKit/pull/127?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=MethanePowered#diff-TW9kdWxlcy9HcmFwaGljcy9QcmltaXRpdmVzL0luY2x1ZGUvTWV0aGFuZS9HcmFwaGljcy9JbWFnZUxvYWRlci5o) | `0.00% <ø> (ø)` | | | [...rimitives/Sources/Methane/Graphics/ImageLoader.cpp](https://app.codecov.io/gh/MethanePowered/MethaneKit/pull/127?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=MethanePowered#diff-TW9kdWxlcy9HcmFwaGljcy9QcmltaXRpdmVzL1NvdXJjZXMvTWV0aGFuZS9HcmFwaGljcy9JbWFnZUxvYWRlci5jcHA=) | `0.00% <ø> (ø)` | | | [.../Methane/Graphics/Base/ParallelRenderCommandList.h](https://app.codecov.io/gh/MethanePowered/MethaneKit/pull/127?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=MethanePowered#diff-TW9kdWxlcy9HcmFwaGljcy9SSEkvQmFzZS9JbmNsdWRlL01ldGhhbmUvR3JhcGhpY3MvQmFzZS9QYXJhbGxlbFJlbmRlckNvbW1hbmRMaXN0Lmg=) | `0.00% <ø> (ø)` | | | [.../Include/Methane/Graphics/Base/RenderCommandList.h](https://app.codecov.io/gh/MethanePowered/MethaneKit/pull/127?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=MethanePowered#diff-TW9kdWxlcy9HcmFwaGljcy9SSEkvQmFzZS9JbmNsdWRlL01ldGhhbmUvR3JhcGhpY3MvQmFzZS9SZW5kZXJDb21tYW5kTGlzdC5o) | `0.00% <0.00%> (ø)` | | | [...I/Base/Include/Methane/Graphics/Base/RenderState.h](https://app.codecov.io/gh/MethanePowered/MethaneKit/pull/127?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=MethanePowered#diff-TW9kdWxlcy9HcmFwaGljcy9SSEkvQmFzZS9JbmNsdWRlL01ldGhhbmUvR3JhcGhpY3MvQmFzZS9SZW5kZXJTdGF0ZS5o) | `0.00% <0.00%> (ø)` | | | [...RHI/Base/Include/Methane/Graphics/Base/ViewState.h](https://app.codecov.io/gh/MethanePowered/MethaneKit/pull/127?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=MethanePowered#diff-TW9kdWxlcy9HcmFwaGljcy9SSEkvQmFzZS9JbmNsdWRlL01ldGhhbmUvR3JhcGhpY3MvQmFzZS9WaWV3U3RhdGUuaA==) | `0.00% <ø> (ø)` | | | [...ethane/Graphics/Base/ParallelRenderCommandList.cpp](https://app.codecov.io/gh/MethanePowered/MethaneKit/pull/127?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=MethanePowered#diff-TW9kdWxlcy9HcmFwaGljcy9SSEkvQmFzZS9Tb3VyY2VzL01ldGhhbmUvR3JhcGhpY3MvQmFzZS9QYXJhbGxlbFJlbmRlckNvbW1hbmRMaXN0LmNwcA==) | `0.00% <0.00%> (ø)` | | | [...ources/Methane/Graphics/Base/RenderCommandList.cpp](https://app.codecov.io/gh/MethanePowered/MethaneKit/pull/127?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=MethanePowered#diff-TW9kdWxlcy9HcmFwaGljcy9SSEkvQmFzZS9Tb3VyY2VzL01ldGhhbmUvR3JhcGhpY3MvQmFzZS9SZW5kZXJDb21tYW5kTGlzdC5jcHA=) | `0.00% <0.00%> (ø)` | | | [...Base/Sources/Methane/Graphics/Base/RenderState.cpp](https://app.codecov.io/gh/MethanePowered/MethaneKit/pull/127?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=MethanePowered#diff-TW9kdWxlcy9HcmFwaGljcy9SSEkvQmFzZS9Tb3VyY2VzL01ldGhhbmUvR3JhcGhpY3MvQmFzZS9SZW5kZXJTdGF0ZS5jcHA=) | `0.00% <0.00%> (ø)` | | | ... and [27 more](https://app.codecov.io/gh/MethanePowered/MethaneKit/pull/127?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=MethanePowered) | | ... and [1 file with indirect coverage changes](https://app.codecov.io/gh/MethanePowered/MethaneKit/pull/127/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=MethanePowered)

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

github-actions[bot] commented 1 year ago

Win32_VK_Release Test Results

github-actions[bot] commented 1 year ago

Win32_DX_Release Test Results

github-actions[bot] commented 1 year ago

Ubuntu_VK_Release Test Results

github-actions[bot] commented 1 year ago

Win64_VK_Release Test Results

github-actions[bot] commented 1 year ago

MacOS_MTL_Release Test Results

github-actions[bot] commented 1 year ago

Win64_DX_Release Test Results

sonarcloud[bot] commented 1 year ago

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

0.0% 0.0% Coverage
0.0% 0.0% Duplication

sonarcloud[bot] commented 1 year ago

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

0.0% 0.0% Coverage
0.0% 0.0% Duplication

sonarcloud[bot] commented 1 year ago

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

0.0% 0.0% Coverage
0.0% 0.0% Duplication

github-actions[bot] commented 1 year ago

Code Coverage

Package Line Rate Branch Rate Health
D:\a\MethaneKit\MethaneKit\Build\Output\Ninja-Win-DX-Scan\Install\Tests\MethaneDataEventsTest.exe 95% 100%
D:\a\MethaneKit\MethaneKit\Build\Output\Ninja-Win-DX-Scan\Install\Tests\MethaneDataRangeSetTest.exe 91% 100%
D:\a\MethaneKit\MethaneKit\Build\Output\Ninja-Win-DX-Scan\Install\Tests\MethaneDataTypesTest.exe 98% 100%
D:\a\MethaneKit\MethaneKit\Build\Output\Ninja-Win-DX-Scan\Install\Tests\MethaneGraphicsCameraTest.exe 61% 100%
D:\a\MethaneKit\MethaneKit\Build\Output\Ninja-Win-DX-Scan\Install\Tests\MethaneGraphicsRhiTest.exe 42% 100%
D:\a\MethaneKit\MethaneKit\Build\Output\Ninja-Win-DX-Scan\Install\Tests\MethaneGraphicsTypesTest.exe 98% 100%
D:\a\MethaneKit\MethaneKit\Build\Output\Ninja-Win-DX-Scan\Install\Tests\MethanePlatformInputTest.exe 43% 100%
D:\a\MethaneKit\MethaneKit\Build\Output\Ninja-Win-DX-Scan\Install\Tests\MethaneUserInterfaceTypesTest.exe 9% 100%
Summary 34% (4497 / 13373) 100% (0 / 0)
github-actions[bot] commented 1 year ago

Code Coverage

Package Line Rate Branch Rate Health
Default 38% 100%
Summary 38% (7679 / 20253) 100% (0 / 0)
github-actions[bot] commented 1 year ago

Code Coverage

Package Line Rate Branch Rate Health
Default 51% 21%
Summary 51% (12651 / 25024) 21% (3610 / 17254)