public AndroidHardwareBufferFormatPropertiesANDROID
 (
     StructureType sType  = StructureType.AndroidHardwareBufferFormatPropertiesAndroid,
     void *pNext          = default,
     Format format        = default,
     ulong externalFormat = default,
     FormatFeatureFlags formatFeatures = default,
     ComponentMapping samplerYcbcrConversionComponents = default,
     SamplerYcbcrModelConversion suggestedYcbcrModel   = default,
     SamplerYcbcrRange suggestedYcbcrRange             = default,
     ChromaLocation suggestedXChromaOffset             = default,
     ChromaLocation suggestedYChromaOffset             = default
 )
 {
     SType          = sType;
     PNext          = pNext;
     Format         = format;
     ExternalFormat = externalFormat;
     FormatFeatures = formatFeatures;
     SamplerYcbcrConversionComponents = samplerYcbcrConversionComponents;
     SuggestedYcbcrModel    = suggestedYcbcrModel;
     SuggestedYcbcrRange    = suggestedYcbcrRange;
     SuggestedXChromaOffset = suggestedXChromaOffset;
     SuggestedYChromaOffset = suggestedYChromaOffset;
 }
 public DrmFormatModifierPropertiesEXT
 (
     ulong drmFormatModifier          = default,
     uint drmFormatModifierPlaneCount = default,
     FormatFeatureFlags drmFormatModifierTilingFeatures = default
 )
 {
     DrmFormatModifier               = drmFormatModifier;
     DrmFormatModifierPlaneCount     = drmFormatModifierPlaneCount;
     DrmFormatModifierTilingFeatures = drmFormatModifierTilingFeatures;
 }
예제 #3
0
 public FormatProperties
 (
     FormatFeatureFlags linearTilingFeatures  = default,
     FormatFeatureFlags optimalTilingFeatures = default,
     FormatFeatureFlags bufferFeatures        = default
 )
 {
     LinearTilingFeatures  = linearTilingFeatures;
     OptimalTilingFeatures = optimalTilingFeatures;
     BufferFeatures        = bufferFeatures;
 }
예제 #4
0
        public bool OptimalFormatsSupport(FormatFeatureFlags flags, params GAL.Format[] formats)
        {
            foreach (GAL.Format format in formats)
            {
                if (!OptimalFormatSupports(flags, format))
                {
                    return(false);
                }
            }

            return(true);
        }
예제 #5
0
        private Format FindFormat(FormatFeatureFlags features, params Format[] candidates)
        {
            foreach (Format format in candidates)
            {
                _vk.GetPhysicalDeviceFormatProperties(_physicalDevice, format, out FormatProperties properties);
                if (properties.OptimalTilingFeatures.HasFlag(features))
                {
                    return(format);
                }
            }

            throw new Exception("No suitable format found.");
        }
예제 #6
0
        public bool FormatSupports(GAL.Format format, FormatFeatureFlags flags)
        {
            var formatFeatureFlags = _table[(int)format];

            if (formatFeatureFlags == 0)
            {
                _api.GetPhysicalDeviceFormatProperties(_physicalDevice, FormatTable.GetFormat(format), out var fp);
                formatFeatureFlags  = fp.OptimalTilingFeatures;
                _table[(int)format] = formatFeatureFlags;
            }

            return((formatFeatureFlags & flags) == flags);
        }
예제 #7
0
        public bool BufferFormatSupports(FormatFeatureFlags flags, GAL.Format format)
        {
            var formatFeatureFlags = _bufferTable[(int)format];

            if (formatFeatureFlags == 0)
            {
                _api.GetPhysicalDeviceFormatProperties(_physicalDevice, FormatTable.GetFormat(format), out var fp);
                formatFeatureFlags        = fp.BufferFeatures;
                _bufferTable[(int)format] = formatFeatureFlags;
            }

            return((formatFeatureFlags & flags) == flags);
        }
예제 #8
0
        private Format FindSupportedFormat(IEnumerable <Format> candidates, ImageTiling tiling, FormatFeatureFlags features)
        {
            foreach (var format in candidates)
            {
                var props = this.physicalDevice.GetFormatProperties(format);

                if (tiling == ImageTiling.Linear && props.LinearTilingFeatures.HasFlag(features))
                {
                    return(format);
                }
                else if (tiling == ImageTiling.Optimal && props.OptimalTilingFeatures.HasFlag(features))
                {
                    return(format);
                }
            }

            throw new Exception("failed to find supported format!");
        }
예제 #9
0
 /// <summary>
 ///
 /// </summary>
 public FormatProperties(FormatFeatureFlags linearTilingFeatures, FormatFeatureFlags optimalTilingFeatures, FormatFeatureFlags bufferFeatures)
 {
     this.LinearTilingFeatures  = linearTilingFeatures;
     this.OptimalTilingFeatures = optimalTilingFeatures;
     this.BufferFeatures        = bufferFeatures;
 }