public static DebugShaderMessageDeclarationToken Parse(DebugBytecodeReader reader) { var token0 = reader.ReadUInt32("token0"); DebugOpcodeHeader.AddNotes(reader, token0); var member = reader.LocalMembers.Last(); var length = reader.ReadUInt32("length") - 2; var result = new DebugShaderMessageDeclarationToken { DeclarationLength = length, InfoQueueMessageID = reader.ReadUInt32("InfoQueueMessageID"), MessageFormat = reader.ReadEnum32 <ShaderMessageFormat>("MessageFormat"), NumCharacters = reader.ReadUInt32("NumCharacters"), NumOperands = reader.ReadUInt32("NumOperands"), OperandsLength = reader.ReadUInt32("OperandsLength") }; for (int i = 0; i < result.NumOperands; i++) { result.Operands.Add(DebugOperand.Parse(reader, OpcodeType.CustomData)); } result.Format = reader.ReadString("Format"); // String is padded to a multiple of DWORDs. uint remainingBytes = (4 - ((result.NumCharacters + 1) % 4)) % 4; reader.ReadBytes("StringPadding", (int)remainingBytes); return(result); }
public new static DebugEffectVariableAssignment Parse(DebugBytecodeReader reader, DebugBytecodeReader assignmentReader) { var result = new DebugEffectVariableAssignment(); result.Value = assignmentReader.ReadString("Value"); return(result); }
public static DebugDebugNameChunk Parse(DebugBytecodeReader reader, uint chunkSize) { var result = new DebugDebugNameChunk(); var flags = reader.ReadUInt16("Flags"); //Currently unused var nameLength = reader.ReadUInt16("NameLength"); result.Name = reader.ReadString("Name"); var padding = 4 - (nameLength + 1) % 4; //Aligned to 4 byte boundary if (padding > 0) { reader.ReadBytes("Padding", padding); } return(result); }