public override IEnumerator ExportBuildReport() { m_Report = new ShaderBuildReport(); var c = kernels.Count; for (var i = 0; i < c; i++) { var kernel = kernels[i]; var program = m_Report.AddGPUProgram( kernel.name, sourceCode, kernel.defines.ToArray(), new ShaderBuildReport.DefineSet[0], new ShaderBuildReport.DefineSet[0]); var unit = GetCompileUnitAt(i); program.AddCompileUnit( -1, unit.compileOptions.defines.ToArray(), unit.warnings.ToArray(), unit.errors.ToArray(), ShaderProfile.ComputeProgram, unit.compileOptions.entry ); var perf = GetPerfReportAt(i); program.AddPerformanceReport(-1, perf.rawReport, perf.parsedReport); } yield break; }
internal PerformanceUnit(ShaderBuildReport owner, int programIndex, int multicompileIndex, string rawReport, ProgramPerformanceMetrics parsedReport) { this.owner = owner; m_GPUProgramIndex = programIndex; m_MultiCompileIndex = multicompileIndex; m_RawReport = rawReport; m_ParsedReport = parsedReport; }
internal CompileUnit(ShaderBuildReport owner, int programIndex, int multicompileIndex, string[] defines, LogItem[] warnings, LogItem[] errors, ShaderProfile profile, string entry) { m_GPUProgramIndex = programIndex; m_MultiCompileIndex = multicompileIndex; m_Defines = defines; m_Warnings = warnings; m_Errors = errors; m_Profile = profile; m_Entry = entry; this.owner = owner; }
public override IEnumerator ExportBuildReport() { m_Report = new ShaderBuildReport(); #if UNITY_2018_1_OR_NEWER foreach (var skippedPassIndex in m_SkippedPassesFromFilter) { var pass = shaderData.ActiveSubshader.GetPass(skippedPassIndex); m_Report.AddSkippedPass(skippedPassIndex, pass.Name); } #endif var c = passes.Count; for (var i = 0; i < c; i++) { var pass = passes[i]; var program = m_Report.AddGPUProgram( pass.name, pass.sourceCode, m_ShaderKeywords.ToArray(), DefineSetFromHashSets(pass.multicompiles), DefineSetFromHashSets(pass.combinedMulticompiles)); var unitIndices = m_CompileUnitPerPass[i]; for (var j = 0; j < unitIndices.Count; j++) { var unit = GetCompileUnitAt(unitIndices[j]); program.AddCompileUnit(j, unit.compileOptions.defines.ToArray(), unit.warnings.ToArray(), unit.errors.ToArray(), ShaderProfile.PixelProgram, unit.compileOptions.entry); } for (var j = 0; j < unitIndices.Count; j++) { var indice = unitIndices[j]; if (indice >= perfReportCount) { continue; } var perf = GetPerfReportAt(unitIndices[j]); program.AddPerformanceReport(j, perf.rawReport, perf.parsedReport); } } yield break; }
/// <summary>Set the report.</summary> /// <param name="report">The report to set.</param> /// <exception cref="ArgumentNullException">for <paramref name="report"/></exception> protected void SetReport(ShaderBuildReport report) { m_BuildReport = report ?? throw new ArgumentNullException(nameof(report)); m_HasReport = true; }