tcu::TestStatus test(Context& context, const CaseDefinition caseDef)
{
+ if (!subgroups::isSubgroupSupported(context))
+ TCU_THROW(NotSupportedError, "Subgroup operations are not supported");
+
if (!subgroups::areSubgroupOperationsSupportedForStage(
context, caseDef.shaderStage))
{
tcu::TestStatus test(Context& context, const CaseDefinition caseDef)
{
+ if (!subgroups::isSubgroupSupported(context))
+ TCU_THROW(NotSupportedError, "Subgroup operations are not supported");
+
if (!subgroups::areSubgroupOperationsSupportedForStage(
context, caseDef.shaderStage))
{
tcu::TestStatus test(Context& context, const CaseDefinition caseDef)
{
+ if (!subgroups::isSubgroupSupported(context))
+ TCU_THROW(NotSupportedError, "Subgroup operations are not supported");
+
if (!subgroups::areSubgroupOperationsSupportedForStage(
context, caseDef.shaderStage))
{
tcu::TestStatus test(Context& context, const CaseDefinition caseDef)
{
+ if (!subgroups::isSubgroupSupported(context))
+ TCU_THROW(NotSupportedError, "Subgroup operations are not supported");
+
if (!subgroups::areSubgroupOperationsSupportedForStage(
context, caseDef.shaderStage))
{
tcu::TestStatus test(Context& context, const CaseDefinition caseDef)
{
+ if (!subgroups::isSubgroupSupported(context))
+ TCU_THROW(NotSupportedError, "Subgroup operations are not supported");
+
if (!subgroups::areSubgroupOperationsSupportedForStage(
context, caseDef.shaderStage))
{
tcu::TestStatus test(Context& context, const CaseDefinition caseDef)
{
+ if (!subgroups::isSubgroupSupported(context))
+ TCU_THROW(NotSupportedError, "Subgroup operations are not supported");
+
if (!areSubgroupOperationsSupportedForStage(
context, caseDef.shaderStage))
{
tcu::TestStatus test(Context& context, const CaseDefinition caseDef)
{
+ if (!subgroups::isSubgroupSupported(context))
+ TCU_THROW(NotSupportedError, "Subgroup operations are not supported");
+
if (!areSubgroupOperationsSupportedForStage(
context, caseDef.shaderStage))
{
tcu::TestStatus test(Context& context, const CaseDefinition caseDef)
{
+ if (!subgroups::isSubgroupSupported(context))
+ TCU_THROW(NotSupportedError, "Subgroup operations are not supported");
+
if (!subgroups::areSubgroupOperationsSupportedForStage(
context, caseDef.shaderStage))
{
tcu::TestStatus test(Context& context, const CaseDefinition caseDef)
{
+ if (!subgroups::isSubgroupSupported(context))
+ TCU_THROW(NotSupportedError, "Subgroup operations are not supported");
+
if (!subgroups::areSubgroupOperationsSupportedForStage(
context, caseDef.shaderStage))
{
tcu::TestStatus test(Context& context, const CaseDefinition caseDef)
{
+ if (!subgroups::isSubgroupSupported(context))
+ TCU_THROW(NotSupportedError, "Subgroup operations are not supported");
+
if (!subgroups::areSubgroupOperationsSupportedForStage(
context, caseDef.shaderStage))
{
tcu::TestStatus test(Context& context, const CaseDefinition caseDef)
{
+ if (!subgroups::isSubgroupSupported(context))
+ TCU_THROW(NotSupportedError, "Subgroup operations are not supported");
+
if (!subgroups::areSubgroupOperationsSupportedForStage(
context, caseDef.shaderStage))
{
}
}
+bool vkt::subgroups::isSubgroupSupported(Context& context)
+{
+ VkPhysicalDeviceProperties properties;
+ context.getInstanceInterface().getPhysicalDeviceProperties(context.getPhysicalDevice(), &properties);
+ return (properties.apiVersion < VK_MAKE_VERSION(1, 1, 0)) ? false : true;
+}
+
bool vkt::subgroups::areSubgroupOperationsSupportedForStage(
Context& context, const VkShaderStageFlags stage)
{
std::string getVertShaderForStage(vk::VkShaderStageFlags stage);
+bool isSubgroupSupported(Context& context);
+
bool areSubgroupOperationsSupportedForStage(
Context& context, vk::VkShaderStageFlags stage);
tcu::TestStatus test(Context& context, const CaseDefinition caseDef)
{
+ if (!subgroups::isSubgroupSupported(context))
+ TCU_THROW(NotSupportedError, "Subgroup operations are not supported");
+
if (!subgroups::areSubgroupOperationsSupportedForStage(
context, caseDef.shaderStage))
{