Capabilities.cs
1 using Ryujinx.Graphics.Shader.Translation; 2 3 namespace Ryujinx.Graphics.GAL 4 { 5 public readonly struct Capabilities 6 { 7 public readonly TargetApi Api; 8 public readonly string VendorName; 9 public readonly SystemMemoryType MemoryType; 10 11 public readonly bool HasFrontFacingBug; 12 public readonly bool HasVectorIndexingBug; 13 public readonly bool NeedsFragmentOutputSpecialization; 14 public readonly bool ReduceShaderPrecision; 15 16 public readonly bool SupportsAstcCompression; 17 public readonly bool SupportsBc123Compression; 18 public readonly bool SupportsBc45Compression; 19 public readonly bool SupportsBc67Compression; 20 public readonly bool SupportsEtc2Compression; 21 public readonly bool Supports3DTextureCompression; 22 public readonly bool SupportsBgraFormat; 23 public readonly bool SupportsR4G4Format; 24 public readonly bool SupportsR4G4B4A4Format; 25 public readonly bool SupportsScaledVertexFormats; 26 public readonly bool SupportsSnormBufferTextureFormat; 27 public readonly bool SupportsSparseBuffer; 28 public readonly bool Supports5BitComponentFormat; 29 public readonly bool SupportsBlendEquationAdvanced; 30 public readonly bool SupportsFragmentShaderInterlock; 31 public readonly bool SupportsFragmentShaderOrderingIntel; 32 public readonly bool SupportsGeometryShader; 33 public readonly bool SupportsGeometryShaderPassthrough; 34 public readonly bool SupportsTransformFeedback; 35 public readonly bool SupportsImageLoadFormatted; 36 public readonly bool SupportsLayerVertexTessellation; 37 public readonly bool SupportsMismatchingViewFormat; 38 public readonly bool SupportsCubemapView; 39 public readonly bool SupportsNonConstantTextureOffset; 40 public readonly bool SupportsQuads; 41 public readonly bool SupportsSeparateSampler; 42 public readonly bool SupportsShaderBallot; 43 public readonly bool SupportsShaderBarrierDivergence; 44 public readonly bool SupportsShaderFloat64; 45 public readonly bool SupportsTextureGatherOffsets; 46 public readonly bool SupportsTextureShadowLod; 47 public readonly bool SupportsVertexStoreAndAtomics; 48 public readonly bool SupportsViewportIndexVertexTessellation; 49 public readonly bool SupportsViewportMask; 50 public readonly bool SupportsViewportSwizzle; 51 public readonly bool SupportsIndirectParameters; 52 public readonly bool SupportsDepthClipControl; 53 54 public readonly int UniformBufferSetIndex; 55 public readonly int StorageBufferSetIndex; 56 public readonly int TextureSetIndex; 57 public readonly int ImageSetIndex; 58 public readonly int ExtraSetBaseIndex; 59 public readonly int MaximumExtraSets; 60 61 public readonly uint MaximumUniformBuffersPerStage; 62 public readonly uint MaximumStorageBuffersPerStage; 63 public readonly uint MaximumTexturesPerStage; 64 public readonly uint MaximumImagesPerStage; 65 66 public readonly int MaximumComputeSharedMemorySize; 67 public readonly float MaximumSupportedAnisotropy; 68 public readonly int ShaderSubgroupSize; 69 public readonly int StorageBufferOffsetAlignment; 70 public readonly int TextureBufferOffsetAlignment; 71 72 public readonly int GatherBiasPrecision; 73 74 public readonly ulong MaximumGpuMemory; 75 76 public Capabilities( 77 TargetApi api, 78 string vendorName, 79 SystemMemoryType memoryType, 80 bool hasFrontFacingBug, 81 bool hasVectorIndexingBug, 82 bool needsFragmentOutputSpecialization, 83 bool reduceShaderPrecision, 84 bool supportsAstcCompression, 85 bool supportsBc123Compression, 86 bool supportsBc45Compression, 87 bool supportsBc67Compression, 88 bool supportsEtc2Compression, 89 bool supports3DTextureCompression, 90 bool supportsBgraFormat, 91 bool supportsR4G4Format, 92 bool supportsR4G4B4A4Format, 93 bool supportsScaledVertexFormats, 94 bool supportsSnormBufferTextureFormat, 95 bool supports5BitComponentFormat, 96 bool supportsSparseBuffer, 97 bool supportsBlendEquationAdvanced, 98 bool supportsFragmentShaderInterlock, 99 bool supportsFragmentShaderOrderingIntel, 100 bool supportsGeometryShader, 101 bool supportsGeometryShaderPassthrough, 102 bool supportsTransformFeedback, 103 bool supportsImageLoadFormatted, 104 bool supportsLayerVertexTessellation, 105 bool supportsMismatchingViewFormat, 106 bool supportsCubemapView, 107 bool supportsNonConstantTextureOffset, 108 bool supportsQuads, 109 bool supportsSeparateSampler, 110 bool supportsShaderBallot, 111 bool supportsShaderBarrierDivergence, 112 bool supportsShaderFloat64, 113 bool supportsTextureGatherOffsets, 114 bool supportsTextureShadowLod, 115 bool supportsVertexStoreAndAtomics, 116 bool supportsViewportIndexVertexTessellation, 117 bool supportsViewportMask, 118 bool supportsViewportSwizzle, 119 bool supportsIndirectParameters, 120 bool supportsDepthClipControl, 121 int uniformBufferSetIndex, 122 int storageBufferSetIndex, 123 int textureSetIndex, 124 int imageSetIndex, 125 int extraSetBaseIndex, 126 int maximumExtraSets, 127 uint maximumUniformBuffersPerStage, 128 uint maximumStorageBuffersPerStage, 129 uint maximumTexturesPerStage, 130 uint maximumImagesPerStage, 131 int maximumComputeSharedMemorySize, 132 float maximumSupportedAnisotropy, 133 int shaderSubgroupSize, 134 int storageBufferOffsetAlignment, 135 int textureBufferOffsetAlignment, 136 int gatherBiasPrecision, 137 ulong maximumGpuMemory) 138 { 139 Api = api; 140 VendorName = vendorName; 141 MemoryType = memoryType; 142 HasFrontFacingBug = hasFrontFacingBug; 143 HasVectorIndexingBug = hasVectorIndexingBug; 144 NeedsFragmentOutputSpecialization = needsFragmentOutputSpecialization; 145 ReduceShaderPrecision = reduceShaderPrecision; 146 SupportsAstcCompression = supportsAstcCompression; 147 SupportsBc123Compression = supportsBc123Compression; 148 SupportsBc45Compression = supportsBc45Compression; 149 SupportsBc67Compression = supportsBc67Compression; 150 SupportsEtc2Compression = supportsEtc2Compression; 151 Supports3DTextureCompression = supports3DTextureCompression; 152 SupportsBgraFormat = supportsBgraFormat; 153 SupportsR4G4Format = supportsR4G4Format; 154 SupportsR4G4B4A4Format = supportsR4G4B4A4Format; 155 SupportsScaledVertexFormats = supportsScaledVertexFormats; 156 SupportsSnormBufferTextureFormat = supportsSnormBufferTextureFormat; 157 Supports5BitComponentFormat = supports5BitComponentFormat; 158 SupportsSparseBuffer = supportsSparseBuffer; 159 SupportsBlendEquationAdvanced = supportsBlendEquationAdvanced; 160 SupportsFragmentShaderInterlock = supportsFragmentShaderInterlock; 161 SupportsFragmentShaderOrderingIntel = supportsFragmentShaderOrderingIntel; 162 SupportsGeometryShader = supportsGeometryShader; 163 SupportsGeometryShaderPassthrough = supportsGeometryShaderPassthrough; 164 SupportsTransformFeedback = supportsTransformFeedback; 165 SupportsImageLoadFormatted = supportsImageLoadFormatted; 166 SupportsLayerVertexTessellation = supportsLayerVertexTessellation; 167 SupportsMismatchingViewFormat = supportsMismatchingViewFormat; 168 SupportsCubemapView = supportsCubemapView; 169 SupportsNonConstantTextureOffset = supportsNonConstantTextureOffset; 170 SupportsQuads = supportsQuads; 171 SupportsSeparateSampler = supportsSeparateSampler; 172 SupportsShaderBallot = supportsShaderBallot; 173 SupportsShaderBarrierDivergence = supportsShaderBarrierDivergence; 174 SupportsShaderFloat64 = supportsShaderFloat64; 175 SupportsTextureGatherOffsets = supportsTextureGatherOffsets; 176 SupportsTextureShadowLod = supportsTextureShadowLod; 177 SupportsVertexStoreAndAtomics = supportsVertexStoreAndAtomics; 178 SupportsViewportIndexVertexTessellation = supportsViewportIndexVertexTessellation; 179 SupportsViewportMask = supportsViewportMask; 180 SupportsViewportSwizzle = supportsViewportSwizzle; 181 SupportsIndirectParameters = supportsIndirectParameters; 182 SupportsDepthClipControl = supportsDepthClipControl; 183 UniformBufferSetIndex = uniformBufferSetIndex; 184 StorageBufferSetIndex = storageBufferSetIndex; 185 TextureSetIndex = textureSetIndex; 186 ImageSetIndex = imageSetIndex; 187 ExtraSetBaseIndex = extraSetBaseIndex; 188 MaximumExtraSets = maximumExtraSets; 189 MaximumUniformBuffersPerStage = maximumUniformBuffersPerStage; 190 MaximumStorageBuffersPerStage = maximumStorageBuffersPerStage; 191 MaximumTexturesPerStage = maximumTexturesPerStage; 192 MaximumImagesPerStage = maximumImagesPerStage; 193 MaximumComputeSharedMemorySize = maximumComputeSharedMemorySize; 194 MaximumSupportedAnisotropy = maximumSupportedAnisotropy; 195 ShaderSubgroupSize = shaderSubgroupSize; 196 StorageBufferOffsetAlignment = storageBufferOffsetAlignment; 197 TextureBufferOffsetAlignment = textureBufferOffsetAlignment; 198 GatherBiasPrecision = gatherBiasPrecision; 199 MaximumGpuMemory = maximumGpuMemory; 200 } 201 } 202 }