private VisualElement CreateShaderProperties(ShaderProgramPerfInfo info)
        {
            Foldout fold = new Foldout();

            fold.text = "Shader Property";
            fold.name = "ShaderInfo";

            var val = new string[2, 6];

            val[0, 0] = "Has uniform computation";
            val[0, 1] = "Has side-effects";
            val[0, 2] = "Modifies coverage";
            val[0, 3] = "Use late ZS test";
            val[0, 4] = "Use late ZS update";
            val[0, 5] = "Read color buffer";


            val[1, 0] = info.hasUniformComputation.ToString();
            val[1, 1] = info.hasSideEffects.ToString();
            val[1, 2] = info.modifisCoverage.ToString();
            val[1, 3] = info.useLateZSTest.ToString();
            val[1, 4] = info.useLateZSUpdate.ToString();
            val[1, 5] = info.readColorBuffer.ToString();
            fold.Add(CreateTableView(val));
            return(fold);
        }
        private VisualElement CreateMainShaderInfoTable(ShaderProgramPerfInfo info)
        {
            Foldout fold = new Foldout();

            fold.text = "Main Info";
            fold.name = "MainInfo";
            var val = new string[2, 4];

            val[0, 0] = "Work register";
            val[0, 1] = "uniform register";
            val[0, 2] = "Stack spilling";
            val[0, 3] = "16-bit arithmetic";
            val[1, 0] = info.workRegisters.ToString();
            val[1, 1] = info.uniformRegister.ToString();
            val[1, 2] = info.hasStackSpilling.ToString();
            val[1, 3] = info.bit16Arithmetic + "%";
            fold.Add(CreateTableView(val));
            return(fold);
        }
        private VisualElement CreateProgramElement(string name, ShaderProgramPerfInfo perfInfo)
        {
            var fold = new Foldout();

            fold.text = name;
            VisualElement ve = null;

            if (perfInfo != null)
            {
                ve = ShaderProgramInfoElement.Create(perfInfo);
            }
            else
            {
                ve = new Label("No data");
            }
            ve.style.marginLeft = FoldMarginLeft;
            fold.Add(ve);
            fold.style.marginLeft = FoldMarginLeft;
            return(fold);
        }
        private VisualElement CreateCycleTable(ShaderProgramPerfInfo info)
        {
            Foldout fold = new Foldout();

            fold.text = "Cycle Info";
            fold.name = "CycleInfo";
            var val = new string[4, info.pipelines.Length + 1];

            for (int i = 0; i < info.pipelines.Length; ++i)
            {
                val[0, 1 + i] = info.pipelines[i];
                val[1, 1 + i] = info.totalCycles[i].ToString();
                val[2, 1 + i] = info.longestCycles[i].ToString();
                val[3, 1 + i] = info.shortestCycles[i].ToString();
            }
            val[0, 0] = " ";
            val[1, 0] = "total";
            val[2, 0] = "longest";
            val[3, 0] = "shortest";
            fold.Add(CreateTableView(val));
            return(fold);
        }
示例#5
0
        private VisualElement InitShaderProgramElement(string name, ShaderProgramPerfInfo info)
        {
            Foldout fold = new Foldout();

            fold.name = name;
            fold.text = name;
            var ve = ShaderProgramInfoElement.Create(info);

            ve.style.marginLeft = 20;

            var cycleInfo  = ve.Q <Foldout>("CycleInfo");
            var mainInfo   = ve.Q <Foldout>("MainInfo");
            var shaderInfo = ve.Q <Foldout>("ShaderInfo");

            // InitFold
            InitShaderInfoFoldout(fold, name, true);

            InitShaderInfoFoldout(cycleInfo, name + "-Cycle", true);
            InitShaderInfoFoldout(mainInfo, name + "-Main", false);
            InitShaderInfoFoldout(shaderInfo, name + "-Shader", false);

            fold.Add(ve);
            return(fold);
        }
 private ShaderProgramInfoElement(ShaderProgramPerfInfo info)
 {
     this.Add(CreateCycleTable(info));
     this.Add(CreateMainShaderInfoTable(info));
     this.Add(CreateShaderProperties(info));
 }
 public static ShaderProgramInfoElement Create(ShaderProgramPerfInfo info)
 {
     return(new ShaderProgramInfoElement(info));
 }