specs["ExtraSetupComputations"] = "";
specs["VarPtrName"] = "%mux_output_var_ptr";
specs["ResultStrategy"] = "%mux_output_var_ptr = OpSelect %sb_f32ptr %is_neg" + muxInput1 + muxInput2 + "\n";
- spec.inputTypes[0] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[1] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[2] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
spec.assembly = shaderTemplate.specialize(specs);
spec.numWorkGroups = IVec3(numMuxes, 1, 1);
spec.requestedVulkanFeatures = requiredFeatures;
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputAFloats)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputBFloats)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputSFloats)));
- spec.outputs.push_back(BufferSp(new Float32Buffer(expectedOutput)));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputAFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
specs["ExtraSetupComputations"] = "";
specs["VarPtrName"] = "%mux_output_var_ptr";
specs["ResultStrategy"] = "%mux_output_var_ptr = OpFunctionCall %sb_f32ptr %choose_input_func %is_neg" + muxInput1 + muxInput2 + "\n";
- spec.inputTypes[0] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[1] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[2] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
spec.assembly = shaderTemplate.specialize(specs);
spec.numWorkGroups = IVec3(numMuxes, 1, 1);
spec.requestedVulkanFeatures = requiredFeatures;
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputAFloats)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputBFloats)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputSFloats)));
- spec.outputs.push_back(BufferSp(new Float32Buffer(expectedOutput)));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputAFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
" OpBranch %end_label\n"
"%end_label = OpLabel\n"
"%mux_output_var_ptr = OpPhi %sb_f32ptr" + muxInput1 + "%take_mux_input_1" + muxInput2 + "%take_mux_input_2\n";
- spec.inputTypes[0] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[1] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[2] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
spec.assembly = shaderTemplate.specialize(specs);
spec.numWorkGroups = IVec3(numMuxes, 1, 1);
spec.requestedVulkanFeatures = requiredFeatures;
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputAFloats)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputBFloats)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputSFloats)));
- spec.outputs.push_back(BufferSp(new Float32Buffer(expectedOutput)));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputAFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
"%mux_input_1_copy = OpCopyObject %sb_f32ptr" + muxInput1 + "\n"
"%mux_input_2_copy = OpCopyObject %sb_f32ptr" + muxInput2 + "\n"
"%mux_output_var_ptr = OpSelect %sb_f32ptr %is_neg %mux_input_1_copy %mux_input_2_copy\n";
- spec.inputTypes[0] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[1] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[2] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
spec.assembly = shaderTemplate.specialize(specs);
spec.numWorkGroups = IVec3(numMuxes, 1, 1);
spec.requestedVulkanFeatures = requiredFeatures;
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputAFloats)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputBFloats)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputSFloats)));
- spec.outputs.push_back(BufferSp(new Float32Buffer(expectedOutput)));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputAFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
"%opselect_result = OpSelect %sb_f32ptr %is_neg" + muxInput1 + muxInput2 + "\n"
" OpStore %mux_output_copy %opselect_result\n"
"%mux_output_var_ptr = OpLoad %sb_f32ptr %mux_output_copy\n";
- spec.inputTypes[0] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[1] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[2] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
spec.assembly = shaderTemplate.specialize(specs);
spec.numWorkGroups = IVec3(numMuxes, 1, 1);
spec.requestedVulkanFeatures = requiredFeatures;
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputAFloats)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputBFloats)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputSFloats)));
- spec.outputs.push_back(BufferSp(new Float32Buffer(expectedOutput)));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputAFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), description.c_str(), spec));
}
"%a_2i_ptr = OpPtrAccessChain %sb_f32ptr %a_ptr %two_i\n"
"%a_2i_plus_1_ptr = OpPtrAccessChain %sb_f32ptr %a_ptr %two_i_plus_1\n"
"%mux_output_var_ptr = OpSelect %sb_f32ptr %is_neg " + in_1 + in_2 + "\n";
- spec.inputTypes[0] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[1] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[2] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
spec.assembly = shaderTemplate.specialize(specs);
spec.numWorkGroups = IVec3(numMuxes, 1, 1);
spec.requestedVulkanFeatures = requiredFeatures;
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputAFloats)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputBFloats)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputSFloats)));
- spec.outputs.push_back(BufferSp(new Float32Buffer(expectedOutput)));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputAFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
" %val = OpLoad %f32 %mux_output_var_ptr\n"
" %val_plus_1 = OpFAdd %f32 %val %fone\n"
" OpStore %mux_output_var_ptr %val_plus_1\n";
- spec.inputTypes[0] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[1] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[2] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
spec.assembly = shaderTemplate.specialize(specs);
spec.numWorkGroups = IVec3(numMuxes, 1, 1);
spec.requestedVulkanFeatures = requiredFeatures;
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputAFloats)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputBFloats)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputSFloats)));
- spec.outputs.push_back(BufferSp(new Float32Buffer(expectedIncrOutput)));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputAFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedIncrOutput))));
spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
" OpStore %loc_AW_i %inval_a_i\n"
" OpStore %loc_BW_i %inval_b_i\n"
"%output_var_ptr = OpSelect %f32_wrkgrp_ptr %is_neg %loc_AW_i %loc_BW_i\n";
- spec.inputTypes[0] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[1] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[2] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
spec.assembly = shaderTemplate.specialize(specs);
spec.numWorkGroups = IVec3(numMuxes, 1, 1);
spec.requestedVulkanFeatures = requiredFeatures;
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputAFloats)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputBFloats)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputSFloats)));
- spec.outputs.push_back(BufferSp(new Float32Buffer(expectedOutput)));
+ spec.inputs.push_back (Resource(BufferSp(new Float32Buffer(inputAFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back (Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back (Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
+ baseANameAtLevel[indexLevel] + " "
+ baseBNameAtLevel[indexLevel] + "\n";
expectedOutput[0] = selectedInput[baseOffset];
- spec.inputTypes[0] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[1] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[2] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
spec.assembly = shaderTemplate.specialize(specs);
spec.numWorkGroups = IVec3(1, 1, 1);
spec.requestedVulkanFeatures = requiredFeatures;
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputA)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputB)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputC)));
- spec.outputs.push_back(BufferSp(new Float32Buffer(expectedOutput)));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputA)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputC)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
+ baseANameAtLevel[indexLevel] + " "
+ baseBNameAtLevel[indexLevel] + "\n";
expectedOutput[0] = selectedInput[baseOffset];
- spec.inputTypes[0] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[1] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[2] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
spec.assembly = shaderTemplate.specialize(specs);
spec.numWorkGroups = IVec3(1, 1, 1);
spec.requestedVulkanFeatures = requiredFeatures;
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputA)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputB)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputC)));
- spec.outputs.push_back(BufferSp(new Float32Buffer(expectedOutput)));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputA)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputC)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
+ baseBNameAtLevel[indexLevel]
+ " %take_input_b\n";
expectedOutput[0] = selectedInput[baseOffset];
- spec.inputTypes[0] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[1] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[2] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
spec.assembly = shaderTemplate.specialize(specs);
spec.numWorkGroups = IVec3(1, 1, 1);
spec.requestedVulkanFeatures = requiredFeatures;
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputA)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputB)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputC)));
- spec.outputs.push_back(BufferSp(new Float32Buffer(expectedOutput)));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputA)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputC)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
"%in_b_copy = OpCopyObject " + pointerTypeAtLevel[indexLevel] + " " + baseBNameAtLevel[indexLevel] + "\n"
"%var_ptr = OpSelect " + pointerTypeAtLevel[indexLevel] + " " + spirvSelectInputA + " %in_a_copy %in_b_copy\n";
expectedOutput[0] = selectedInput[baseOffset];
- spec.inputTypes[0] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[1] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[2] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
spec.assembly = shaderTemplate.specialize(specs);
spec.numWorkGroups = IVec3(1, 1, 1);
spec.requestedVulkanFeatures = requiredFeatures;
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputA)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputB)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputC)));
- spec.outputs.push_back(BufferSp(new Float32Buffer(expectedOutput)));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputA)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputC)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
+ baseANameAtLevel[indexLevel] + " "
+ baseBNameAtLevel[indexLevel] + "\n";
expectedOutput[0] = selectedInput[baseOffset];
- spec.inputTypes[0] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[1] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
- spec.inputTypes[2] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
spec.assembly = shaderTemplate.specialize(specs);
spec.numWorkGroups = IVec3(1, 1, 1);
spec.requestedVulkanFeatures = requiredFeatures;
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputA)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputB)));
- spec.inputs.push_back(BufferSp(new Float32Buffer(inputC)));
- spec.outputs.push_back(BufferSp(new Float32Buffer(expectedOutput)));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputA)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputC)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
"%loaded_f32 = OpLoad %f32 %loaded_f32_ptr \n"
" OpStore %output_loc %loaded_f32 \n";
- spec.inputTypes[0] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
spec.assembly = shaderTemplate.specialize(specs);
spec.numWorkGroups = IVec3(1, 1, 1);
spec.requestedVulkanFeatures = requiredFeatures;
- spec.inputs.push_back(BufferSp(new Float32Buffer(input)));
- spec.outputs.push_back(BufferSp(new Float32Buffer(expectedOutput)));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(input)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
"%loaded_var = OpLoad %f32 %selected_ptr\n"
"OpStore %output_loc %loaded_var\n";
- spec.inputTypes[0] = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
spec.assembly = shaderTemplate.specialize(specs);
spec.numWorkGroups = IVec3(1, 1, 1);
spec.requestedVulkanFeatures = requiredFeatures;
- spec.inputs.push_back(BufferSp(new Float32Buffer(input)));
- spec.outputs.push_back(BufferSp(new Float32Buffer(expectedOutput)));
+ spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(input)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
fragments["pre_main"] = preMain.specialize(specs);
fragments["testfun"] = testFunction.specialize(specs);
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputAFloats))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputBFloats))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputSFloats))));
- resources.outputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(expectedOutput))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputAFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
createTestsForAllStages(name.c_str(), defaultColors, defaultColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
{ // Variable Pointer Reads (using OpFunctionCall)
fragments["pre_main"] = preMain.specialize(specs);
fragments["testfun"] = testFunction.specialize(specs);
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputAFloats))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputBFloats))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputSFloats))));
- resources.outputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(expectedOutput))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputAFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
createTestsForAllStages(name.c_str(), defaultColors, defaultColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
{ // Variable Pointer Reads (using OpPhi)
fragments["pre_main"] = preMain.specialize(specs);
fragments["testfun"] = testFunction.specialize(specs);
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputAFloats))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputBFloats))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputSFloats))));
- resources.outputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(expectedOutput))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputAFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
createTestsForAllStages(name.c_str(), defaultColors, defaultColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
{ // Variable Pointer Reads (using OpCopyObject)
fragments["pre_main"] = preMain.specialize(specs);
fragments["testfun"] = testFunction.specialize(specs);
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputAFloats))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputBFloats))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputSFloats))));
- resources.outputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(expectedOutput))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputAFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
createTestsForAllStages(name.c_str(), defaultColors, defaultColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
{ // Test storing into Private variables.
fragments["pre_main"] = preMain.specialize(specs);
fragments["testfun"] = testFunction.specialize(specs);
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputAFloats))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputBFloats))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputSFloats))));
- resources.outputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(expectedOutput))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputAFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
createTestsForAllStages(name.c_str(), defaultColors, defaultColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
}
fragments["testfun"] = testFunction.specialize(specs);
fragments["capability"] = cap;
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputAFloats))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputBFloats))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputSFloats))));
- resources.outputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(expectedOutput))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputAFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
createTestsForAllStages(name.c_str(), defaultColors, defaultColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
{ // Variable Pointer Writes
fragments["pre_main"] = preMain.specialize(specs);
fragments["testfun"] = testFunction.specialize(specs);
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputAFloats))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputBFloats))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputSFloats))));
- resources.outputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(expectedIncrOutput))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputAFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedIncrOutput)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
createTestsForAllStages(name.c_str(), defaultColors, defaultColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
}
fragments["decoration"] = decoration.specialize(specs);
fragments["pre_main"] = preMain.specialize(specs);
fragments["testfun"] = testFunction.specialize(specs);
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputA))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputB))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputA)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
getExpectedOutputColor(defaultColors, expectedColors, selectedInput[baseOffset]);
createTestsForAllStages(name.c_str(), defaultColors, expectedColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
fragments["decoration"] = decoration.specialize(specs);
fragments["pre_main"] = preMain.specialize(specs);
fragments["testfun"] = testFunction.specialize(specs);
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputA))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputB))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputA)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
getExpectedOutputColor(defaultColors, expectedColors, selectedInput[baseOffset]);
createTestsForAllStages(name.c_str(), defaultColors, expectedColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
fragments["decoration"] = decoration.specialize(specs);
fragments["pre_main"] = preMain.specialize(specs);
fragments["testfun"] = testFunction.specialize(specs);
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputA))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputB))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputA)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
getExpectedOutputColor(defaultColors, expectedColors, selectedInput[baseOffset]);
createTestsForAllStages(name.c_str(), defaultColors, expectedColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
fragments["decoration"] = decoration.specialize(specs);
fragments["pre_main"] = preMain.specialize(specs);
fragments["testfun"] = testFunction.specialize(specs);
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputA))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputB))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputA)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
getExpectedOutputColor(defaultColors, expectedColors, selectedInput[baseOffset]);
createTestsForAllStages(name.c_str(), defaultColors, expectedColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
fragments["decoration"] = decoration.specialize(specs);
fragments["pre_main"] = preMain.specialize(specs);
fragments["testfun"] = testFunction.specialize(specs);
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputA))));
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputB))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputA)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
getExpectedOutputColor(defaultColors, expectedColors, selectedInput[baseOffset]);
createTestsForAllStages(name.c_str(), defaultColors, expectedColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
fragments["decoration"] = decoration.specialize(specs);
fragments["pre_main"] = preMain.specialize(specs);
fragments["testfun"] = testFunction.specialize(specs);
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputBuffer))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBuffer)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
getExpectedOutputColor(defaultColors, expectedColors, inputBuffer[baseOffset]);
createTestsForAllStages(name.c_str(), defaultColors, expectedColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
fragments["decoration"] = decoration.specialize(specs);
fragments["pre_main"] = preMain.specialize(specs);
fragments["testfun"] = testFunction.specialize(specs);
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputBuffer))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBuffer)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
getExpectedOutputColor(defaultColors, expectedColors, inputBuffer[baseOffset]);
createTestsForAllStages(name.c_str(), defaultColors, expectedColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
fragments["decoration"] = decoration.specialize(specs);
fragments["pre_main"] = preMain.specialize(specs);
fragments["testfun"] = testFunction.specialize(specs);
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputBuffer))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBuffer)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
getExpectedOutputColor(defaultColors, expectedColors, inputBuffer[baseOffset]);
createTestsForAllStages(name.c_str(), defaultColors, expectedColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
fragments["decoration"] = decoration.specialize(specs);
fragments["pre_main"] = preMain.specialize(specs);
fragments["testfun"] = testFunction.specialize(specs);
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputBuffer))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBuffer)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
getExpectedOutputColor(defaultColors, expectedColors, inputBuffer[baseOffset]);
createTestsForAllStages(name.c_str(), defaultColors, expectedColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
fragments["decoration"] = decoration.specialize(specs);
fragments["pre_main"] = preMain.specialize(specs);
fragments["testfun"] = testFunction.specialize(specs);
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(inputBuffer))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBuffer)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
getExpectedOutputColor(defaultColors, expectedColors, inputBuffer[baseOffset]);
createTestsForAllStages(name.c_str(), defaultColors, expectedColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
fragments["decoration"] = decoration.specialize(specs);
fragments["pre_main"] = preMain.specialize(specs);
fragments["testfun"] = testFunction.specialize(specs);
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(input))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(input)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
createTestsForAllStages("opvariable_initialized_null", defaultColors, expectedColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
// Use OpSelect to choose between nullptr and a valid pointer. Since we can't dereference nullptr,
fragments["decoration"] = decoration.specialize(specs);
fragments["pre_main"] = preMain.specialize(specs);
fragments["testfun"] = testFunction.specialize(specs);
- resources.inputs.push_back(std::make_pair(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, BufferSp(new Float32Buffer(input))));
+ resources.inputs.push_back(Resource(BufferSp(new Float32Buffer(input)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
createTestsForAllStages("opselect_null_or_valid_ptr", defaultColors, expectedColors, fragments, resources, extensions, testGroup, requiredFeatures);
}
}