#include #include "dxbc_options.h" namespace dxvk { DxbcOptions::DxbcOptions() { } DxbcOptions::DxbcOptions(const Rc& device) { const DxvkDeviceFeatures& devFeatures = device->features(); const DxvkDeviceInfo& devInfo = device->adapter()->devicePropertiesExt(); useStorageImageReadWithoutFormat = devFeatures.core.features.shaderStorageImageReadWithoutFormat; useSubgroupOpsForEarlyDiscard = (devInfo.coreSubgroup.subgroupSize >= 4) && (devInfo.coreSubgroup.supportedStages & VK_SHADER_STAGE_FRAGMENT_BIT) && (devInfo.coreSubgroup.supportedOperations & VK_SUBGROUP_FEATURE_ARITHMETIC_BIT); useSubgroupOpsClustered = useSubgroupOpsForEarlyDiscard && (devInfo.coreSubgroup.supportedOperations & VK_SUBGROUP_FEATURE_CLUSTERED_BIT); } }