" %_ptr_Uniform_Output = OpTypePointer Uniform %Output\n"
" %dataOutput = OpVariable %_ptr_Uniform_Output Uniform\n"
" %_ptr_Uniform_uint = OpTypePointer Uniform %uint\n"
- " %uint_dummy = OpConstant %uint 2863311530\n"
+ " %uint_unused = OpConstant %uint 2863311530\n"
" %main = OpFunction %void None %3\n"
" %5 = OpLabel\n"
" %i = OpVariable %_ptr_Function_uint Function\n"
" OpBranch %merge\n"
" %dead = OpLabel\n"
" %35 = OpAccessChain %_ptr_Uniform_uint %dataOutput %uint_0 %uint_i\n"
- " OpStore %35 %uint_dummy\n"
+ " OpStore %35 %uint_unused\n"
" OpBranch %merge\n"
" %merge = OpLabel\n"
" OpReturn\n"
spec.assembly = shaderSource.specialize(specs);
spec.numWorkGroups = IVec3(numItems, 1, 1);
- spec.outputs.push_back(BufferSp(new Buffer<deUint32>(outputData)));
+ spec.outputs.push_back(Resource(BufferSp(new Buffer<deUint32>(outputData))));
group->addChild(new SpvAsmComputeShaderCase(testCtx, testName.c_str(), "Tests both labels pointing to a same branch.", spec));
}
RGBA defaultColors[4];
GraphicsResources resources;
vector<deUint32> outputData;
+ VulkanFeatures features;
outputData.reserve(numItems);
for (deUint32 numIdx = 0; numIdx < numItems; ++numIdx)
outputData.push_back(numIdx);
- resources.outputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Buffer<deUint32>(outputData))));
+ resources.outputs.push_back(Resource(BufferSp(new Buffer<deUint32>(outputData)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+
+ features.coreFeatures.vertexPipelineStoresAndAtomics = true;
+ features.coreFeatures.fragmentStoresAndAtomics = true;
getDefaultColors(defaultColors);
" %dataOutput = OpVariable %_ptr_Uniform_Output Uniform\n"
" %_ptr_Uniform_uint = OpTypePointer Uniform %u32\n"
" %fp_u32 = OpTypePointer Function %u32\n"
- " %uint_dummy = OpConstant %u32 2863311530\n";
+ " %uint_unused = OpConstant %u32 2863311530\n";
fragments["decoration"] =
" OpDecorate %_arr_uint_uint_128 ArrayStride 4\n"
" OpDecorate %dataOutput Binding 0\n";
const StringTemplate testFun (
- " %test_code = OpFunction %v4f32 None %v4f32_function\n"
+ " %test_code = OpFunction %v4f32 None %v4f32_v4f32_function\n"
" %param = OpFunctionParameter %v4f32\n"
" %entry = OpLabel\n"
" OpBranch %condmerge\n"
" %dead = OpLabel\n"
" %35 = OpAccessChain %_ptr_Uniform_uint %dataOutput %c_u32_0 %uint_i\n"
- " OpStore %35 %uint_dummy\n"
+ " OpStore %35 %uint_unused\n"
" OpBranch %condmerge\n"
" %condmerge = OpLabel\n"
" OpBranch %inc\n"
specs["condition"] = conditions[conditionIdx];
fragments["testfun"] = testFun.specialize(specs);
- createTestsForAllStages(testName.c_str(), defaultColors, defaultColors, fragments, resources, vector<string>(), group);
+ createTestsForAllStages(testName.c_str(), defaultColors, defaultColors, fragments, resources, vector<string>(), group, features);
}
}