예제 #1
0
        public GPUProgram AddGPUProgram(string name, string sourceCode, string[] defines, DefineSet[] multicompiles, DefineSet[] multicompileCombinations)
        {
            var result = new GPUProgram(name, sourceCode, defines, multicompiles, multicompileCombinations);

            result.report = this;
            m_Programs.Add(result);
            m_ProgramNameIndex[name] = m_Programs.Count - 1;
            return(result);
        }
        public override object ConvertTo(ITypeDescriptorContext Context, CultureInfo Culture, object Value, Type DestinationType)
        {
            if (DestinationType == typeof(String) && Value is GPUProgram)
            {
                GPUProgram so = (GPUProgram)Value;

                return("Check while typing : " + so.Pointer);
            }

            return(base.ConvertTo(Context, Culture, Value, DestinationType));
        }
예제 #3
0
        PerformanceUnit AddPerformanceReport(GPUProgram gpuProgram, int multicompileIndex, string rawReport, ProgramPerformanceMetrics parsedReport)
        {
            var programIndex = m_Programs.IndexOf(gpuProgram);

            var unit = new PerformanceUnit(this, programIndex, multicompileIndex, rawReport, parsedReport);

            m_PerformanceUnit.Add(unit);

            if (!m_ProgramPerformanceUnits.ContainsKey(unit.programIndex))
            {
                m_ProgramPerformanceUnits[unit.programIndex] = new Dictionary <int, int>();
            }

            m_ProgramPerformanceUnits[unit.programIndex][unit.multicompileIndex] = m_PerformanceUnit.Count - 1;

            return(unit);
        }
예제 #4
0
        CompileUnit AddCompileUnit(GPUProgram gpuProgram, int multicompileIndex, string[] defines, LogItem[] warnings, LogItem[] errors, ShaderProfile profile, string entry)
        {
            var programIndex = m_Programs.IndexOf(gpuProgram);

            var unit = new CompileUnit(this, programIndex, multicompileIndex, defines, warnings, errors, profile, entry);

            m_CompileUnits.Add(unit);

            if (!m_ProgramCompileUnits.ContainsKey(unit.programIndex))
            {
                m_ProgramCompileUnits[unit.programIndex] = new Dictionary <int, int>();
            }

            m_ProgramCompileUnits[unit.programIndex][unit.multicompileIndex] = m_CompileUnits.Count - 1;

            return(unit);
        }
예제 #5
0
 IEnumerable <CompileUnit> GetCompileUnits(GPUProgram gpuProgram)
 {
     return(GetUnits(m_ProgramCompileUnits, m_CompileUnits, gpuProgram));
 }
예제 #6
0
 CompileUnit GetCompileUnit(GPUProgram gpuProgram, int multicompileIndex)
 {
     return(GetUnit(m_ProgramCompileUnits, m_CompileUnits, gpuProgram, multicompileIndex));
 }
예제 #7
0
 IEnumerable <PerformanceUnit> GetPerformanceUnits(GPUProgram gpuProgram)
 {
     return(GetUnits(m_ProgramPerformanceUnits, m_PerformanceUnit, gpuProgram));
 }
예제 #8
0
 PerformanceUnit GetPerformanceUnit(GPUProgram gpuProgram, int multicompileIndex)
 {
     return(GetUnit(m_ProgramPerformanceUnits, m_PerformanceUnit, gpuProgram, multicompileIndex));
 }
예제 #9
0
        IEnumerable <TType> GetUnits <TType>(Dictionary <int, Dictionary <int, int> > map, List <TType> source, GPUProgram program)
            where TType : class
        {
            var programIndex = m_Programs.IndexOf(program);

            if (!map.ContainsKey(programIndex))
            {
                return(Enumerable.Empty <TType>());
            }

            var indices = map[programIndex];

            return(new IndirectEnumerable <TType>(source, indices));
        }
예제 #10
0
        TType GetUnit <TType>(Dictionary <int, Dictionary <int, int> > map, List <TType> source, GPUProgram program, int multicompileIndex)
            where TType : class
        {
            var programIndex = m_Programs.IndexOf(program);

            return(GetUnit(map, source, programIndex, multicompileIndex));
        }