Merge pull request #786 from NahuelGenchi/fix/agc-buffer-int64-atomics-feature

fix(agc): enable shaderBufferInt64Atomics for 64-bit buffer atomics
This commit is contained in:
Dean 2026-10-06 14:15:44 +13:00 committed by GitHub
commit fe98276fb0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 13 additions and 0 deletions

View File

@ -729,6 +729,15 @@ VulkanDevice::VulkanDevice(const PresentationWindow* window) : state(std::make_u
state->capabilities.push_back(spv::CapabilityShaderClockKHR);
state->spirvExtensions.push_back("SPV_KHR_shader_clock");
}
VkPhysicalDeviceShaderAtomicInt64FeaturesKHR atomicInt64Features{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR};
if (hasExtension(VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME)) {
VkPhysicalDeviceFeatures2 features{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, &atomicInt64Features};
state->InstanceFunction<PFN_vkGetPhysicalDeviceFeatures2>("vkGetPhysicalDeviceFeatures2")(selected, &features);
}
const bool bufferInt64Atomics = atomicInt64Features.shaderBufferInt64Atomics == VK_TRUE;
atomicInt64Features = {VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR};
atomicInt64Features.shaderBufferInt64Atomics = VK_TRUE;
if (bufferInt64Atomics) deviceExtensions.push_back(VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME);
deviceExtensions.push_back(VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME);
state->capabilities.push_back(spv::CapabilitySignedZeroInfNanPreserve);
state->spirvExtensions.push_back("SPV_KHR_float_controls");
@ -910,6 +919,10 @@ VulkanDevice::VulkanDevice(const PresentationWindow* window) : state(std::make_u
clockFeatures.pNext = byteFeatures.pNext;
byteFeatures.pNext = &clockFeatures;
}
if (bufferInt64Atomics) {
atomicInt64Features.pNext = byteFeatures.pNext;
byteFeatures.pNext = &atomicInt64Features;
}
VkPhysicalDeviceImageRobustnessFeaturesEXT imageRobustnessFeatures{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT, nullptr, VK_TRUE};
if (imageRobustness) {
imageRobustnessFeatures.pNext = byteFeatures.pNext;