Search Issue Tracker
Fixed in 2021.1.X
Votes
1
Found in
2019.4
2019.4.12f1
2020.1
2020.2
2021.1
Issue ID
1303465
Regression
No
"d3d12: CreateGraphicsPipelineState failed." is thrown when drawing geometry with Graphics.DrawProceduralIndirectNow in Build
How to reproduce:
1. Open the user's attached "New Unity Project.zip" project
2. Go to File -> Build And Run
3. Observe the procedurally drawn geometry
Expected result: Geometry is drawn properly
Actual result: "d3d12: CreateGraphicsPipelineState failed." error message is thrown and no geometry is drawn
Reproducible with: 2019.4.18f1, 2020.1.17f1, 2020.2.2f1, 2021.1.0b1
Could not test with: 2018.4.30f1 ('Graphics' does not contain a definition for 'DrawProceduralIndirectNow')
Notes:
- The issue is not reproducible in the Unity Editor
- The issue is not reproducible with Direct3D11 Graphics API
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Required SpriteMask class (ID 331) is stripped when "Strip Engine Code" is enabled
- “Maximized serialized file backup not found” error is thrown when minimizing a window in a newly opened project
- Build stack trace contains invalid lines when building with IL2CPP using scripts with delegates containing generic types in the signature
- Entities Systems window has a “Show Full Player Loop” dropdown which does nothing when clicked after enabling “Show Full Player Loop”
- Entities Hierarchy Search “Show/Hide” button’s Lens Icon is blurry when the Editor is on an external monitor
Resolution Note (fix version 2021.1):
This is essentially a wontwix. Now the editor will work as the runtime works. As the null geometry with the shader expecting vertices is not meant to actually work. If the user wants vertices they should draw using a mesh. So the shader needs to be changed into out. There was a PR before that disabled the null geometry mesh faking from the editor. Changeset referred to here (landed on 2021.2.a15) made it fail silently just like how Vulkan and other API's do.
DX11 driver handles this for users, so we can't really make it give an equivalent error or silent failure without performing similar expensive reflection step that DX12 used to do.
There is a debug flag for DX12 -debug-d3d12-null-geometry that will work only on the editor that re-enables the expensive reflection step. But it's only for debugging purposes. Cannot be used in standalone player.
So:
Expected result: No geometry is drawn and no error is displayed.