Beispiel #1
0
 internal static unsafe void PopulateReflectInterfaceVariable(
     ref SpirvReflectNative.SpvReflectInterfaceVariable intf,
     ref ReflectInterfaceVariable variable)
 {
     variable.SpirvId         = intf.spirv_id;
     variable.Name            = new string(intf.name);
     variable.Location        = intf.location;
     variable.StorageClass    = (StorageClass)intf.storage_class;
     variable.Semantic        = new string(intf.semantic);
     variable.DecorationFlags = (ReflectDecoration)intf.decoration_flags.Data;
     variable.BuiltIn         = (BuiltIn)intf.built_in;
     variable.Format          = (ReflectFormat)intf.format;
     variable.TypeDescription = ReflectTypeDescription.GetManaged(ref *intf.type_description);
     variable.Array           = new ReflectArrayTraits(intf.array);
     variable.Numeric         = new ReflectNumericTraits(intf.numeric);
 }
Beispiel #2
0
        internal static unsafe void PopulateReflectBlockVariable(
            ref SpirvReflectNative.SpvReflectBlockVariable block,
            ref ReflectBlockVariable variable)
        {
            variable.SpirvId         = block.spirv_id;
            variable.Name            = new string(block.name);
            variable.Offset          = block.offset;
            variable.AbsoluteOffset  = block.absolute_offset;
            variable.Size            = block.size;
            variable.PaddedSize      = block.padded_size;
            variable.DecorationFlags = (ReflectDecoration)block.decoration_flags.Data;
            variable.Flags           = (ReflectVariable)block.flags.Data;
            if (block.type_description != null)
            {
                variable.TypeDescription = ReflectTypeDescription.GetManaged(ref *block.type_description);
            }

            variable.Array   = new ReflectArrayTraits(block.array);
            variable.Numeric = new ReflectNumericTraits(block.numeric);
        }
        internal unsafe ReflectDescriptorBinding(SpirvReflectNative.SpvReflectDescriptorBinding binding)
        {
            Native = binding;

            Set                  = binding.set;
            Accessed             = binding.accessed;
            Name                 = new string(binding.name);
            Binding              = binding.binding;
            SpirvId              = binding.spirv_id;
            Count                = binding.count;
            ResourceType         = (ReflectResourceType)binding.resource_type;
            UavCounterId         = binding.uav_counter_id;
            InputAttachmentIndex = binding.input_attachment_index;
            Image                = new ReflectImageTraits(binding.image);
            Array                = new ReflectBindingArrayTraits(binding.array);
            DescriptorType       = (ReflectDescriptorType)binding.descriptor_type;
            Block                = new ReflectBlockVariable();
            ReflectBlockVariable.PopulateReflectBlockVariable(ref binding.block, ref Block);
            TypeDescription = ReflectTypeDescription.GetManaged(ref *binding.type_description);

            //UavCounterBinding = new ReflectDescriptorBinding(*binding.uav_counter_binding);
        }