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

DirectX12

-

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

  1. 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.

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.