vk: Enable event scope hack for INTEL proprietary drivers

This commit is contained in:
kd-11 2022-05-23 21:11:46 +03:00 committed by kd-11
parent efff2a78c8
commit 9c824aa0b5
1 changed files with 15 additions and 12 deletions

View File

@ -74,19 +74,12 @@ namespace vk
event::event(const render_device& dev, sync_domain domain) event::event(const render_device& dev, sync_domain domain)
: m_device(dev) : m_device(dev)
{ {
if (domain == sync_domain::gpu || dev.gpu().get_driver_vendor() != driver_vendor::AMD) const auto vendor = dev.gpu().get_driver_vendor();
if (domain != sync_domain::gpu &&
(vendor == vk::driver_vendor::AMD || vendor == vk::driver_vendor::INTEL))
{ {
VkEventCreateInfo info // Work around AMD and INTEL broken event signal synchronization scope
{ // Will be dropped after transitioning to VK1.3
.sType = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
.pNext = nullptr,
.flags = 0
};
vkCreateEvent(dev, &info, nullptr, &m_vk_event);
}
else
{
// Work around AMD's broken event signals
m_buffer = std::make_unique<buffer> m_buffer = std::make_unique<buffer>
( (
dev, dev,
@ -101,6 +94,16 @@ namespace vk
m_value = reinterpret_cast<u32*>(m_buffer->map(0, 4)); m_value = reinterpret_cast<u32*>(m_buffer->map(0, 4));
*m_value = 0xCAFEBABE; *m_value = 0xCAFEBABE;
} }
else
{
VkEventCreateInfo info
{
.sType = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
.pNext = nullptr,
.flags = 0
};
vkCreateEvent(dev, &info, nullptr, &m_vk_event);
}
} }
event::~event() event::~event()