public VersionedRootSignatureDescription GetRootSignatureDescAtVersion(RootSignatureVersion convertToVersion) { IntPtr ptr = GetRootSignatureDescAtVersion_(convertToVersion); // Marshal the result. var result = new VersionedRootSignatureDescription(); result.__MarshalFrom(ref Unsafe.AsRef <VersionedRootSignatureDescription.__Native>(ptr.ToPointer())); return(result); }
public static RootDescriptor Parse(BytecodeReader descReader, RootSignatureVersion version) { var result = new RootDescriptor() { ShaderRegister = descReader.ReadUInt32(), RegisterSpace = descReader.ReadUInt32(), }; if (version == RootSignatureVersion.Version1_1) { result.Flags = (RootDescriptorFlags)descReader.ReadUInt32(); } return(result); }
public static DescriptorRange Parse(BytecodeReader rangeReader, RootSignatureVersion version) { var result = new DescriptorRange() { RangeType = (DescriptorRangeType)rangeReader.ReadUInt32(), NumDescriptors = rangeReader.ReadUInt32(), BaseShaderRegister = rangeReader.ReadUInt32(), RegisterSpace = rangeReader.ReadUInt32(), }; if (version == RootSignatureVersion.Version1_1) { result.Flags = (DescriptorRangeFlags)rangeReader.ReadUInt32(); } result.OffsetInDescriptorsFromTableStart = rangeReader.ReadUInt32(); return(result); }
public static RootParameter Parse(BytecodeReader reader, BytecodeReader paramReader, RootSignatureVersion version) { var type = (RootParameterType)paramReader.ReadUInt32(); var visibility = (ShaderVisibility)paramReader.ReadUInt32(); var bodyOffset = paramReader.ReadUInt32(); var bodyReader = reader.CopyAtOffset((int)bodyOffset); RootParameter result; switch (type) { case RootParameterType.DescriptorTable: result = RootDescriptorTable.Parse(reader, bodyReader, version); break; case RootParameterType._32BitConstants: result = RootConstants.Parse(bodyReader); break; case RootParameterType.Srv: case RootParameterType.Uav: case RootParameterType.Cbv: result = RootDescriptor.Parse(bodyReader, version); break; default: throw new InvalidOperationException($"Can't parse Root Parameter of type {type}"); } result.ParameterType = type; result.ShaderVisibility = visibility; return(result); }
public new static RootDescriptorTable Parse(BytecodeReader reader, BytecodeReader tableReader, RootSignatureVersion version) { var result = new RootDescriptorTable(); var numDescriptorRanges = tableReader.ReadUInt32(); var descriptorRangesOffset = tableReader.ReadUInt32(); var rangeReader = reader.CopyAtOffset((int)descriptorRangesOffset); for (int i = 0; i < numDescriptorRanges; i++) { result.DescriptorRanges.Add(DescriptorRange.Parse(rangeReader, version)); } return(result); }