Search Issue Tracker

Third Party Issue

Votes

0

Found in

2019.4

2020.3

2020.3.19f1

2021.1

2021.2

2022.1

Issue ID

1368661

Regression

No

Compute shader cannot compile when using "for loops" on a 2D static array with 255 or more rows

Shader System

-

Reproduction steps:
1. Open project "ComputeShaderLoop"
2. If you don't immediately see the errors, open Scripts/MeshGenerator and click "Show compiled code" in the Inspector

Expected result: No errors are shown and the script compiles
Actual result: These errors are shown and the script doesn't compile:
"Shader Compiler IPC Exception: Terminating shader compiler process"
"Shader compiler: Compile MeshGenerator.compute - MarchingCubes: Internal error communicating with the shader compiler process. Please report a bug including this shader and the editor log."
"Shader error in 'MeshGenerator': Compiling MarchingCubes: Internal error communicating with the shader compiler process. Please report a bug including this shader and the editor log."

Reproducible with: 2019.4.31f1, 2020.3.20f1, 2021.1.24f1, 2021.2.0b15, 2022.1.0a13

Notes:
- In the "MeshGenerator" script when uncommenting lines 316-328 and commenting out the "for loop", the bug is not reproducible
- If the row length of the "triTable" array is 254 or lower, the bug is not reproducible

  1. Resolution Note:

    This is related to the limit on the size of a constant buffer (65536 bytes). If the sum of sizes of all uniform variables that are declared outside of a constant buffer (and end up in the implicit global constant buffer) exceeds 64KB, the MS D3D11 compiler (FXC) crashes. We haven't found a workaround for this, nor have a reasonable way to detect this before feeding to the compiler.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.