Skip to main content
Creates a root signature layout.

Syntax

Parameters

nodeMask [in]
Type: UINT
For single GPU operation, set this to zero. If there are multiple GPU nodes, set bits to identify the nodes (the device’s physical adapters) to which the root signature is to apply. Each bit in the mask corresponds to a single node. Refer to Multi-adapter systems. pBlobWithRootSignature [in]
Type: const void *
A pointer to the source data for the serialized signature. blobLengthInBytes [in]
Type: SIZE_T
The size, in bytes, of the block of memory that pBlobWithRootSignature points to. riid
Type: const IID &
The globally unique identifier (GUID) for the root signature interface. See Remarks. An input parameter. ppvRootSignature [out]
Type: void **
A pointer to a memory block that receives a pointer to the root signature.

Return value

Type: HRESULT Returns S_OK if successful; otherwise, returns one of the Direct3D 12 Return Codes. This method returns E_INVALIDARG if the blob that pBlobWithRootSignature points to is invalid.

Remarks

If an application procedurally generates a D3D12_ROOT_SIGNATURE_DESC data structure, it must pass a pointer to this D3D12_ROOT_SIGNATURE_DESC in a call to D3D12SerializeRootSignature to make the serialized form. The application then passes the serialized form to pBlobWithRootSignature in a call to ID3D12Device::CreateRootSignature. The REFIID, or GUID, of the interface to the root signature layout can be obtained by using the __uuidof() macro. For example, __uuidof(ID3D12RootSignature) will get the GUID of the interface to a root signature.

Examples

The D3D12HelloTriangle sample uses ID3D12Device::CreateRootSignature as follows: Create an empty root signature.

Requirements

Header: d3d12_xs.h or d3d12_x.h
Library: d3d12_xs.lib or d3d12_x.lib
Supported Platforms: XBOX Series consoles and XBOX One family

See Also

ID3D12Device
Last modified on August 20, 2026