Merge pull request #5221 from aws-lumberyard-dev/Atom/santorac/OrderOnceDependencyForPassBuilder

Changed PassBuilder's job dependencies to be OrderOnce.
This commit is contained in:
santorac
2022-01-12 14:42:33 -08:00
committed by GitHub
@@ -53,7 +53,7 @@ namespace AZ
{
AssetBuilderSDK::AssetBuilderDesc builder;
builder.m_name = PassBuilderJobKey;
builder.m_version = 14; // making .pass files emit product dependencies for the shaders they reference so they are picked up by the asset bundler
builder.m_version = 15; // Changed dependency type to OrderOnce
builder.m_busId = azrtti_typeid<PassBuilder>();
builder.m_createJobFunction = AZStd::bind(&PassBuilder::CreateJobs, this, AZStd::placeholders::_1, AZStd::placeholders::_2);
builder.m_processJobFunction = AZStd::bind(&PassBuilder::ProcessJob, this, AZStd::placeholders::_1, AZStd::placeholders::_2);
@@ -97,27 +97,16 @@ namespace AZ
// Helper function to get a file reference and create a corresponding job dependency
bool AddDependency(FindPassReferenceAssetParams& params, AssetBuilderSDK::JobDescriptor* job)
{
AZStd::string_view& file = params.dependencySourceFile;
AZ::Data::AssetInfo sourceInfo;
AZStd::string watchFolder;
bool fileFound = false;
AzToolsFramework::AssetSystemRequestBus::BroadcastResult(fileFound, &AzToolsFramework::AssetSystem::AssetSystemRequest::GetSourceInfoBySourcePath, file.data(), sourceInfo, watchFolder);
if (fileFound)
{
AssetBuilderSDK::JobDependency jobDependency;
jobDependency.m_jobKey = params.jobKey;
jobDependency.m_type = AssetBuilderSDK::JobDependencyType::Order;
jobDependency.m_sourceFile.m_sourceFileDependencyPath = file;
job->m_jobDependencyList.push_back(jobDependency);
AZ_TracePrintf(PassBuilderName, "Creating job dependency on file [%s] \n", file.data());
return true;
}
else
{
AZ_Error(PassBuilderName, false, "Could not find referenced file [%s]", file.data());
return false;
}
// We use an OrderOnce job dependency to ensure that the Asset Processor knows about the
// referenced asset, so we can make an AssetId for it later in ProcessJob. OrderOnce is
// enough because we don't need to read any data from the asset, we just needs its ID.
AssetBuilderSDK::JobDependency jobDependency;
jobDependency.m_jobKey = params.jobKey;
jobDependency.m_type = AssetBuilderSDK::JobDependencyType::OrderOnce;
jobDependency.m_sourceFile.m_sourceFileDependencyPath = params.dependencySourceFile;
job->m_jobDependencyList.push_back(jobDependency);
AZ_TracePrintf(PassBuilderName, "Creating job dependency on file [%.*s] \n", AZ_STRING_ARG(params.dependencySourceFile));
return true;
}
bool SetJobKeyForExtension(const AZStd::string& filePath, FindPassReferenceAssetParams& params)