# Directx 12 Root signature compatibility with pso

Can you bind a different root signature than the one that pipeline was created with? If so does it have to have exactly the same parameters or could it have like one more but the pipeline will ignore it?

Btw why is there no dx12 tag?

## 1 Answer

If you use a different root signature than the PSO was created with you get (with the Debug device enabled):

D3D12 ERROR: ID3D12CommandList::DrawInstanced: The currently set Root Signature doesn't
match the currently set Pipeline State Object. This is invalid and can
lead to unexpected behavior. [ EXECUTION ERROR #201: COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH]


Root signatures have to strictly match. As such, you typically try to design a few root signatures that you can use across a number of shaders.

Another thing to note is that on some hardware, it's an error to not bind all the slots in a root signature before drawing. For this reason, I create different root signatures for textured vs. non-textured BasicEffect shaders in DirectX Tool Kit for DX 12.