Ejemplo n.º 1
0
    public static SettingsProvider CreatePerformanceTestsProvider()
    {
        var provider = new SettingsProvider("Project/Performance Tests", SettingsScope.Project)
        {
            // By default the last token of the path is used as display name if no label is provided.
            label = "Performance Tests",
            // Create the SettingsProvider and initialize its drawing (IMGUI) function in place:
            guiHandler = (searchContext) =>
            {
                var settings = PerformanceTestSettings.GetSerializedSettings();

                EditorGUI.BeginChangeCheck();
                ShowObjectField(settings.FindProperty("testDescriptionAsset"), typeof(TestSceneAsset), new GUIContent("Test Description Asset"));
                ShowObjectField(settings.FindProperty("staticAnalysisAsset"), typeof(EditorShaderStaticAnalysisAsset), new GUIContent("Static Analysis Asset"));
                if (EditorGUI.EndChangeCheck())
                {
                    settings.ApplyModifiedProperties();
                }
            },

            // Populate the search keywords to enable smart search filtering and label highlighting:
            keywords = new HashSet <string>(new[] { "Performance" })
        };

        return(provider);
    }
Ejemplo n.º 2
0
    public static IEnumerable <StaticAnalysisEntry> GetStaticAnalysisEntries(BuildTarget buildTarget)
    {
        var resource = PerformanceTestSettings.GetStaticAnalysisAsset() as EditorShaderStaticAnalysisAsset;

        if (resource == null)
        {
            yield break;
        }

        foreach (var definition in resource.processAssetDefinitions)
        {
            // Skip when not included in this build target
            if (definition.includeInTargets != null && Array.IndexOf(definition.includeInTargets, buildTarget) == -1)
            {
                continue;
            }

            if (definition.asset == null || definition.asset.Equals(null))
            {
                yield return(new StaticAnalysisEntry("Missing asset in definition."));

                continue;
            }

            var assetType = definition.asset.GetType();

            if (assetType != typeof(Material) &&
                assetType != typeof(Shader) &&
                assetType != typeof(ComputeShader))
            {
                yield return(new StaticAnalysisEntry($"Invalid asset type {assetType}"));

                continue;
            }

            if (!definition.filter.Resolve(resource.filters, out var filter, out var errorMessage))
            {
                yield return(new StaticAnalysisEntry($"Invalid filter ({errorMessage})"));

                continue;
            }

            var programFilter = ShaderProgramFilter.Parse(filter.passNameFilter, filter.keywordFilter);
            yield return(new StaticAnalysisEntry(definition.asset,
                                                 definition.assetAlias,
                                                 definition.assetCategory,
                                                 programFilter,
                                                 filter.name,
                                                 filter.category,
                                                 definition.testName,
                                                 buildTarget,
                                                 resource.staticAnalysisTimeout));
        }
    }
Ejemplo n.º 3
0
    public override void OnInspectorGUI()
    {
        if (PerformanceTestSettings.GetTestSceneDescriptionAsset() == null)
        {
            EditorGUILayout.HelpBox($"Test Scene Asset is null, please set it in Project Settings / Performance Tests", MessageType.Error);
        }

        EditorGUIUtility.labelWidth = 100;

        DrawTestBlock(m_CounterSceneList, m_CounterSRPAssets, Styles.countersText);
        DrawTestBlock(m_MemorySceneList, m_MemorySRPAssets, Styles.memoryText);
        DrawTestBlock(m_BuildSceneList, m_BuildSRPAssets, Styles.buildTimeText);

        EditorGUILayout.Space();

        if (GUILayout.Button(Styles.refreshTestRunner))
        {
            CompilationPipeline.RequestScriptCompilation();
        }

        EditorGUILayout.Space();

        DrawSRPAssetAliasList();
    }