From e201215862762af29a3ebd638132363fb09e44df Mon Sep 17 00:00:00 2001 From: ryana Date: Wed, 29 Apr 2026 00:40:40 +0800 Subject: [PATCH] integrate #3897 but clamp under cbuf --- src/shader_recompiler/ir_opt/texture_pass.cpp | 7 ++----- src/video_core/renderer_vulkan/vk_compute_pipeline.cpp | 5 ++--- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/shader_recompiler/ir_opt/texture_pass.cpp b/src/shader_recompiler/ir_opt/texture_pass.cpp index 47e1ea299d..7a924aa8b5 100644 --- a/src/shader_recompiler/ir_opt/texture_pass.cpp +++ b/src/shader_recompiler/ir_opt/texture_pass.cpp @@ -32,9 +32,8 @@ using TextureInstVector = boost::container::small_vector; constexpr u32 DESCRIPTOR_SIZE = 8; constexpr u32 DESCRIPTOR_SIZE_SHIFT = static_cast(std::countr_zero(DESCRIPTOR_SIZE)); -constexpr u32 DEFAULT_DYNAMIC_DESCRIPTOR_COUNT = 8; constexpr u32 DYNAMIC_DESCRIPTOR_CBUF_BYTES = 16 * 1024; -constexpr u32 MAX_DYNAMIC_DESCRIPTOR_COUNT = 64; +constexpr u32 MAX_DYNAMIC_DESCRIPTOR_COUNT = 1024; u32 DynamicDescriptorSizeShift(const IR::U32& dynamic_offset) { const IR::Inst* const inst{dynamic_offset.InstRecursive()}; @@ -60,9 +59,7 @@ u32 DynamicDescriptorCount(u32 base_offset, u32 size_shift) { return 1; } const u32 available_count{1U + (available - DESCRIPTOR_SIZE) / stride}; - const u32 desired_count{size_shift == DESCRIPTOR_SIZE_SHIFT ? DEFAULT_DYNAMIC_DESCRIPTOR_COUNT - : MAX_DYNAMIC_DESCRIPTOR_COUNT}; - return std::min(desired_count, available_count); + return std::min(MAX_DYNAMIC_DESCRIPTOR_COUNT, available_count); } IR::Opcode IndexedInstruction(const IR::Inst& inst) { diff --git a/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp b/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp index 1a62324c95..490dd7acfe 100644 --- a/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp @@ -127,9 +127,8 @@ void ComputePipeline::Configure(Tegra::Engines::KeplerCompute& kepler_compute, texture_cache.SynchronizeComputeDescriptors(); - static constexpr size_t max_elements = 64; - boost::container::static_vector views; - boost::container::static_vector samplers; + boost::container::small_vector views; + boost::container::small_vector samplers; const auto& qmd{kepler_compute.launch_description}; const auto& cbufs{qmd.const_buffer_config};