Пример #1
0
        public static DebugResourceReturnTypeToken Parse(DebugBytecodeReader reader)
        {
            var token  = reader.ReadUInt32("token");
            var result = new DebugResourceReturnTypeToken
            {
                X = token.DecodeValue <ResourceReturnType>(00, 03),
                Y = token.DecodeValue <ResourceReturnType>(04, 07),
                Z = token.DecodeValue <ResourceReturnType>(08, 11),
                W = token.DecodeValue <ResourceReturnType>(12, 15)
            };

            reader.AddNote("X", result.X);
            reader.AddNote("Y", result.Y);
            reader.AddNote("Z", result.Z);
            reader.AddNote("W", result.W);
            return(result);
        }
Пример #2
0
        public static DebugResourceDeclarationToken Parse(DebugBytecodeReader reader, DebugShaderVersion version)
        {
            var token0 = reader.ReadUInt32("token0");

            DebugOpcodeHeader.AddNotes(reader, token0);
            var resourceDimension = token0.DecodeValue <ResourceDimension>(11, 15);

            reader.AddNote("resourceDimension", resourceDimension);

            byte sampleCount;

            switch (resourceDimension)
            {
            case ResourceDimension.Texture2DMultiSampled:
            case ResourceDimension.Texture2DMultiSampledArray:
                sampleCount = token0.DecodeValue <byte>(16, 22);
                reader.AddNote("SampleCount", sampleCount);
                break;

            default:
                sampleCount = 0;
                break;
            }

            var operand    = DebugOperand.Parse(reader, token0.DecodeValue <OpcodeType>(0, 10));
            var returnType = DebugResourceReturnTypeToken.Parse(reader);
            var result     = new DebugResourceDeclarationToken
            {
                ResourceDimension = resourceDimension,
                SampleCount       = sampleCount,
                Operand           = operand,
                ReturnType        = returnType
            };

            if (version.IsSM51)
            {
                result.SpaceIndex = reader.ReadUInt32("SpaceIndex");
            }
            return(result);
        }
        public static DebugTypedUnorderedAccessViewDeclarationToken Parse(DebugBytecodeReader reader, DebugShaderVersion version)
        {
            var token0 = reader.ReadUInt32("token0");

            DebugOpcodeHeader.AddNotes(reader, token0);
            reader.AddNote("ResourceDimension", token0.DecodeValue <ResourceDimension>(11, 15));
            reader.AddNote("Coherency", token0.DecodeValue <UnorderedAccessViewCoherency>(16, 16));
            reader.AddNote("IsRasterOrderedAccess", token0.DecodeValue <bool>(17, 17));
            var result = new DebugTypedUnorderedAccessViewDeclarationToken
            {
                ResourceDimension     = token0.DecodeValue <ResourceDimension>(11, 15),
                Coherency             = token0.DecodeValue <UnorderedAccessViewCoherency>(16, 16),
                IsRasterOrderedAccess = token0.DecodeValue <bool>(17, 17),
                Operand    = DebugOperand.Parse(reader, token0.DecodeValue <OpcodeType>(0, 10)),
                ReturnType = DebugResourceReturnTypeToken.Parse(reader)
            };

            if (version.IsSM51)
            {
                result.SpaceIndex = reader.ReadUInt32("SpaceIndex");
            }
            return(result);
        }