100 Commits

Author SHA1 Message Date
sunshineinabox
381abda2c8 Primitive restart is enabled/disabled based on the original topology before its converted to its topology class, make this behavior consistent 2024-09-09 09:01:00 -07:00
sunshineinabox
1cb35a42db Rework to reduce code duplication and possibility of error.
Reduce number of pipelines?
2024-09-07 17:26:26 -07:00
sunshineinabox
2846e88a5d Clean up and some housekeeping 2024-09-04 19:51:26 -07:00
sunshineinabox
1fa1c7b01d Need to test this on Windows 2024-09-02 21:09:09 -07:00
sunshineinabox
91c3ac2701 Revert a change 2024-09-02 16:22:10 -07:00
sunshineinabox
a7409e6fba Some missed changes 2024-09-02 12:40:29 -07:00
sunshineinabox
5e86d5e178 There will still be an issue with extension is supported and dynmaic state is not 2024-09-01 21:33:05 -07:00
sunshineinabox
09b8095584 Avoid changing feedback loop aspect if extension is not supported prevents failed pipeline compiles (or seemingly incompatible) 2024-09-01 19:21:44 -07:00
sunshineinabox
6464f97973
Merge branch 'master' into MoreDynamicStatesPartOne 2024-09-01 18:43:34 -07:00
sunshineinabox
2298362e7f Resolve remaining pipeline creation errors when extended pipeline states extension not supported 2024-09-01 18:17:19 -07:00
riperiperi
ca59c3f499
Vulkan: Feedback loop detection and barriers (#7226)
* Vulkan: Feedback loop improvements

This PR allows the Vulkan backend to detect attachment feedback loops. These are currently used in the following ways:

- Partial use of VK_EXT_attachment_feedback_loop_layout
  - All renderable textures have AttachmentFeedbackLoopBitExt
  - Compile pipelines with Color/DepthStencil feedback loop flags when present
- Support using FragmentBarrier for feedback loops (fixes regressions from https://github.com/Ryujinx/Ryujinx/pull/7012 )

TODO:
- AMD GPUs may need layout transitions for it to properly allow textures to be used in feedback loops.
- Use dynamic state for feedback loops. The background pipeline will always miss since feedback loop state isn't known on the GPU project.
- How is the barrier dependency flag used? (DXVK just ignores it, there's no vulkan validation...)
- Improve subpass dependencies to fix validation errors

* Mark field readonly

* Add feedback loop dynamic state

* fix: add MoltenVK resolver workaround

fix: add MoltenVK resolver workaround

* Formatting

* Fix more complaints

* RADV dcc workaround

* Use dynamic state properly, cleanup.

* Use aspects flags in more places
2024-09-01 21:28:16 -03:00
sunshineinabox
07f80bdbb7 Resolve some pipeline creation issue when extended dynamic states are not supported 2024-09-01 16:41:36 -07:00
sunshineinabox
3e5b946289
Merge branch 'master' into MoreDynamicStatesPartOne 2024-09-01 14:54:00 -07:00
riperiperi
398fa1c238
Vulkan: Update Silk.NET to 2.21 (#7266)
* Update Silk.NET version

* fix: add MoltenVK resolver workaround

fix: add MoltenVK resolver workaround

* Cleanup

* Readonly ref warnings

* Remove driver id todo
2024-09-01 17:33:11 -03:00
sunshineinabox
674288a71f Avoid creating pipelines for each topology. 2024-08-12 22:09:09 -07:00
sunshineinabox
2d1af4ddb4 Set a default topology state that can be overwritten later if needed. 2024-08-12 20:57:08 -07:00
sunshineinabox
d6f05044ea Set stride to 0 if Vertex Input dynamic state is enabled 2024-08-10 16:49:05 -07:00
sunshineinabox
42c47e408d If dynamic states are enabled use default values for calculation uuid 2024-08-10 16:35:30 -07:00
sunshineinabox
af31a14c77 Spec states it CAN be null 2024-08-06 23:24:34 -07:00
sunshineinabox
482b960740 More changes to be inline with spec 2024-08-04 20:53:54 -07:00
sunshineinabox
af9de85a1b Origin of crash? 2024-08-04 20:34:49 -07:00
sunshineinabox
f15b6c85f6 According to spec there is no need to do this as it should automatically be not set when not needed 2024-08-04 16:16:27 -07:00
sunshineinabox
c53f58a4a9 Resolve issue with primitive toplogy
Primitive Restart Enable should depend on Extended dynamic state 2 extension not 1

Resolve Primitive restart enable

Fix MoltenVK crash
2024-08-03 23:24:49 -07:00
sunshineinabox
fa801ba472 Match other code in project 2024-08-01 19:17:59 -07:00
sunshineinabox
9b02fd6dc0 Conver to TopologyClass from Vulkan Topology 2024-08-01 08:19:11 -07:00
sunshineinabox
38c9ec925c Whitespace fix 2024-07-31 18:22:29 -07:00
sunshineinabox
3f7a3ac558 Adapt changes from #7102 for dynamic states 2024-07-31 18:18:46 -07:00
sunshineinabox
fb964b514c Do not set patch control points dynamic state if there is no tessalation control shader. Thank you riperiperi 2024-07-31 08:14:26 -07:00
sunshineinabox
e7a4299400 Minor change 2024-07-23 22:09:56 -07:00
sunshineinabox
2cba50a9ed Move TopologyClass conversoin to EnumConversion.cs 2024-07-23 21:54:01 -07:00
sunshineinabox
b66f6ce673 Resolve some validation errors 2024-07-23 20:58:47 -07:00
sunshineinabox
a5052013f3 Fix some conditions 2024-07-23 20:25:23 -07:00
sunshineinabox
7610236816 Resolve merge error 2024-07-19 17:36:29 -07:00
sunshineinabox
afe4d581ee
Merge branch 'master' into MoreDynamicStatesPartOne 2024-07-18 07:32:07 -07:00
riperiperi
1a919e99b2
Vulkan: Defer guest barriers, and improve image barrier timings (#7012)
* More guarantees for buffer correct placement, defer guest requested buffers

* Split RP on indirect barrier rn

* Better handling for feedback loops.

* Qualcomm barriers suck too

* Fix condition

* Remove unused field

* Allow render pass barriers on turnip for now
2024-07-17 20:21:32 -03:00
gdkchan
07435ad844
Use draw clear on Adreno, instead of vkCmdClearAttachments (#7013)
* Use draw clear on Adreno, instead of vkCmdClearAttachments

* Fix GTX TITAN detection
2024-07-10 17:52:45 -03:00
gdkchan
1668ba913f
Force dynamic state update after rasterizer discard disable (#7007) 2024-07-09 23:31:01 -03:00
gdkchan
cfc75d7e78
Disable descriptor set template updates for buffer textures on Adreno (#7002)
* Do not use template updates for buffer textures and buffer images

* No need to do it for images

* Simply buffer texture existence check

* Pipeline is now unused on DescriptorSetUpdater
2024-07-07 19:19:55 -03:00
sunshineinabox
feb67dede6 Avoid setting depth bias state when not needed. 2024-07-04 23:38:21 -07:00
sunshineinabox
933c9c89ff Resolve logic op validation error only primitive topology pending 2024-06-03 21:10:13 -07:00
sunshineinabox
266649929f Clean up for some clarity and attempt to resolve some validation errors. 2024-06-02 21:00:18 -07:00
sunshineinabox
16a4374ae8 Fix whitespace 2024-05-29 10:16:14 -07:00
sunshineinabox
d8d33417e9 Fix oversight with implementing Primitive Topology Dynamic State 2024-05-29 10:14:12 -07:00
sunshineinabox
e6492f8e78 Reduce unneeded state changes 2024-05-29 09:45:56 -07:00
sunshineinabox
5c65880ec0 Whitespaces 2024-05-29 09:16:44 -07:00
sunshineinabox
efdcce4415 Only enable enable LogicOp dynamic state and logic op if its enabled. 2024-05-29 08:36:24 -07:00
sunshineinabox
424166acd8 Oversight 2024-05-28 13:01:08 -07:00
sunshineinabox
3683ee5c29 Follow namign rules. 2024-05-27 23:25:59 -07:00
sunshineinabox
4a3932ed54 Use dictionary instead for clarity and rework some logic. 2024-05-27 23:11:39 -07:00
sunshineinabox
7ac2cd44d0 Attempt proper VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY implementation 2024-05-27 23:11:39 -07:00