Commit Graph

28 Commits

Author SHA1 Message Date
Triang3l
e9f7a8bd48 [Vulkan] Optional functionality usage improvements
Functional changes:
- Enable only actually used features, as drivers may take more optimal
  paths when certain features are disabled.
- Support VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE.
- Fix the separateStencilMaskRef check doing the opposite.
- Support shaderRoundingModeRTEFloat32.
- Fix vkGetDeviceBufferMemoryRequirements pointer not passed to the Vulkan
  Memory Allocator.

Stylistic changes:
- Move all device extensions, properties and features to one structure,
  especially simplifying portability subset feature checks, and also making
  it easier to request new extension functionality in the future.
- Remove extension suffixes from usage of promoted extensions.
2024-05-04 22:47:14 +03:00
Triang3l
45050b2380 [GPU] Vulkan fragment shader interlock RB and related fixes/cleanup
Also fixes addressing of MSAA samples 2 and 3 for 64bpp color render targets in the ROV RB implementation on Direct3D 12.
Additionally, with FSI/ROV, alpha test and alpha to coverage are done only if the render target 0 was dynamically written to (according to the Direct3D 9 rules for writing to color render targets, though not sure if they actually apply to the alpha tests on Direct3D 9, but for safety).
There is also some code cleanup for things spotted during the development of the feature.
2022-10-09 22:06:41 +03:00
Triang3l
001f64852c [Vulkan] VMA for textures 2022-07-03 19:40:48 +03:00
Triang3l
fdcbf67623 [Vulkan] Enable VK_KHR_sampler_ycbcr_conversion 2022-06-25 15:46:02 +03:00
Triang3l
61c4c49d76 Merge branch 'master' into vulkan 2022-06-20 12:34:41 +03:00
Triang3l
3b4845511d [Vulkan] Don't require an explicit uint64_t cast for SetDeviceObjectName 2022-06-20 12:25:52 +03:00
Triang3l
0acb97d383 [Vulkan] EDRAM range ownership transfers, resolve clears, 2x-as-4x MSAA
Transfers are functional on a D3D12-like level, but need additional work so fallbacks are used when multisampled integer sampled images are not supported, and to eliminate transfers between render targets within Vulkan format compatibility classes by using different views directly.
2022-04-03 16:40:29 +03:00
Triang3l
b8c9d5bb8c Merge branch 'master' into vulkan 2022-02-13 23:25:39 +03:00
Triang3l
8ca67b8aa7 [Vulkan] Expose relevant portability subset features 2022-02-13 20:19:01 +03:00
Triang3l
0590346084 [Vulkan] Add Vulkan-Headers and VMA submodules 2022-02-13 20:08:08 +03:00
Triang3l
922efb13ce Merge branch 'master' into vulkan 2022-02-03 21:12:10 +03:00
Triang3l
fe3f0f26e4 [UI] Image post-processing and full presentation/window rework
[GPU] Add FXAA post-processing
[UI] Add FidelityFX FSR and CAS post-processing
[UI] Add blue noise dithering from 10bpc to 8bpc
[GPU] Apply the DC PWL gamma ramp closer to the spec, supporting fully white color
[UI] Allow the GPU CP thread to present on the host directly, bypassing the UI thread OS paint event
[UI] Allow variable refresh rate (or tearing)
[UI] Present the newest frame (restart) on DXGI
[UI] Replace GraphicsContext with a far more advanced Presenter with more coherent surface connection and UI overlay state management
[UI] Connect presentation to windows via the Surface class, not native window handles
[Vulkan] Switch to simpler Vulkan setup with no instance/device separation due to interdependencies and to pass fewer objects around
[Vulkan] Lower the minimum required Vulkan version to 1.0
[UI/GPU] Various cleanup, mainly ComPtr usage
[UI] Support per-monitor DPI awareness v2 on Windows
[UI] DPI-scale Dear ImGui
[UI] Replace the remaining non-detachable window delegates with unified window event and input listeners
[UI] Allow listeners to safely destroy or close the window, and to register/unregister listeners without use-after-free and the ABA problem
[UI] Explicit Z ordering of input listeners and UI overlays, top-down for input, bottom-up for drawing
[UI] Add explicit window lifecycle phases
[UI] Replace Window virtual functions with explicit desired state, its application, actual state, its feedback
[UI] GTK: Apply the initial size to the drawing area
[UI] Limit internal UI frame rate to that of the monitor
[UI] Hide the cursor using a timer instead of polling due to no repeated UI thread paints with GPU CP thread presentation, and only within the window
2022-01-29 13:22:03 +03:00
Triang3l
ecccd02f8a Merge branch 'master' into vulkan 2021-09-12 14:10:36 +03:00
Triang3l
6ce5330f5f [UI] Loop thread to main thread WindowedAppContext 2021-08-28 19:38:24 +03:00
Triang3l
1e818dca4b [Vulkan] Include Vulkan Android header and fix some warnings 2020-11-19 11:38:20 +03:00
Triang3l
715d614f5e [Vulkan] Float controls properties 2020-11-15 15:08:50 +03:00
Triang3l
93f6a00201 [Vulkan] Transient descriptor pool + other cleanup for future drawing 2020-11-07 23:18:28 +03:00
Triang3l
52a8ed8e6d [SPIR-V] Version, float controls 2020-10-31 16:22:15 +03:00
Triang3l
4d59f556a9 [Vulkan] Sparse shared memory 2020-10-07 21:03:50 +03:00
Triang3l
2c50c670d8 [Vulkan] Basic shared memory uploading 2020-10-04 22:08:30 +03:00
Triang3l
865f77bae2 [Vulkan] Submissions 2020-10-01 21:17:10 +03:00
Triang3l
886129cefa [Vulkan] Immediate drawer textures 2020-09-26 22:10:02 +03:00
Triang3l
229eb49b54 [Vulkan] Untextured ImmediateDrawer, [D3D12] Small refactoring 2020-09-19 18:05:54 +03:00
Triang3l
203bf64d88 [Vulkan] Context, remove Volk 2020-09-13 17:51:00 +03:00
Triang3l
dfa181a529 [Vulkan] Provider init, Android platform defines 2020-09-06 22:08:36 +03:00
Triang3l
7b93670dbd [Vulkan] Remove old Vulkan code, change shaders directory, create empty Vulkan backend 2020-08-31 21:44:29 +03:00
DrChat
09b3a07e3c Support rendering windowless (tested on the Vulkan backend) 2017-12-19 16:05:36 -06:00
Ben Vanik
9f52f2e819 Initial vulkan context and immediate drawer.
Extremely rough, just checking in so DrChat can snoop.
2016-02-18 16:43:41 -08:00