From b99e11e9a99fc56a33eb5646a635cf420368567f Mon Sep 17 00:00:00 2001 From: lizzie Date: Mon, 22 Jun 2026 06:01:15 +0000 Subject: [PATCH] fixup? --- src/video_core/renderer_vulkan/vk_compute_pass.cpp | 14 +++++++------- .../renderer_vulkan/vk_compute_pipeline.cpp | 2 +- .../renderer_vulkan/vk_graphics_pipeline.cpp | 2 +- src/video_core/renderer_vulkan/vk_rasterizer.cpp | 2 +- .../renderer_vulkan/vk_update_descriptor.cpp | 7 ++++--- .../renderer_vulkan/vk_update_descriptor.h | 7 ++----- 6 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_compute_pass.cpp b/src/video_core/renderer_vulkan/vk_compute_pass.cpp index c24b7a5757..c993700249 100644 --- a/src/video_core/renderer_vulkan/vk_compute_pass.cpp +++ b/src/video_core/renderer_vulkan/vk_compute_pass.cpp @@ -326,7 +326,7 @@ std::pair Uint8Pass::Assemble(u32 num_vertices, VkBuffer const u32 staging_size = static_cast(num_vertices * sizeof(u16)); const auto staging = staging_buffer_pool.Request(staging_size, MemoryUsage::DeviceLocal); - compute_pass_descriptor_queue.Acquire(); + compute_pass_descriptor_queue.Acquire(scheduler); compute_pass_descriptor_queue.AddBuffer(src_buffer, src_offset, num_vertices); compute_pass_descriptor_queue.AddBuffer(staging.buffer, staging.offset, staging_size); const void* const descriptor_data{compute_pass_descriptor_queue.UpdateData()}; @@ -384,7 +384,7 @@ std::pair QuadIndexedPass::Assemble( const std::size_t staging_size = num_tri_vertices * sizeof(u32); const auto staging = staging_buffer_pool.Request(staging_size, MemoryUsage::DeviceLocal); - compute_pass_descriptor_queue.Acquire(); + compute_pass_descriptor_queue.Acquire(scheduler); compute_pass_descriptor_queue.AddBuffer(src_buffer, src_offset, input_size); compute_pass_descriptor_queue.AddBuffer(staging.buffer, staging.offset, staging_size); const void* const descriptor_data{compute_pass_descriptor_queue.UpdateData()}; @@ -429,7 +429,7 @@ void ConditionalRenderingResolvePass::Resolve(VkBuffer dst_buffer, VkBuffer src_ } const size_t compare_size = compare_to_zero ? 8 : 24; - compute_pass_descriptor_queue.Acquire(); + compute_pass_descriptor_queue.Acquire(scheduler); compute_pass_descriptor_queue.AddBuffer(src_buffer, src_offset, compare_size); compute_pass_descriptor_queue.AddBuffer(dst_buffer, 0, sizeof(u32)); const void* const descriptor_data{compute_pass_descriptor_queue.UpdateData()}; @@ -498,7 +498,7 @@ void QueriesPrefixScanPass::Run(VkBuffer accumulation_buffer, VkBuffer dst_buffe static constexpr size_t DISPATCH_SIZE = 2048U; size_t runs_to_do = std::min(current_runs, DISPATCH_SIZE); current_runs -= runs_to_do; - compute_pass_descriptor_queue.Acquire(); + compute_pass_descriptor_queue.Acquire(scheduler); compute_pass_descriptor_queue.AddBuffer(src_buffer, 0, number_of_sums * sizeof(u64)); compute_pass_descriptor_queue.AddBuffer(dst_buffer, 0, number_of_sums * sizeof(u64)); compute_pass_descriptor_queue.AddBuffer(accumulation_buffer, 0, sizeof(u64)); @@ -600,7 +600,7 @@ void ASTCDecoderPass::Assemble(Image& image, const StagingBufferRef& map, const u32 num_dispatches_y = Common::DivCeil(swizzle.num_tiles.height, 8U); const u32 num_dispatches_z = image.info.resources.layers; - compute_pass_descriptor_queue.Acquire(); + compute_pass_descriptor_queue.Acquire(scheduler); compute_pass_descriptor_queue.AddBuffer(map.buffer, input_offset, image.guest_size_bytes - swizzle.buffer_offset); compute_pass_descriptor_queue.AddImage(image.StorageImageView(swizzle.level)); @@ -821,7 +821,7 @@ void BlockLinearUnswizzle3DPass::UnswizzleChunk( pc.blocks_dim[1] = blocks_y; pc.blocks_dim[2] = z_count; // Only process the count - compute_pass_descriptor_queue.Acquire(); + compute_pass_descriptor_queue.Acquire(scheduler); compute_pass_descriptor_queue.AddBuffer(*image.runtime->swizzle_table_buffer, 0, image.runtime->swizzle_table_size); compute_pass_descriptor_queue.AddBuffer(swizzled.buffer, @@ -989,7 +989,7 @@ void MSAACopyPass::CopyImage(Image& dst_image, Image& src_image, ASSERT(copy.dst_subresource.base_layer == 0); ASSERT(copy.dst_subresource.num_layers == 1); - compute_pass_descriptor_queue.Acquire(); + compute_pass_descriptor_queue.Acquire(scheduler); compute_pass_descriptor_queue.AddImage( src_image.StorageImageView(copy.src_subresource.base_level)); compute_pass_descriptor_queue.AddImage( diff --git a/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp b/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp index 2c1fd94e67..a3a3390d53 100644 --- a/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp @@ -113,7 +113,7 @@ ComputePipeline::ComputePipeline(const Device& device_, Scheduler& scheduler, vk void ComputePipeline::Configure(Tegra::Engines::KeplerCompute& kepler_compute, Tegra::MemoryManager& gpu_memory, Scheduler& scheduler, BufferCache& buffer_cache, TextureCache& texture_cache) { - guest_descriptor_queue.Acquire(); + guest_descriptor_queue.Acquire(scheduler); buffer_cache.SetComputeUniformBufferState(info.constant_buffer_mask, &uniform_buffer_sizes); buffer_cache.UnbindComputeStorageBuffers(); diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index 3b5338a058..3e272e4cba 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp @@ -473,7 +473,7 @@ bool GraphicsPipeline::ConfigureImpl(bool is_indexed) { buffer_cache.UpdateGraphicsBuffers(is_indexed); buffer_cache.BindHostGeometryBuffers(is_indexed); - guest_descriptor_queue.Acquire(); + guest_descriptor_queue.Acquire(scheduler); RescalingPushConstant rescaling; RenderAreaPushConstant render_area; diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 35b7aed552..8cda45be25 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -203,7 +203,7 @@ RasterizerVulkan::RasterizerVulkan(Core::Frontend::EmuWindow& emu_window_, Tegra : gpu{gpu_}, device_memory{device_memory_}, device{device_}, memory_allocator{memory_allocator_}, state_tracker{state_tracker_}, scheduler{scheduler_}, staging_pool(device, memory_allocator, scheduler), descriptor_pool(device, scheduler), - guest_descriptor_queue(device, scheduler), compute_pass_descriptor_queue(device, scheduler), + guest_descriptor_queue(device), compute_pass_descriptor_queue(device), blit_image(device, scheduler, state_tracker, descriptor_pool), render_pass_cache(device), texture_cache_runtime{ device, scheduler, memory_allocator, staging_pool, diff --git a/src/video_core/renderer_vulkan/vk_update_descriptor.cpp b/src/video_core/renderer_vulkan/vk_update_descriptor.cpp index aa7de7b632..7de4bfd938 100644 --- a/src/video_core/renderer_vulkan/vk_update_descriptor.cpp +++ b/src/video_core/renderer_vulkan/vk_update_descriptor.cpp @@ -15,8 +15,9 @@ namespace Vulkan { -UpdateDescriptorQueue::UpdateDescriptorQueue(const Device& device_, Scheduler& scheduler_) - : device{device_}, scheduler{scheduler_} { +UpdateDescriptorQueue::UpdateDescriptorQueue(const Device& device_) + : device{device_} +{ payload_start = payload.data(); payload_cursor = payload.data(); } @@ -31,7 +32,7 @@ void UpdateDescriptorQueue::TickFrame() { payload_cursor = payload_start; } -void UpdateDescriptorQueue::Acquire() { +void UpdateDescriptorQueue::Acquire(Scheduler& scheduler) { // Minimum number of entries required. // This is the maximum number of entries a single draw call might use. static constexpr size_t MIN_ENTRIES = 0x400; diff --git a/src/video_core/renderer_vulkan/vk_update_descriptor.h b/src/video_core/renderer_vulkan/vk_update_descriptor.h index 1497108b16..6e9f5d2829 100644 --- a/src/video_core/renderer_vulkan/vk_update_descriptor.h +++ b/src/video_core/renderer_vulkan/vk_update_descriptor.h @@ -34,12 +34,11 @@ class UpdateDescriptorQueue final { static constexpr size_t PAYLOAD_SIZE = FRAME_PAYLOAD_SIZE * FRAMES_IN_FLIGHT; public: - explicit UpdateDescriptorQueue(const Device& device_, Scheduler& scheduler_); + explicit UpdateDescriptorQueue(const Device& device_); ~UpdateDescriptorQueue(); void TickFrame(); - - void Acquire(); + void Acquire(Scheduler& scheduler); const DescriptorUpdateEntry* UpdateData() const noexcept { return upload_start; @@ -75,8 +74,6 @@ public: private: const Device& device; - Scheduler& scheduler; - size_t frame_index{0}; DescriptorUpdateEntry* payload_cursor = nullptr; DescriptorUpdateEntry* payload_start = nullptr;