iOS Hard Crash with Draw.Polyline in Immediate draw mode

Avatar
  • updated
  • Under Review

I am currently building for iOS using Shape immediate draw mode function. 

using(var p = new PolylinePath())
{
p.AddPoints(drawCallback.verts);
SetDrawMatrix();
SetDrawZTest(drawCallback.zTest);
Draw.ThicknessSpace = drawCallback.thicknessSpace;
Draw.Polyline(p, drawCallback.thickness, drawCallback.color);
}

This would hard crash the app in iOS14.6. I am currently using IPAD pro 2021 for testing. The error message is:

_MTLDebugValidateIndexBuffer:267: failed assertion 'indexCount(0) must be non-zero.

Reporting a bug? please specify Unity version:
Unity 2020.3.3f1c1
Reporting a bug? please specify Shapes version:
4.0.2
Reporting a bug? please specify Render Pipeline:
URP
Avatar
yoonack

I found that if I use using statement, the app crash. Instead I used private variable which works ok. Looks like the p is getting disposed before draw command trying to use it.

Avatar
Freya Holmér

it sounds like the drawCallback.verts might've been empty at the time of draw. Mind that if you use the Draw.Command, drawing happens slightly later in the pipeline, so timing of drawing will be slightly different

I've also very recently fixed other issues with polylines, it's possible something went wrong related to that issue, which is coming out soon in the next update!

Avatar
yoonack

I have no idea how that timing would affect the draw. It only happens in IPAD, but not in editor. 

public override void DrawShapes(Camera cam)
{
if (m_filterTag != null && m_filterTag.Contains(cam.tag))
{
using (Draw.Command(cam))
{
if (drawList.ContainsKey(cam.tag))
{
foreach (var draw in drawList[cam.tag])
{
//Debug.Log("Drawing " + Time.time);
draw.Draw();
}

drawList[cam.tag].Clear();
}
}
}
}

this is my drawing code. I store all draw into list and iterates it in draw command.

Avatar
Freya Holmér
  • Under Review

4.1.0 has been submitted to the asset store now, be sure to try it out again once you've updated!

Avatar
yoonack

The problem is fixed so far. Thanks a lot for the update!!