internal unsafe void __MarshalFrom(ref __Native @ref) { Parameters = new RootParameter[@ref.NumParameters]; if (@ref.NumParameters > 0) { Interop.Read(@ref.PParameters, Parameters); } StaticSamplers = new StaticSamplerDescription[@ref.NumStaticSamplers]; if (@ref.NumStaticSamplers > 0) { Interop.Read(@ref.PStaticSamplers, StaticSamplers); } Flags = @ref.Flags; }
internal void ReloadLocalRootSignature(IReadOnlyList <ResourceAccessType> Descs) { descs = Descs.ToArray(); flags = RootSignatureFlags.LocalRootSignature; }
public void ReloadCompute(IReadOnlyList <ResourceAccessType> Descs) { descs = Descs.ToArray(); flags = RootSignatureFlags.AllowInputAssemblerInputLayout; }
public void Reload(ResourceAccessType[] Descs) { descs = Descs.ToArray(); flags = RootSignatureFlags.AllowInputAssemblerInputLayout; }
/// <summary> /// Initializes a new instance of the <see cref="RootSignatureDescription"/> class. /// </summary> /// <param name="flags">The flags.</param> /// <param name="parameters">The parameters.</param> /// <param name="samplers">The samplers.</param> public RootSignatureDescription(RootSignatureFlags flags, RootParameter[] parameters = null, StaticSamplerDescription[] samplers = null) { Parameters = parameters; StaticSamplers = samplers; Flags = flags; }
private RootSignatureDescription(int parameterCount, IntPtr nativeParameters, int samplerCount, IntPtr nativeSamplers, RootSignatureFlags flags) { Parameters = new RootParameterArray(parameterCount, nativeParameters); StaticSamplers = new StaticSamplerArray(samplerCount, nativeSamplers); Flags = flags; }
public RootSignatureDescription(RootSignatureFlags flags, RootParameter[] parameters = null, StaticSamplerDescription[] samplers = null) { Parameters = new RootParameterArray(parameters); StaticSamplers = new StaticSamplerArray(samplers); Flags = flags; }
/// <summary> /// Initializes a new instance of the <see cref="RootSignatureDescription"/> class. /// </summary> /// <param name="flags">The flags.</param> /// <param name="parameters">The parameters.</param> /// <param name="samplers">The samplers.</param> public RootSignatureDescription(RootSignatureFlags flags, RootParameter[]?parameters = default, StaticSamplerDescription[]?samplers = default) { Parameters = parameters; StaticSamplers = samplers; Flags = flags; }
public RootSignatureDescription(RootSignatureFlags flags, RootParameter[] parameters = null, StaticSampler[] samplers = null) { Parameters = new RootParameterArray(parameters); StaticSamplers = new StaticSamplerArray(samplers); Flags = flags; }
public Boolean Finalize(RootSignatureFlags flags) { if (m_Finalized) { return(false); } if (m_NumInitializedStaticSamplers != m_NumSamplers) { return(false); } // make root parameter array List <RootParameter> rootParams = new List <RootParameter>(); foreach (H1RootParameterDX12 param in m_ParamArray) { rootParams.Add(param.Parameter); } // create root signature description RootSignatureDescription rootSigDesc = new RootSignatureDescription(flags, rootParams.ToArray(), m_SamplerArray.ToArray()); // clear descriptor table bit map for (Int32 i = 0; i < m_DescriptorTableBitMap.Count; ++i) { m_DescriptorTableBitMap[i] = false; } m_MaxDescriptorCacheHandleCount = 0; for (Int32 param = 0; param < m_NumParameters; ++param) { RootParameter rootParam = rootSigDesc.Parameters[param]; m_DescriptorTableSize[param] = 0; if (rootParam.ParameterType == RootParameterType.DescriptorTable) { // if there is no descriptor range for descriptor table if (rootParam.DescriptorTable.Count() == 0) { return(false); } // we don't care about sampler descriptor tables // we don't manage them in descriptor cache if (rootParam.DescriptorTable[0].RangeType == DescriptorRangeType.Sampler) { continue; } // set the descriptor table bit map as true m_DescriptorTableBitMap[param] = true; // looping descriptor table and calculate descriptor table size for current root parameter for (Int32 tableRange = 0; tableRange < rootParam.DescriptorTable.Count(); ++tableRange) { m_DescriptorTableSize[param] += rootParam.DescriptorTable[tableRange].DescriptorCount; } m_MaxDescriptorCacheHandleCount += m_DescriptorTableSize[param]; } } // create root signature instance Device deviceRef = H1Global <H1ManagedRenderer> .Instance.Device; m_RootSignature = deviceRef.CreateRootSignature(rootSigDesc.Serialize()); // mark as finalized m_Finalized = true; return(true); }