Skip to content

Commit ccd79fd

Browse files
raquelpecesEvergreen
authored andcommitted
Tag RG memoryless resources only when supported in API
1 parent 87e7e13 commit ccd79fd

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/NativePassCompiler.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -901,6 +901,10 @@ void DetectMemoryLessResources()
901901
{
902902
using (new ProfilingScope(ProfilingSampler.Get(NativeCompilerProfileId.NRPRGComp_DetectMemorylessResources)))
903903
{
904+
// No need to go further if we don't support memoryless textures
905+
if (!SystemInfo.supportsMemorylessTextures)
906+
return;
907+
904908
// Native renderpasses and create/destroy lists have now been set-up. Detect memoryless resources, i.e resources that are created/destroyed
905909
// within the scope of an nrp
906910
foreach (ref readonly var nativePass in contextData.NativePasses)

Packages/com.unity.render-pipelines.core/Tests/Editor/NativePassCompilerRenderGraphTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -854,7 +854,7 @@ public void MemorylessWorks()
854854
Assert.AreEqual(2, firstUsed.Count);
855855
Assert.AreEqual(renderTargets.extraTextures[0].handle.index, firstUsed[1].index);
856856
ref var info = ref result.contextData.UnversionedResourceData(firstUsed[1]);
857-
Assert.AreEqual(true, info.memoryLess);
857+
Assert.AreEqual(SystemInfo.supportsMemorylessTextures, info.memoryLess);
858858

859859
// Pass 1 : last used = {depthBuffer, extraTextures[0], backBuffer}
860860
List<ResourceHandle> lastUsed = new List<ResourceHandle>();

Packages/com.unity.render-pipelines.core/Tests/Editor/RenderGraphTests.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using UnityEngine.TestTools;
77
using Unity.Collections;
88
using UnityEngine.Rendering.RendererUtils;
9+
using System.Text.RegularExpressions;
910

1011
#if UNITY_EDITOR
1112
using UnityEditor;
@@ -1079,6 +1080,11 @@ public void RenderGraphMultisampledShaderResolvePassWorks()
10791080
{
10801081
m_RenderGraphTestPipeline.recordRenderGraphBody = (context, camera, cmd) =>
10811082
{
1083+
if (!SystemInfo.supportsMultisampledShaderResolve)
1084+
{
1085+
return; // Skip the test if the platform does not support multisampled shader resolve
1086+
}
1087+
10821088
var colorTexDesc = new TextureDesc(Vector2.one, false, false)
10831089
{
10841090
width = 4,
@@ -2023,8 +2029,14 @@ public void CastToRTHandle_WithMemorylessResource()
20232029
transientColorRTHandle = (RTHandle)data.transientColorOutputHandle;
20242030
});
20252031

2032+
if (!SystemInfo.supportsMemorylessTextures)
2033+
{
2034+
Assert.IsTrue(createdDepthRTHandle.rt.memorylessMode == RenderTextureMemoryless.None);
2035+
Assert.IsTrue(createdColorRTHandle.rt.memorylessMode == RenderTextureMemoryless.None);
2036+
Assert.IsTrue(transientColorRTHandle.rt.memorylessMode == RenderTextureMemoryless.None);
2037+
}
20262038
// And let's make sure that the RTHandles are memoryless, i.e. no memory is allocated in system memory
2027-
if (msaaSamples != MSAASamples.None)
2039+
else if (msaaSamples != MSAASamples.None)
20282040
{
20292041
Assert.IsTrue(createdDepthRTHandle.rt.memorylessMode == (RenderTextureMemoryless.Depth | RenderTextureMemoryless.MSAA));
20302042
Assert.IsTrue(createdColorRTHandle.rt.memorylessMode == (RenderTextureMemoryless.Color | RenderTextureMemoryless.MSAA));

0 commit comments

Comments
 (0)