diff options
| author | iwubcode <iwubcode@users.noreply.github.com> | 2023-12-21 00:22:16 -0600 |
|---|---|---|
| committer | iwubcode <iwubcode@users.noreply.github.com> | 2023-12-21 00:36:44 -0600 |
| commit | 79648e1c24eac81f54365bbcb6dbc49ad6b16b1c (patch) | |
| tree | 3bfa26c32725b5116ecaa32cd0218ed0e10b73c0 /Source/Core/VideoBackends/Vulkan/ObjectCache.cpp | |
| parent | 70b7a59456164606833ebe45e7d790b8f03aab7a (diff) | |
VideoCommon: revert max pixel shader samplers back to 8 for Android devices.
It was reported that some games (Zelda Wind Waker and Zelda Twilight Princess but others may also exhibit the issue) have graphical issues with the max pixel samplers set to 16 on some Android devices (ex: Pixel6); since this was increased for a performance heavy feature (custom shaders) just disable it for now. In the future, this could be handled more elegantly
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/ObjectCache.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/Vulkan/ObjectCache.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp b/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp index c32365f3fc..a27d4457e2 100644 --- a/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp +++ b/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp @@ -121,6 +121,12 @@ bool ObjectCache::CreateDescriptorSetLayouts() VK_SHADER_STAGE_GEOMETRY_BIT}, }}; +#ifdef ANDROID + static const std::array<VkDescriptorSetLayoutBinding, 1> standard_sampler_bindings{{ + {0, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, + static_cast<u32>(VideoCommon::MAX_PIXEL_SHADER_SAMPLERS), VK_SHADER_STAGE_FRAGMENT_BIT}, + }}; +#else constexpr u32 MAX_PIXEL_SAMPLER_ARRAY_SIZE = 8; constexpr u32 TOTAL_PIXEL_SAMPLER_BINDINGS = 1 + (VideoCommon::MAX_PIXEL_SHADER_SAMPLERS - MAX_PIXEL_SAMPLER_ARRAY_SIZE); @@ -139,6 +145,7 @@ bool ObjectCache::CreateDescriptorSetLayouts() {14, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_FRAGMENT_BIT}, {15, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_FRAGMENT_BIT}, }}; +#endif // The dynamic veretex loader's vertex buffer must be last here, for similar reasons static const std::array<VkDescriptorSetLayoutBinding, 2> standard_ssbo_bindings{{ |
