コード例 #1
0
        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);
        }
コード例 #2
0
        public new static DebugEffectVariableAssignment Parse(DebugBytecodeReader reader, DebugBytecodeReader assignmentReader)
        {
            var result = new DebugEffectVariableAssignment();

            result.Value = assignmentReader.ReadString("Value");
            return(result);
        }
コード例 #3
0
        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);
        }