83 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections;
 | |
| using System.Collections.Generic;
 | |
| using UnityEngine;
 | |
| using UnityEngine.EventSystems;
 | |
| using UnityEngine.TestTools;
 | |
| using UnityEngine.Rendering;
 | |
| using UnityEngine.SceneManagement;
 | |
| using NUnit.Framework;
 | |
| 
 | |
| namespace UnityEngine.Rendering.Tests
 | |
| {
 | |
|     class RuntimeProfilerTestBase
 | |
|     {
 | |
|         protected const int k_NumWarmupFrames = 10;
 | |
|         protected const int k_NumFramesToRender = 30;
 | |
| 
 | |
|         protected DebugFrameTiming m_DebugFrameTiming;
 | |
|         protected GameObject m_ToCleanup;
 | |
| 
 | |
|         [SetUp]
 | |
|         public void Setup()
 | |
|         {
 | |
|             if (!FrameTimingManager.IsFeatureEnabled())
 | |
|                 Assert.Ignore("Frame timing stats are disabled in Player Settings, skipping test.");
 | |
| 
 | |
|             if (Application.isBatchMode)
 | |
|                 Assert.Ignore("Frame timing tests are not supported in batch mode, skipping test.");
 | |
| 
 | |
|             // HACK #1 - really shouldn't have to do this here, but previous tests are leaking gameobjects
 | |
|             var objects = GameObject.FindObjectsOfType<GameObject>();
 | |
|             foreach (var o in objects)
 | |
|             {
 | |
|                 // HACK #2 - must not destroy DebugUpdater, which happens to have an EventSystem.
 | |
|                 if (o.GetComponent<EventSystem>() == null)
 | |
|                     CoreUtils.Destroy(o);
 | |
|             }
 | |
| 
 | |
|             m_DebugFrameTiming = new DebugFrameTiming();
 | |
|         }
 | |
| 
 | |
|         [TearDown]
 | |
|         public void TearDown()
 | |
|         {
 | |
|             if (m_ToCleanup != null)
 | |
|                 CoreUtils.Destroy(m_ToCleanup);
 | |
|         }
 | |
| 
 | |
|         protected IEnumerator Warmup()
 | |
|         {
 | |
|             for (int i = 0; i < k_NumWarmupFrames; i++)
 | |
|                 yield return null;
 | |
| 
 | |
|             m_DebugFrameTiming.Reset();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     // [UnityPlatform(exclude = new RuntimePlatform[] { RuntimePlatform.LinuxPlayer, RuntimePlatform.LinuxEditor })] // Disabled on Linux (case 1370861)
 | |
|     // class RuntimeProfilerTests : RuntimeProfilerTestBase
 | |
|     // {
 | |
|     //     [UnityTest]
 | |
|     //     public IEnumerator RuntimeProfilerGivesNonZeroOutput()
 | |
|     //     {
 | |
|     //         yield return Warmup();
 | |
| 
 | |
|     //         m_ToCleanup = new GameObject();
 | |
|     //         var camera = m_ToCleanup.AddComponent<Camera>();
 | |
|     //         for (int i = 0; i < k_NumFramesToRender; i++)
 | |
|     //         {
 | |
|     //             m_DebugFrameTiming.UpdateFrameTiming();
 | |
|     //             camera.Render();
 | |
|     //             yield return null;
 | |
|     //         }
 | |
| 
 | |
|     //         Assert.True(
 | |
|     //             m_DebugFrameTiming.m_BottleneckHistory.Histogram.Balanced > 0 ||
 | |
|     //             m_DebugFrameTiming.m_BottleneckHistory.Histogram.CPU > 0 ||
 | |
|     //             m_DebugFrameTiming.m_BottleneckHistory.Histogram.GPU > 0 ||
 | |
|     //             m_DebugFrameTiming.m_BottleneckHistory.Histogram.PresentLimited > 0);
 | |
|     //     }
 | |
|     // }
 | |
| }
 |