Example #1
0
        public void CalculateDisplayedValues(int fromIdx, int toIdx, IEnumerable <string> restrictToViewPaths)
        {
            int       numTasks    = 32;
            int       numFrames   = toIdx - fromIdx + 1;
            int       segmentSize = (numFrames / numTasks) + 1;
            MTCounter counter     = new MTCounter(numFrames);

            ProfilerRDI.ValueList vl = m_logControl.m_prdiTree.BuildValueList(m_dataPaths, m_viewPaths, restrictToViewPaths);

            for (int i = 0; i < numTasks; ++i)
            {
                int start = fromIdx + (i * segmentSize);
                int end   = Math.Min(start + segmentSize, toIdx + 1);

                if (start >= end)
                {
                    break;
                }

                ThreadPool.QueueUserWorkItem((o) =>
                {
                    for (int j = start; j < end; ++j)
                    {
                        IReadOnlyFRVs dataValues     = m_baseLogData.FrameRecords[j].Values;
                        FrameRecordValues viewValues = m_baseViewFRs[j].Values;
                        CalcViewValues(dataValues, viewValues, vl);
                    }

                    counter.Increment(end - start);
                }
                                             );
            }

            counter.WaitUntilMax();
        }
Example #2
0
        protected override float GetValue(FrameRecord fr, ViewFrameRecord vfr, LogView logView)
        {
            OverviewRDI   ordi  = logView.m_logControl.m_ordiTree[TrackedPath];
            IReadOnlyFRVs frvs  = ordi.ValueIsPerLogView ? vfr.Values : fr.Values;
            float         value = frvs[ordi.ValuesPath];

            return((ValuesAreFPS && value != 0.0f) ? (1000.0f / value) : value);
        }
Example #3
0
        static void CalcSingleValueStat(ValueStats valueStats, int path, int fromIdx, int toIdx, GetValuesFromIndex valuesFromIdx)
        {
            for (int i = fromIdx; i <= toIdx; i++)
            {
                IReadOnlyFRVs values = valuesFromIdx(i);

                if (values.ContainsPath(path))
                {
                    valueStats.Update(values[path]);
                }
            }
        }
Example #4
0
        public float GetLocalMax(int frame, int numFrames, string path)
        {
            float maxValue   = 0.0f;
            int   startFrame = Math.Max(0, frame - numFrames);
            int   endFrame   = Math.Min(frame, FrameRecords.Count - 1);

            for (int i = startFrame; i <= endFrame; i++)
            {
                IReadOnlyFRVs frv = FrameRecords[i].Values;

                if (frv.ContainsPath(path))
                {
                    maxValue = Math.Max(maxValue, frv[path]);
                }
            }

            return(maxValue);
        }
Example #5
0
        public float GetMovingAverage(int frame, int numFrames, string path)
        {
            float avgValue         = 0.0f;
            int   startFrame       = Math.Max(0, frame - numFrames);
            int   endFrame         = Math.Min(frame + numFrames, FrameRecords.Count);
            int   numFramesPresent = 0;

            for (int i = startFrame; i < endFrame; i++)
            {
                IReadOnlyFRVs frv = FrameRecords[i].Values;

                if (frv.ContainsPath(path))
                {
                    avgValue += frv[path];
                    numFramesPresent++;
                }
            }

            return(avgValue / numFramesPresent);
        }
Example #6
0
        public FrameRecord(int index, float frameTimeInS, MemoryStream screenshotImage, IReadOnlyFRVs values, IEnumerable <UserMarker> userMarkers, IEnumerable <Callstack> callstacks)
        {
            Index           = index;
            FrameTimeInS    = frameTimeInS;
            FrameMidTimeInS = frameTimeInS;
            ScreenshotImage = screenshotImage;
            Values          = values;

            List <UserMarkerLocation> userMarkerLocs = new List <UserMarkerLocation>();

            foreach (UserMarker userMarker in userMarkers)
            {
                UserMarkerLocation userMarkerLocation = new UserMarkerLocation(userMarker, this, userMarkerLocs.Count);
                userMarkerLocs.Add(userMarkerLocation);
            }

            UserMarkers = userMarkerLocs;

            Callstacks = callstacks;
        }
Example #7
0
        static void CalcViewValues(IReadOnlyFRVs dataValues, FrameRecordValues viewValues, ProfilerRDI.ValueList vl)
        {
            foreach (ProfilerRDI.ValueListCmd cmd in vl.Cmds)
            {
                float value = 0.0f;

                for (int i = 0, c = cmd.Count; i != c; ++i)
                {
                    ProfilerRDI.ListItem di     = vl.Items[cmd.StartIndex + i];
                    IReadOnlyFRVs        values = di.ValueIsPerLogView ? viewValues : dataValues;
                    value += values[di.ValuePathIdx] * di.Scale;
                }

                if (value != 0.0f)
                {
                    viewValues[cmd.ViewPathIdx] = value;
                }
                else
                {
                    viewValues.Remove(cmd.ViewPathIdx);
                }
            }
        }