/// <summary>
        ///
        /// </summary>
        /// <param name="pointer">
        /// </param>
        internal static unsafe PhysicalDeviceVulkan12Properties MarshalFrom(SharpVk.Interop.PhysicalDeviceVulkan12Properties *pointer)
        {
            PhysicalDeviceVulkan12Properties result = default(PhysicalDeviceVulkan12Properties);

            result.DriverID                                             = pointer->DriverID;
            result.DriverName                                           = Interop.HeapUtil.MarshalStringFrom(pointer->DriverName, Constants.MaxDriverNameSize, true);
            result.DriverInfo                                           = Interop.HeapUtil.MarshalStringFrom(pointer->DriverInfo, Constants.MaxDriverInfoSize, true);
            result.ConformanceVersion                                   = pointer->ConformanceVersion;
            result.DenormBehaviorIndependence                           = pointer->DenormBehaviorIndependence;
            result.RoundingModeIndependence                             = pointer->RoundingModeIndependence;
            result.ShaderSignedZeroInfNanPreserveFloat16                = pointer->ShaderSignedZeroInfNanPreserveFloat16;
            result.ShaderSignedZeroInfNanPreserveFloat32                = pointer->ShaderSignedZeroInfNanPreserveFloat32;
            result.ShaderSignedZeroInfNanPreserveFloat64                = pointer->ShaderSignedZeroInfNanPreserveFloat64;
            result.ShaderDenormPreserveFloat16                          = pointer->ShaderDenormPreserveFloat16;
            result.ShaderDenormPreserveFloat32                          = pointer->ShaderDenormPreserveFloat32;
            result.ShaderDenormPreserveFloat64                          = pointer->ShaderDenormPreserveFloat64;
            result.ShaderDenormFlushToZeroFloat16                       = pointer->ShaderDenormFlushToZeroFloat16;
            result.ShaderDenormFlushToZeroFloat32                       = pointer->ShaderDenormFlushToZeroFloat32;
            result.ShaderDenormFlushToZeroFloat64                       = pointer->ShaderDenormFlushToZeroFloat64;
            result.ShaderRoundingModeRTEFloat16                         = pointer->ShaderRoundingModeRTEFloat16;
            result.ShaderRoundingModeRTEFloat32                         = pointer->ShaderRoundingModeRTEFloat32;
            result.ShaderRoundingModeRTEFloat64                         = pointer->ShaderRoundingModeRTEFloat64;
            result.ShaderRoundingModeRTZFloat16                         = pointer->ShaderRoundingModeRTZFloat16;
            result.ShaderRoundingModeRTZFloat32                         = pointer->ShaderRoundingModeRTZFloat32;
            result.ShaderRoundingModeRTZFloat64                         = pointer->ShaderRoundingModeRTZFloat64;
            result.MaxUpdateAfterBindDescriptorsInAllPools              = pointer->MaxUpdateAfterBindDescriptorsInAllPools;
            result.ShaderUniformBufferArrayNonUniformIndexingNative     = pointer->ShaderUniformBufferArrayNonUniformIndexingNative;
            result.ShaderSampledImageArrayNonUniformIndexingNative      = pointer->ShaderSampledImageArrayNonUniformIndexingNative;
            result.ShaderStorageBufferArrayNonUniformIndexingNative     = pointer->ShaderStorageBufferArrayNonUniformIndexingNative;
            result.ShaderStorageImageArrayNonUniformIndexingNative      = pointer->ShaderStorageImageArrayNonUniformIndexingNative;
            result.ShaderInputAttachmentArrayNonUniformIndexingNative   = pointer->ShaderInputAttachmentArrayNonUniformIndexingNative;
            result.RobustBufferAccessUpdateAfterBind                    = pointer->RobustBufferAccessUpdateAfterBind;
            result.QuadDivergentImplicitLod                             = pointer->QuadDivergentImplicitLod;
            result.MaxPerStageDescriptorUpdateAfterBindSamplers         = pointer->MaxPerStageDescriptorUpdateAfterBindSamplers;
            result.MaxPerStageDescriptorUpdateAfterBindUniformBuffers   = pointer->MaxPerStageDescriptorUpdateAfterBindUniformBuffers;
            result.MaxPerStageDescriptorUpdateAfterBindStorageBuffers   = pointer->MaxPerStageDescriptorUpdateAfterBindStorageBuffers;
            result.MaxPerStageDescriptorUpdateAfterBindSampledImages    = pointer->MaxPerStageDescriptorUpdateAfterBindSampledImages;
            result.MaxPerStageDescriptorUpdateAfterBindStorageImages    = pointer->MaxPerStageDescriptorUpdateAfterBindStorageImages;
            result.MaxPerStageDescriptorUpdateAfterBindInputAttachments = pointer->MaxPerStageDescriptorUpdateAfterBindInputAttachments;
            result.MaxPerStageUpdateAfterBindResources                  = pointer->MaxPerStageUpdateAfterBindResources;
            result.MaxDescriptorSetUpdateAfterBindSamplers              = pointer->MaxDescriptorSetUpdateAfterBindSamplers;
            result.MaxDescriptorSetUpdateAfterBindUniformBuffers        = pointer->MaxDescriptorSetUpdateAfterBindUniformBuffers;
            result.MaxDescriptorSetUpdateAfterBindUniformBuffersDynamic = pointer->MaxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
            result.MaxDescriptorSetUpdateAfterBindStorageBuffers        = pointer->MaxDescriptorSetUpdateAfterBindStorageBuffers;
            result.MaxDescriptorSetUpdateAfterBindStorageBuffersDynamic = pointer->MaxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
            result.MaxDescriptorSetUpdateAfterBindSampledImages         = pointer->MaxDescriptorSetUpdateAfterBindSampledImages;
            result.MaxDescriptorSetUpdateAfterBindStorageImages         = pointer->MaxDescriptorSetUpdateAfterBindStorageImages;
            result.MaxDescriptorSetUpdateAfterBindInputAttachments      = pointer->MaxDescriptorSetUpdateAfterBindInputAttachments;
            result.SupportedDepthResolveModes                           = pointer->SupportedDepthResolveModes;
            result.SupportedStencilResolveModes                         = pointer->SupportedStencilResolveModes;
            result.IndependentResolveNone                               = pointer->IndependentResolveNone;
            result.IndependentResolve                                   = pointer->IndependentResolve;
            result.FilterMinmaxSingleComponentFormats                   = pointer->FilterMinmaxSingleComponentFormats;
            result.FilterMinmaxImageComponentMapping                    = pointer->FilterMinmaxImageComponentMapping;
            result.MaxTimelineSemaphoreValueDifference                  = pointer->MaxTimelineSemaphoreValueDifference;
            result.FramebufferIntegerColorSampleCounts                  = pointer->FramebufferIntegerColorSampleCounts;
            return(result);
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="pointer">
 /// </param>
 internal unsafe void MarshalTo(SharpVk.Interop.PhysicalDeviceVulkan12Properties *pointer)
 {
     pointer->SType                                                = StructureType.PhysicalDeviceVulkan12Properties;
     pointer->Next                                                 = null;
     pointer->DriverID                                             = this.DriverID;
     pointer->ConformanceVersion                                   = this.ConformanceVersion;
     pointer->DenormBehaviorIndependence                           = this.DenormBehaviorIndependence;
     pointer->RoundingModeIndependence                             = this.RoundingModeIndependence;
     pointer->ShaderSignedZeroInfNanPreserveFloat16                = this.ShaderSignedZeroInfNanPreserveFloat16;
     pointer->ShaderSignedZeroInfNanPreserveFloat32                = this.ShaderSignedZeroInfNanPreserveFloat32;
     pointer->ShaderSignedZeroInfNanPreserveFloat64                = this.ShaderSignedZeroInfNanPreserveFloat64;
     pointer->ShaderDenormPreserveFloat16                          = this.ShaderDenormPreserveFloat16;
     pointer->ShaderDenormPreserveFloat32                          = this.ShaderDenormPreserveFloat32;
     pointer->ShaderDenormPreserveFloat64                          = this.ShaderDenormPreserveFloat64;
     pointer->ShaderDenormFlushToZeroFloat16                       = this.ShaderDenormFlushToZeroFloat16;
     pointer->ShaderDenormFlushToZeroFloat32                       = this.ShaderDenormFlushToZeroFloat32;
     pointer->ShaderDenormFlushToZeroFloat64                       = this.ShaderDenormFlushToZeroFloat64;
     pointer->ShaderRoundingModeRTEFloat16                         = this.ShaderRoundingModeRTEFloat16;
     pointer->ShaderRoundingModeRTEFloat32                         = this.ShaderRoundingModeRTEFloat32;
     pointer->ShaderRoundingModeRTEFloat64                         = this.ShaderRoundingModeRTEFloat64;
     pointer->ShaderRoundingModeRTZFloat16                         = this.ShaderRoundingModeRTZFloat16;
     pointer->ShaderRoundingModeRTZFloat32                         = this.ShaderRoundingModeRTZFloat32;
     pointer->ShaderRoundingModeRTZFloat64                         = this.ShaderRoundingModeRTZFloat64;
     pointer->MaxUpdateAfterBindDescriptorsInAllPools              = this.MaxUpdateAfterBindDescriptorsInAllPools;
     pointer->ShaderUniformBufferArrayNonUniformIndexingNative     = this.ShaderUniformBufferArrayNonUniformIndexingNative;
     pointer->ShaderSampledImageArrayNonUniformIndexingNative      = this.ShaderSampledImageArrayNonUniformIndexingNative;
     pointer->ShaderStorageBufferArrayNonUniformIndexingNative     = this.ShaderStorageBufferArrayNonUniformIndexingNative;
     pointer->ShaderStorageImageArrayNonUniformIndexingNative      = this.ShaderStorageImageArrayNonUniformIndexingNative;
     pointer->ShaderInputAttachmentArrayNonUniformIndexingNative   = this.ShaderInputAttachmentArrayNonUniformIndexingNative;
     pointer->RobustBufferAccessUpdateAfterBind                    = this.RobustBufferAccessUpdateAfterBind;
     pointer->QuadDivergentImplicitLod                             = this.QuadDivergentImplicitLod;
     pointer->MaxPerStageDescriptorUpdateAfterBindSamplers         = this.MaxPerStageDescriptorUpdateAfterBindSamplers;
     pointer->MaxPerStageDescriptorUpdateAfterBindUniformBuffers   = this.MaxPerStageDescriptorUpdateAfterBindUniformBuffers;
     pointer->MaxPerStageDescriptorUpdateAfterBindStorageBuffers   = this.MaxPerStageDescriptorUpdateAfterBindStorageBuffers;
     pointer->MaxPerStageDescriptorUpdateAfterBindSampledImages    = this.MaxPerStageDescriptorUpdateAfterBindSampledImages;
     pointer->MaxPerStageDescriptorUpdateAfterBindStorageImages    = this.MaxPerStageDescriptorUpdateAfterBindStorageImages;
     pointer->MaxPerStageDescriptorUpdateAfterBindInputAttachments = this.MaxPerStageDescriptorUpdateAfterBindInputAttachments;
     pointer->MaxPerStageUpdateAfterBindResources                  = this.MaxPerStageUpdateAfterBindResources;
     pointer->MaxDescriptorSetUpdateAfterBindSamplers              = this.MaxDescriptorSetUpdateAfterBindSamplers;
     pointer->MaxDescriptorSetUpdateAfterBindUniformBuffers        = this.MaxDescriptorSetUpdateAfterBindUniformBuffers;
     pointer->MaxDescriptorSetUpdateAfterBindUniformBuffersDynamic = this.MaxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
     pointer->MaxDescriptorSetUpdateAfterBindStorageBuffers        = this.MaxDescriptorSetUpdateAfterBindStorageBuffers;
     pointer->MaxDescriptorSetUpdateAfterBindStorageBuffersDynamic = this.MaxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
     pointer->MaxDescriptorSetUpdateAfterBindSampledImages         = this.MaxDescriptorSetUpdateAfterBindSampledImages;
     pointer->MaxDescriptorSetUpdateAfterBindStorageImages         = this.MaxDescriptorSetUpdateAfterBindStorageImages;
     pointer->MaxDescriptorSetUpdateAfterBindInputAttachments      = this.MaxDescriptorSetUpdateAfterBindInputAttachments;
     pointer->SupportedDepthResolveModes                           = this.SupportedDepthResolveModes;
     pointer->SupportedStencilResolveModes                         = this.SupportedStencilResolveModes;
     pointer->IndependentResolveNone                               = this.IndependentResolveNone;
     pointer->IndependentResolve                                   = this.IndependentResolve;
     pointer->FilterMinmaxSingleComponentFormats                   = this.FilterMinmaxSingleComponentFormats;
     pointer->FilterMinmaxImageComponentMapping                    = this.FilterMinmaxImageComponentMapping;
     pointer->MaxTimelineSemaphoreValueDifference                  = this.MaxTimelineSemaphoreValueDifference;
     if (this.FramebufferIntegerColorSampleCounts != null)
     {
         pointer->FramebufferIntegerColorSampleCounts = this.FramebufferIntegerColorSampleCounts.Value;
     }
     else
     {
         pointer->FramebufferIntegerColorSampleCounts = default(SharpVk.SampleCountFlags);
     }
 }