VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME);
break;
+ case spv::CapabilitySubgroupBallotKHR:
+ pass &= require_extension(report_data, dev_data->device_extensions.khr_subgroup_ballot_enabled,
+ VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME);
+ break;
+
default:
// Spirv-validator should catch these errors
break;
dev_data->device_extensions.nv_geometry_shader_passthrough_enabled = false;
dev_data->device_extensions.nv_sample_mask_override_coverage_enabled = false;
dev_data->device_extensions.nv_viewport_array2_enabled = false;
+ dev_data->device_extensions.khr_subgroup_ballot_enabled = false;
for (i = 0; i < pCreateInfo->enabledExtensionCount; i++) {
if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME) == 0) {
dev_data->device_extensions.nv_viewport_array2_enabled = true;
}
+ if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME) == 0) {
+ dev_data->device_extensions.khr_subgroup_ballot_enabled = true;
+ }
}
}
bool nv_geometry_shader_passthrough_enabled;
bool nv_sample_mask_override_coverage_enabled;
bool nv_viewport_array2_enabled;
+ bool khr_subgroup_ballot_enabled;
std::unordered_map<VkSwapchainKHR, std::unique_ptr<SWAPCHAIN_NODE>> swapchainMap;
std::unordered_map<VkImage, VkSwapchainKHR> imageToSwapchainMap;
};