mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-08-08 09:09:46 +00:00
vk: Disable conditional rendering on MacOS
This commit is contained in:
parent
86c7b31b6d
commit
6f834e99d2
2 changed files with 5 additions and 3 deletions
|
@ -749,10 +749,10 @@ VKGSRender::VKGSRender(utils::serial* ar) noexcept : GSRender(ar)
|
||||||
// Confirmed in BLES01916 (The Evil Within) which uses RGB565 for some virtual texturing data.
|
// Confirmed in BLES01916 (The Evil Within) which uses RGB565 for some virtual texturing data.
|
||||||
backend_config.supports_hw_renormalization = (vk::get_driver_vendor() == vk::driver_vendor::NVIDIA);
|
backend_config.supports_hw_renormalization = (vk::get_driver_vendor() == vk::driver_vendor::NVIDIA);
|
||||||
|
|
||||||
#ifndef __APPLE__
|
|
||||||
// Conditional rendering support
|
// Conditional rendering support
|
||||||
backend_config.supports_hw_conditional_render = true;
|
// Do not use on MVK due to a speedhack we rely on (streaming results without stopping the current renderpass)
|
||||||
#endif
|
// If we break the renderpasses, MVK loses around 75% of its performance in troublesome spots compared to just doing a CPU sync
|
||||||
|
backend_config.supports_hw_conditional_render = (vk::get_driver_vendor() != vk::driver_vendor::MVK);
|
||||||
|
|
||||||
// Passthrough DMA
|
// Passthrough DMA
|
||||||
backend_config.supports_passthrough_dma = m_device->get_external_memory_host_support();
|
backend_config.supports_passthrough_dma = m_device->get_external_memory_host_support();
|
||||||
|
|
|
@ -170,6 +170,8 @@ namespace vk
|
||||||
|
|
||||||
void query_pool_manager::get_query_result_indirect(vk::command_buffer& cmd, u32 index, VkBuffer dst, VkDeviceSize dst_offset)
|
void query_pool_manager::get_query_result_indirect(vk::command_buffer& cmd, u32 index, VkBuffer dst, VkDeviceSize dst_offset)
|
||||||
{
|
{
|
||||||
|
// We're technically supposed to stop any active renderpasses before streaming the results out, but that doesn't matter on IMR hw
|
||||||
|
// On TBDR setups like the apple M series, the stop is required (results are all 0 if you don't flush the RP), but this introduces a very heavy performance loss.
|
||||||
vkCmdCopyQueryPoolResults(cmd, *query_slot_status[index].pool, index, 1, dst, dst_offset, 4, VK_QUERY_RESULT_WAIT_BIT);
|
vkCmdCopyQueryPoolResults(cmd, *query_slot_status[index].pool, index, 1, dst, dst_offset, 4, VK_QUERY_RESULT_WAIT_BIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue