Browse Source

[vulkan] Adjusted QueryReset's

CamilleLaVey 2 days ago
parent
commit
1c78d9e985
  1. 6
      src/video_core/renderer_vulkan/vk_query_cache.cpp
  2. 1
      src/video_core/vulkan_common/vulkan_wrapper.cpp
  3. 5
      src/video_core/vulkan_common/vulkan_wrapper.h

6
src/video_core/renderer_vulkan/vk_query_cache.cpp

@ -60,8 +60,6 @@ public:
void Reset() override { void Reset() override {
ASSERT(references == 0); ASSERT(references == 0);
VideoCommon::BankBase::Reset(); VideoCommon::BankBase::Reset();
const auto& dev = device.GetLogical();
dev.ResetQueryPool(*query_pool, 0, BANK_SIZE);
host_results.fill(0ULL); host_results.fill(0ULL);
next_bank = 0; next_bank = 0;
} }
@ -441,6 +439,10 @@ private:
} }
current_bank = &bank_pool.GetBank(current_bank_id); current_bank = &bank_pool.GetBank(current_bank_id);
current_query_pool = current_bank->GetInnerPool(); current_query_pool = current_bank->GetInnerPool();
scheduler.RequestOutsideRenderPassOperationContext();
scheduler.Record([query_pool = current_query_pool](vk::CommandBuffer cmdbuf) {
cmdbuf.ResetQueryPool(query_pool, 0, SamplesQueryBank::BANK_SIZE);
});
} }
size_t ReserveBankSlot() { size_t ReserveBankSlot() {

1
src/video_core/vulkan_common/vulkan_wrapper.cpp

@ -127,6 +127,7 @@ void Load(VkDevice device, DeviceDispatch& dld) noexcept {
X(vkCmdPipelineBarrier); X(vkCmdPipelineBarrier);
X(vkCmdPushConstants); X(vkCmdPushConstants);
X(vkCmdPushDescriptorSetWithTemplateKHR); X(vkCmdPushDescriptorSetWithTemplateKHR);
X(vkCmdResetQueryPool);
X(vkCmdSetBlendConstants); X(vkCmdSetBlendConstants);
X(vkCmdSetDepthBias); X(vkCmdSetDepthBias);
X(vkCmdSetDepthBias2EXT); X(vkCmdSetDepthBias2EXT);

5
src/video_core/vulkan_common/vulkan_wrapper.h

@ -228,6 +228,7 @@ struct DeviceDispatch : InstanceDispatch {
PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier{}; PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier{};
PFN_vkCmdPushConstants vkCmdPushConstants{}; PFN_vkCmdPushConstants vkCmdPushConstants{};
PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR{}; PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR{};
PFN_vkCmdResetQueryPool vkCmdResetQueryPool{};
PFN_vkCmdResolveImage vkCmdResolveImage{}; PFN_vkCmdResolveImage vkCmdResolveImage{};
PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants{}; PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants{};
PFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT{}; PFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT{};
@ -1172,6 +1173,10 @@ public:
dld->vkCmdPushDescriptorSetWithTemplateKHR(handle, update_template, layout, set, data); dld->vkCmdPushDescriptorSetWithTemplateKHR(handle, update_template, layout, set, data);
} }
void ResetQueryPool(VkQueryPool query_pool, u32 first, u32 count) const noexcept {
dld->vkCmdResetQueryPool(handle, query_pool, first, count);
}
void BindPipeline(VkPipelineBindPoint bind_point, VkPipeline pipeline) const noexcept { void BindPipeline(VkPipelineBindPoint bind_point, VkPipeline pipeline) const noexcept {
dld->vkCmdBindPipeline(handle, bind_point, pipeline); dld->vkCmdBindPipeline(handle, bind_point, pipeline);
} }

Loading…
Cancel
Save