/ src / Ryujinx.Graphics.Vulkan / HardwareCapabilities.cs
HardwareCapabilities.cs
  1  using Silk.NET.Vulkan;
  2  using System;
  3  
  4  namespace Ryujinx.Graphics.Vulkan
  5  {
  6      [Flags]
  7      enum PortabilitySubsetFlags
  8      {
  9          None = 0,
 10  
 11          NoTriangleFans = 1,
 12          NoPointMode = 1 << 1,
 13          No3DImageView = 1 << 2,
 14          NoLodBias = 1 << 3,
 15      }
 16  
 17      readonly struct HardwareCapabilities
 18      {
 19          public readonly bool SupportsIndexTypeUint8;
 20          public readonly bool SupportsCustomBorderColor;
 21          public readonly bool SupportsBlendEquationAdvanced;
 22          public readonly bool SupportsBlendEquationAdvancedCorrelatedOverlap;
 23          public readonly bool SupportsBlendEquationAdvancedNonPreMultipliedSrcColor;
 24          public readonly bool SupportsBlendEquationAdvancedNonPreMultipliedDstColor;
 25          public readonly bool SupportsIndirectParameters;
 26          public readonly bool SupportsFragmentShaderInterlock;
 27          public readonly bool SupportsGeometryShaderPassthrough;
 28          public readonly bool SupportsShaderFloat64;
 29          public readonly bool SupportsShaderInt8;
 30          public readonly bool SupportsShaderStencilExport;
 31          public readonly bool SupportsShaderStorageImageMultisample;
 32          public readonly bool SupportsConditionalRendering;
 33          public readonly bool SupportsExtendedDynamicState;
 34          public readonly bool SupportsMultiView;
 35          public readonly bool SupportsNullDescriptors;
 36          public readonly bool SupportsPushDescriptors;
 37          public readonly uint MaxPushDescriptors;
 38          public readonly bool SupportsPrimitiveTopologyListRestart;
 39          public readonly bool SupportsPrimitiveTopologyPatchListRestart;
 40          public readonly bool SupportsTransformFeedback;
 41          public readonly bool SupportsTransformFeedbackQueries;
 42          public readonly bool SupportsPreciseOcclusionQueries;
 43          public readonly bool SupportsPipelineStatisticsQuery;
 44          public readonly bool SupportsGeometryShader;
 45          public readonly bool SupportsTessellationShader;
 46          public readonly bool SupportsViewportArray2;
 47          public readonly bool SupportsHostImportedMemory;
 48          public readonly bool SupportsDepthClipControl;
 49          public readonly bool SupportsAttachmentFeedbackLoop;
 50          public readonly bool SupportsDynamicAttachmentFeedbackLoop;
 51          public readonly uint SubgroupSize;
 52          public readonly SampleCountFlags SupportedSampleCounts;
 53          public readonly PortabilitySubsetFlags PortabilitySubset;
 54          public readonly uint VertexBufferAlignment;
 55          public readonly uint SubTexelPrecisionBits;
 56          public readonly ulong MinResourceAlignment;
 57  
 58          public HardwareCapabilities(
 59              bool supportsIndexTypeUint8,
 60              bool supportsCustomBorderColor,
 61              bool supportsBlendEquationAdvanced,
 62              bool supportsBlendEquationAdvancedCorrelatedOverlap,
 63              bool supportsBlendEquationAdvancedNonPreMultipliedSrcColor,
 64              bool supportsBlendEquationAdvancedNonPreMultipliedDstColor,
 65              bool supportsIndirectParameters,
 66              bool supportsFragmentShaderInterlock,
 67              bool supportsGeometryShaderPassthrough,
 68              bool supportsShaderFloat64,
 69              bool supportsShaderInt8,
 70              bool supportsShaderStencilExport,
 71              bool supportsShaderStorageImageMultisample,
 72              bool supportsConditionalRendering,
 73              bool supportsExtendedDynamicState,
 74              bool supportsMultiView,
 75              bool supportsNullDescriptors,
 76              bool supportsPushDescriptors,
 77              uint maxPushDescriptors,
 78              bool supportsPrimitiveTopologyListRestart,
 79              bool supportsPrimitiveTopologyPatchListRestart,
 80              bool supportsTransformFeedback,
 81              bool supportsTransformFeedbackQueries,
 82              bool supportsPreciseOcclusionQueries,
 83              bool supportsPipelineStatisticsQuery,
 84              bool supportsGeometryShader,
 85              bool supportsTessellationShader,
 86              bool supportsViewportArray2,
 87              bool supportsHostImportedMemory,
 88              bool supportsDepthClipControl,
 89              bool supportsAttachmentFeedbackLoop,
 90              bool supportsDynamicAttachmentFeedbackLoop,
 91              uint subgroupSize,
 92              SampleCountFlags supportedSampleCounts,
 93              PortabilitySubsetFlags portabilitySubset,
 94              uint vertexBufferAlignment,
 95              uint subTexelPrecisionBits,
 96              ulong minResourceAlignment)
 97          {
 98              SupportsIndexTypeUint8 = supportsIndexTypeUint8;
 99              SupportsCustomBorderColor = supportsCustomBorderColor;
100              SupportsBlendEquationAdvanced = supportsBlendEquationAdvanced;
101              SupportsBlendEquationAdvancedCorrelatedOverlap = supportsBlendEquationAdvancedCorrelatedOverlap;
102              SupportsBlendEquationAdvancedNonPreMultipliedSrcColor = supportsBlendEquationAdvancedNonPreMultipliedSrcColor;
103              SupportsBlendEquationAdvancedNonPreMultipliedDstColor = supportsBlendEquationAdvancedNonPreMultipliedDstColor;
104              SupportsIndirectParameters = supportsIndirectParameters;
105              SupportsFragmentShaderInterlock = supportsFragmentShaderInterlock;
106              SupportsGeometryShaderPassthrough = supportsGeometryShaderPassthrough;
107              SupportsShaderFloat64 = supportsShaderFloat64;
108              SupportsShaderInt8 = supportsShaderInt8;
109              SupportsShaderStencilExport = supportsShaderStencilExport;
110              SupportsShaderStorageImageMultisample = supportsShaderStorageImageMultisample;
111              SupportsConditionalRendering = supportsConditionalRendering;
112              SupportsExtendedDynamicState = supportsExtendedDynamicState;
113              SupportsMultiView = supportsMultiView;
114              SupportsNullDescriptors = supportsNullDescriptors;
115              SupportsPushDescriptors = supportsPushDescriptors;
116              MaxPushDescriptors = maxPushDescriptors;
117              SupportsPrimitiveTopologyListRestart = supportsPrimitiveTopologyListRestart;
118              SupportsPrimitiveTopologyPatchListRestart = supportsPrimitiveTopologyPatchListRestart;
119              SupportsTransformFeedback = supportsTransformFeedback;
120              SupportsTransformFeedbackQueries = supportsTransformFeedbackQueries;
121              SupportsPreciseOcclusionQueries = supportsPreciseOcclusionQueries;
122              SupportsPipelineStatisticsQuery = supportsPipelineStatisticsQuery;
123              SupportsGeometryShader = supportsGeometryShader;
124              SupportsTessellationShader = supportsTessellationShader;
125              SupportsViewportArray2 = supportsViewportArray2;
126              SupportsHostImportedMemory = supportsHostImportedMemory;
127              SupportsDepthClipControl = supportsDepthClipControl;
128              SupportsAttachmentFeedbackLoop = supportsAttachmentFeedbackLoop;
129              SupportsDynamicAttachmentFeedbackLoop = supportsDynamicAttachmentFeedbackLoop;
130              SubgroupSize = subgroupSize;
131              SupportedSampleCounts = supportedSampleCounts;
132              PortabilitySubset = portabilitySubset;
133              VertexBufferAlignment = vertexBufferAlignment;
134              SubTexelPrecisionBits = subTexelPrecisionBits;
135              MinResourceAlignment = minResourceAlignment;
136          }
137      }
138  }