eden-miror/src/video_core/vulkan_common
lizzie b66adfe04c
[vulkan] add native cubic filtering (#88)
Co-authored-by: crueter <crueter@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/88

This implements the use of VK_FILTER_CUBIC_EXT as a replacement for the software-based bicubic window adapting filter, used primarily for texture sampling in upscaled or downscaled surfaces such as UI, transparency effects, and screen-space elements in Unreal Engine 4 titles.

The Vulkan cubic filter is now conditionally enabled if the following are satisfied:

The device supports VK_EXT_filter_cubic

The format used supports VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

This change improves visual quality while reducing GPU workload by offloading cubic filtering to the driver instead of running custom sampling code in shaders. On supported hardware (e.g. desktop GPUs or high-end Adreno/AMD devices), it results in smoother transitions, improved transparency sampling, and better fidelity with lower shader complexity.

Fallback to the original software bicubic logic remains in place for devices lacking the extension or format capability.

Tested on several UE4 titles and confirmed to preserve or enhance visual output, especially in alpha-blended and UI-heavy scenes.
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
2025-07-22 20:49:00 +02:00
..
nsight_aftermath_tracker.cpp [desktop, core] yuzu -> Eden, eden -> Eden 2025-07-19 00:12:21 -04:00
nsight_aftermath_tracker.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
vk_enum_string_helper.h Simplify VkResult lookup 2024-01-22 03:10:43 +00:00
vma.cpp vma: enable options everywhere 2023-07-31 13:01:21 +02:00
vma.h vma: enable options everywhere 2023-07-31 13:01:21 +02:00
vulkan.h vulkan: centralize config 2023-08-02 00:05:14 +02:00
vulkan_debug_callback.cpp renderer_vulkan: Remove debug report 2023-09-08 23:28:46 +03:00
vulkan_debug_callback.h renderer_vulkan: Remove debug report 2023-09-08 23:28:46 +03:00
vulkan_device.cpp fix more vulkan issues and remove vertex input (#117) 2025-05-19 21:28:16 +00:00
vulkan_device.h [vulkan] add native cubic filtering (#88) 2025-07-22 20:49:00 +02:00
vulkan_instance.cpp renderer_vulkan: Remove debug report 2023-09-08 23:28:46 +03:00
vulkan_instance.h vulkan_common: unify VK_EXT_debug_utils and selection of validation layer 2023-01-01 11:59:47 -05:00
vulkan_library.cpp Add macos moltenvk bundle, Add copy moltevk dylib script 2023-08-22 10:22:28 +08:00
vulkan_library.h android: native: Add support for custom Vulkan driver loading. 2023-06-03 00:05:31 -07:00
vulkan_memory_allocator.cpp revert [android] Snapdragon 865 patches (#23) 2025-07-12 20:10:40 +02:00
vulkan_memory_allocator.h Allow GPUs without rebar to open multiple RenderDoc captures 2023-10-06 07:52:06 +01:00
vulkan_raii.h Fix some issues in RAII 2025-04-30 03:57:11 -03:00
vulkan_surface.cpp vulkan: centralize config 2023-08-02 00:05:14 +02:00
vulkan_surface.h vulkan_surface: Pass only window info for surface creation 2023-05-02 21:51:30 -04:00
vulkan_wrapper.cpp [vk] tmp: workaround for RAII crash on exit 2025-07-20 22:11:02 -04:00
vulkan_wrapper.h [vk] Add some dynamic handling in the pipeline (#142) 2025-06-16 22:36:30 +00:00