Lines Matching refs:subgroups

38 namespace subgroups
125 // we used an atomicly incremented counter to note how many subgroups we used for the vertex shader
192 return glc::subgroups::checkCompute(datas, numWorkgroups, localSize, 1);
201 return glc::subgroups::checkCompute(datas, numWorkgroups, localSize, ref);
240 subgroups::ShaderStageFlags shaderStage;
245 if(subgroups::SHADER_STAGE_FRAGMENT_BIT != caseDef.shaderStage)
258 if (subgroups::SHADER_STAGE_FRAGMENT_BIT == caseDef.shaderStage)
271 else if (subgroups::SHADER_STAGE_VERTEX_BIT != caseDef.shaderStage)
272 subgroups::setVertexShaderFrameBuffer(programCollection);
281 if (subgroups::SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage)
307 else if (subgroups::SHADER_STAGE_GEOMETRY_BIT == caseDef.shaderStage)
334 else if (subgroups::SHADER_STAGE_TESS_EVALUATION_BIT == caseDef.shaderStage)
377 else if (subgroups::SHADER_STAGE_TESS_CONTROL_BIT == caseDef.shaderStage)
431 string color = (subgroups::SHADER_STAGE_TESS_CONTROL_BIT == caseDef.shaderStage) ? "out_color[gl_InvocationID].b = 1.0f;\n" : "out_color.b = 1.0f;\n";
470 if (subgroups::SHADER_STAGE_FRAGMENT_BIT == caseDef.shaderStage)
509 else if (subgroups::SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage)
549 else if (subgroups::SHADER_STAGE_GEOMETRY_BIT == caseDef.shaderStage)
591 else if (subgroups::SHADER_STAGE_TESS_EVALUATION_BIT == caseDef.shaderStage)
646 else if (subgroups::SHADER_STAGE_TESS_CONTROL_BIT == caseDef.shaderStage)
717 if (subgroups::SHADER_STAGE_COMPUTE_BIT == caseDef.shaderStage)
729 << subgroups::getSharedMemoryBallotHelper()
875 subgroups::addGeometryShadersFromTemplate(geometry.str(), programCollection);
903 subgroups::addNoSubgroupShader(programCollection);
945 if (subgroups::SHADER_STAGE_COMPUTE_BIT == caseDef.shaderStage)
1159 subgroups::addGeometryShadersFromTemplate(geometry.str(), programCollection);
1201 subgroups::addNoSubgroupShader(programCollection);
1209 if (!subgroups::isSubgroupSupported(context))
1215 if (!subgroups::areSubgroupOperationsSupportedForStage(
1218 if (subgroups::areSubgroupOperationsRequiredForStage(
1223 subgroups::getShaderStageName(caseDef.shaderStage) +
1232 if (!subgroups::isSubgroupFeatureSupportedForDevice(context, subgroups::SUBGROUP_FEATURE_BASIC_BIT))
1236 subgroups::getSubgroupFeatureName(subgroups::SUBGROUP_FEATURE_BASIC_BIT) +
1240 if (OPTYPE_ELECT != caseDef.opType && subgroups::SHADER_STAGE_COMPUTE_BIT != caseDef.shaderStage)
1242 if (!subgroups::isSubgroupFeatureSupportedForDevice(context, subgroups::SUBGROUP_FEATURE_BALLOT_BIT))
1250 if (!subgroups::isImageSupportedForStageOnDevice(context, caseDef.shaderStage))
1253 subgroups::getShaderStageName(caseDef.shaderStage) +
1259 std::vector<subgroups::SSBOData> inputDatas (inputDatasCount);
1261 inputDatas[0].format = subgroups::FORMAT_R32_UINT;
1262 inputDatas[0].layout = subgroups::SSBOData::LayoutStd140;
1264 inputDatas[0].initializeType = subgroups::SSBOData::InitializeNonZero;
1267 inputDatas[1].format = subgroups::FORMAT_R32_UINT;
1268 inputDatas[1].layout = subgroups::SSBOData::LayoutStd140;
1270 inputDatas[1].initializeType = subgroups::SSBOData::InitializeNonZero;
1275 inputDatas[2].format = subgroups::FORMAT_R32_UINT;
1276 inputDatas[2].layout = subgroups::SSBOData::LayoutPacked;
1278 inputDatas[2].initializeType = subgroups::SSBOData::InitializeNone;
1283 if (subgroups::SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage)
1286 return subgroups::makeVertexFrameBufferTest(context, subgroups::FORMAT_R32G32_SFLOAT, DE_NULL, 0u, checkVertexPipelineStagesSubgroupElectNoSSBO);
1288 return subgroups::makeVertexFrameBufferTest(context, subgroups::FORMAT_R32G32B32A32_SFLOAT, &inputDatas[0], inputDatasCount, checkVertexPipelineStagesSubgroupBarriersNoSSBO);
1290 else if (subgroups::SHADER_STAGE_FRAGMENT_BIT == caseDef.shaderStage)
1292 return subgroups::makeFragmentFrameBufferTest(context, subgroups::FORMAT_R32G32B32A32_SFLOAT, &inputDatas[0], inputDatasCount, checkFragmentSubgroupBarriersNoSSBO);
1294 else if (subgroups::SHADER_STAGE_GEOMETRY_BIT == caseDef.shaderStage)
1297 return subgroups::makeGeometryFrameBufferTest(context, subgroups::FORMAT_R32G32_SFLOAT, DE_NULL, 0u, checkVertexPipelineStagesSubgroupElectNoSSBO);
1299 return subgroups::makeGeometryFrameBufferTest(context, subgroups::FORMAT_R32G32B32A32_SFLOAT, &inputDatas[0], inputDatasCount, checkVertexPipelineStagesSubgroupBarriersNoSSBO);
1303 return subgroups::makeTessellationEvaluationFrameBufferTest(context, subgroups::FORMAT_R32G32_SFLOAT, DE_NULL, 0u, checkVertexPipelineStagesSubgroupElectNoSSBO, caseDef.shaderStage);
1305 return subgroups::makeTessellationEvaluationFrameBufferTest(context, subgroups::FORMAT_R32G32B32A32_SFLOAT, &inputDatas[0], inputDatasCount,
1306 (subgroups::SHADER_STAGE_TESS_CONTROL_BIT == caseDef.shaderStage)? checkVertexPipelineStagesSubgroupBarriersNoSSBO : checkTessellationEvaluationSubgroupBarriersNoSSBO,
1312 if (!subgroups::isSubgroupFeatureSupportedForDevice(context, subgroups::SUBGROUP_FEATURE_BASIC_BIT))
1316 subgroups::getSubgroupFeatureName(subgroups::SUBGROUP_FEATURE_BASIC_BIT) +
1320 if (OPTYPE_ELECT != caseDef.opType && subgroups::SHADER_STAGE_COMPUTE_BIT != caseDef.shaderStage)
1322 if (!subgroups::isSubgroupFeatureSupportedForDevice(context, subgroups::SUBGROUP_FEATURE_BALLOT_BIT))
1328 if (subgroups::SHADER_STAGE_COMPUTE_BIT == caseDef.shaderStage)
1330 if (!subgroups::areSubgroupOperationsSupportedForStage(context, caseDef.shaderStage))
1333 subgroups::getShaderStageName(caseDef.shaderStage) +
1339 return subgroups::makeComputeTest(context, subgroups::FORMAT_R32_UINT, DE_NULL, 0, checkComputeSubgroupElect);
1344 subgroups::SSBOData inputDatas[inputDatasCount];
1345 inputDatas[0].format = subgroups::FORMAT_R32_UINT;
1346 inputDatas[0].layout = subgroups::SSBOData::LayoutStd430;
1348 inputDatas[0].initializeType = subgroups::SSBOData::InitializeNonZero;
1351 inputDatas[1].format = subgroups::FORMAT_R32_UINT;
1352 inputDatas[1].layout = subgroups::SSBOData::LayoutPacked;
1354 inputDatas[1].initializeType = subgroups::SSBOData::InitializeNone;
1358 return subgroups::makeComputeTest(context, subgroups::FORMAT_R32_UINT, inputDatas, inputDatasCount, checkComputeSubgroupBarriers);
1363 if (!subgroups::isFragmentSSBOSupportedForDevice(context))
1371 subgroups::ShaderStageFlags stages = (subgroups::ShaderStageFlags)(caseDef.shaderStage & supportedStages);
1373 if ( subgroups::SHADER_STAGE_FRAGMENT_BIT != stages && !subgroups::isVertexSSBOSupportedForDevice(context))
1375 if ( (stages & subgroups::SHADER_STAGE_FRAGMENT_BIT) == 0)
1378 stages = subgroups::SHADER_STAGE_FRAGMENT_BIT;
1381 if ((subgroups::ShaderStageFlags)0u == stages)
1394 subgroups::SSBOData inputData[inputCount];
1396 inputData[0].format = subgroups::FORMAT_R32_UINT;
1397 inputData[0].layout = subgroups::SSBOData::LayoutStd430;
1399 inputData[0].initializeType = subgroups::SSBOData::InitializeZero;
1401 inputData[0].stages = subgroups::SHADER_STAGE_VERTEX_BIT;
1403 inputData[1].format = subgroups::FORMAT_R32_UINT;
1404 inputData[1].layout = subgroups::SSBOData::LayoutStd430;
1406 inputData[1].initializeType = subgroups::SSBOData::InitializeZero;
1408 inputData[1].stages = subgroups::SHADER_STAGE_TESS_CONTROL_BIT;
1410 inputData[2].format = subgroups::FORMAT_R32_UINT;
1411 inputData[2].layout = subgroups::SSBOData::LayoutStd430;
1413 inputData[2].initializeType = subgroups::SSBOData::InitializeZero;
1415 inputData[2].stages = subgroups::SHADER_STAGE_TESS_EVALUATION_BIT;
1417 inputData[3].format = subgroups::FORMAT_R32_UINT;
1418 inputData[3].layout = subgroups::SSBOData::LayoutStd430;
1420 inputData[3].initializeType = subgroups::SSBOData::InitializeZero;
1422 inputData[3].stages = subgroups::SHADER_STAGE_GEOMETRY_BIT;
1424 inputData[4].format = subgroups::FORMAT_R32_UINT;
1425 inputData[4].layout = subgroups::SSBOData::LayoutStd430;
1427 inputData[4].initializeType = subgroups::SSBOData::InitializeZero;
1429 inputData[4].stages = subgroups::SHADER_STAGE_FRAGMENT_BIT;
1431 return subgroups::allStages(context, subgroups::FORMAT_R32_UINT, inputData, inputCount, checkVertexPipelineStagesSubgroupElect, stages);
1435 const subgroups::ShaderStageFlags stagesBits[] =
1437 subgroups::SHADER_STAGE_VERTEX_BIT,
1438 subgroups::SHADER_STAGE_TESS_CONTROL_BIT,
1439 subgroups::SHADER_STAGE_TESS_EVALUATION_BIT,
1440 subgroups::SHADER_STAGE_GEOMETRY_BIT,
1441 subgroups::SHADER_STAGE_FRAGMENT_BIT,
1445 subgroups::SSBOData inputDatas[inputDatasCount];
1452 inputDatas[index].format = subgroups::FORMAT_R32_UINT;
1453 inputDatas[index].layout = subgroups::SSBOData::LayoutStd430;
1455 inputDatas[index].initializeType = subgroups::SSBOData::InitializeNonZero;
1459 inputDatas[index + 1].format = subgroups::FORMAT_R32_UINT;
1460 inputDatas[index + 1].layout = subgroups::SSBOData::LayoutStd430;
1462 inputDatas[index + 1].initializeType = subgroups::SSBOData::InitializeZero;
1466 inputDatas[index + 2].format = subgroups::FORMAT_R32_UINT;
1467 inputDatas[index + 2].layout = subgroups::SSBOData::LayoutPacked;
1469 inputDatas[index + 2].initializeType = subgroups::SSBOData::InitializeNone;
1475 return subgroups::allStages(context, subgroups::FORMAT_R32_UINT, inputDatas, inputDatasCount, checkVertexPipelineStagesSubgroupBarriers, stages);
1490 const subgroups::ShaderStageFlags stages[] =
1544 } // subgroups