Skip to content
This repository was archived by the owner on Apr 29, 2021. It is now read-only.

Commit 4af204a

Browse files
committed
fix computebuffer potential problem + add some debug logs
1 parent 7f0cd4a commit 4af204a

File tree

1 file changed

+27
-18
lines changed

1 file changed

+27
-18
lines changed

Runtime/ui/renderer/cmdbufferCanvas/rendering/canvas_shader_initializer.cs

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ static partial class CanvasShader {
2222
public static bool supportComputeBuffer;
2323

2424
static void DoPrepareDefaultShader() {
25+
Debug.Log($"do prepare default shader @frame = {Time.frameCount}");
2526
supportComputeBuffer = false;
2627

2728
var convexFillShader = GetShader("UIWidgets/canvas_convexFill");
@@ -50,6 +51,8 @@ static void DoPrepareDefaultShader() {
5051
}
5152

5253
static bool OnNotPrepared() {
54+
DoPrepareDefaultShader();
55+
5356
initStage = InitStage.Prepared;
5457

5558
initialFrameCount = Time.frameCount;
@@ -62,26 +65,30 @@ static bool OnNotPrepared() {
6265
return OnPrepared(true);
6366
}
6467

65-
using (var cmdBuf = new CommandBuffer()) {
66-
var renderTarget = new RenderTexture(1, 1, 1);
67-
cmdBuf.SetRenderTarget(renderTarget);
68-
69-
var mesh = new Mesh {
70-
vertices = new[] {new Vector3(0, 0, 0), new Vector3(0, 1, 0), new Vector3(1, 1, 0)},
71-
uv = new[] {new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1)},
72-
triangles = new[] {0, 1, 2}
73-
};
74-
cmdBuf.DrawMesh(mesh, Matrix4x4.identity, material);
75-
cmdBuf.DisableScissorRect();
76-
Graphics.ExecuteCommandBuffer(cmdBuf);
77-
78-
ObjectUtils.SafeDestroy(renderTarget);
79-
ObjectUtils.SafeDestroy(mesh);
80-
}
68+
try {
69+
using (var cmdBuf = new CommandBuffer()) {
70+
var renderTarget = new RenderTexture(1, 1, 1);
71+
cmdBuf.SetRenderTarget(renderTarget);
72+
73+
var mesh = new Mesh {
74+
vertices = new[] {new Vector3(0, 0, 0), new Vector3(0, 1, 0), new Vector3(1, 1, 0)},
75+
uv = new[] {new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1)},
76+
triangles = new[] {0, 1, 2}
77+
};
78+
cmdBuf.DrawMesh(mesh, Matrix4x4.identity, material);
79+
cmdBuf.DisableScissorRect();
80+
Graphics.ExecuteCommandBuffer(cmdBuf);
81+
82+
ObjectUtils.SafeDestroy(renderTarget);
83+
ObjectUtils.SafeDestroy(mesh);
84+
}
8185

82-
ObjectUtils.SafeDestroy(material);
86+
ObjectUtils.SafeDestroy(material);
87+
}
88+
catch (Exception e) {
89+
90+
}
8391

84-
DoPrepareDefaultShader();
8592
return true;
8693
}
8794

@@ -102,6 +109,8 @@ static void DoPrepareComputeBufferShader() {
102109
var isShaderSupported = testShader.isSupported;
103110
testShader = null;
104111
supportComputeBuffer = enableComputeBuffer && SystemInfo.supportsComputeShaders && isShaderSupported;
112+
113+
Debug.Log($"do prepare computebuffer shader @frame = {Time.frameCount} with support state = {supportComputeBuffer}");
105114

106115
if (!supportComputeBuffer) {
107116
return;

0 commit comments

Comments
 (0)