1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by gen_features.py using data from *_features.json.
3 //
4 // Copyright 2022 The ANGLE Project Authors. All rights reserved.
5 // Use of this source code is governed by a BSD-style license that can be
6 // found in the LICENSE file.
7 //
8 // angle_features_autogen.cpp: List of ANGLE features to help enable/disable them in tests.
9
10 #include "angle_features_autogen.h"
11
12 #include "common/PackedEnums.h"
13
14 namespace angle
15 {
16 namespace
17 {
18 constexpr PackedEnumMap<Feature, const char *> kFeatureNames = {{
19 {Feature::AddAndTrueToLoopCondition, "addAndTrueToLoopCondition"},
20 {Feature::AddMockTextureNoRenderTarget, "addMockTextureNoRenderTarget"},
21 {Feature::AdjustClearColorPrecision, "adjustClearColorPrecision"},
22 {Feature::AdjustSrcDstRegionForBlitFramebuffer, "adjustSrcDstRegionForBlitFramebuffer"},
23 {Feature::AllocateNonZeroMemory, "allocateNonZeroMemory"},
24 {Feature::AllowAstcFormats, "allowAstcFormats"},
25 {Feature::AllowBufferReadWrite, "allowBufferReadWrite"},
26 {Feature::AllowClearForRobustResourceInit, "allowClearForRobustResourceInit"},
27 {Feature::AllowCompressedFormats, "allowCompressedFormats"},
28 {Feature::AllowES3OnFL100, "allowES3OnFL100"},
29 {Feature::AllowETCFormats, "allowETCFormats"},
30 {Feature::AllowGenerateMipmapWithCompute, "allowGenerateMipmapWithCompute"},
31 {Feature::AllowGenMultipleMipsPerPass, "allowGenMultipleMipsPerPass"},
32 {Feature::AllowHostImageCopyDespiteNonIdenticalLayout, "allowHostImageCopyDespiteNonIdenticalLayout"},
33 {Feature::AllowInlineConstVertexData, "allowInlineConstVertexData"},
34 {Feature::AllowMultisampledRenderToTextureEmulation, "allowMultisampledRenderToTextureEmulation"},
35 {Feature::AllowMultisampleStoreAndResolve, "allowMultisampleStoreAndResolve"},
36 {Feature::AllowRenderpassWithoutAttachment, "allowRenderpassWithoutAttachment"},
37 {Feature::AllowRuntimeSamplerCompareMode, "allowRuntimeSamplerCompareMode"},
38 {Feature::AllowSamplerCompareGradient, "allowSamplerCompareGradient"},
39 {Feature::AllowSeparateDepthStencilBuffers, "allowSeparateDepthStencilBuffers"},
40 {Feature::AllowTranslateUniformBlockToStructuredBuffer, "allowTranslateUniformBlockToStructuredBuffer"},
41 {Feature::AlwaysCallUseProgramAfterLink, "alwaysCallUseProgramAfterLink"},
42 {Feature::AlwaysEnableEmulatedMultidrawExtensions, "alwaysEnableEmulatedMultidrawExtensions"},
43 {Feature::AlwaysPreferStagedTextureUploads, "alwaysPreferStagedTextureUploads"},
44 {Feature::AlwaysRunLinkSubJobsThreaded, "alwaysRunLinkSubJobsThreaded"},
45 {Feature::AlwaysUnbindFramebufferTexture2D, "alwaysUnbindFramebufferTexture2D"},
46 {Feature::AlwaysUseManagedStorageModeForBuffers, "alwaysUseManagedStorageModeForBuffers"},
47 {Feature::AlwaysUseSharedStorageModeForBuffers, "alwaysUseSharedStorageModeForBuffers"},
48 {Feature::AlwaysUseStagedBufferUpdates, "alwaysUseStagedBufferUpdates"},
49 {Feature::AppendAliasedMemoryDecorations, "appendAliasedMemoryDecorations"},
50 {Feature::AsyncCommandBufferResetAndGarbageCleanup, "asyncCommandBufferResetAndGarbageCleanup"},
51 {Feature::AsyncCommandQueue, "asyncCommandQueue"},
52 {Feature::Avoid1BitAlphaTextureFormats, "avoid1BitAlphaTextureFormats"},
53 {Feature::AvoidBindFragDataLocation, "avoidBindFragDataLocation"},
54 {Feature::AvoidOpSelectWithMismatchingRelaxedPrecision, "avoidOpSelectWithMismatchingRelaxedPrecision"},
55 {Feature::AvoidStencilTextureSwizzle, "avoidStencilTextureSwizzle"},
56 {Feature::BgraTexImageFormatsBroken, "bgraTexImageFormatsBroken"},
57 {Feature::BindCompleteFramebufferForTimerQueries, "bindCompleteFramebufferForTimerQueries"},
58 {Feature::BindTransformFeedbackBufferBeforeBindBufferRange, "bindTransformFeedbackBufferBeforeBindBufferRange"},
59 {Feature::BorderColorSrgb, "borderColorSrgb"},
60 {Feature::BottomLeftOriginPresentRegionRectangles, "bottomLeftOriginPresentRegionRectangles"},
61 {Feature::BresenhamLineRasterization, "bresenhamLineRasterization"},
62 {Feature::CacheCompiledShader, "cacheCompiledShader"},
63 {Feature::CallClearTwice, "callClearTwice"},
64 {Feature::ClampArrayAccess, "clampArrayAccess"},
65 {Feature::ClampFragDepth, "clampFragDepth"},
66 {Feature::ClampMscRate, "clampMscRate"},
67 {Feature::ClampPointSize, "clampPointSize"},
68 {Feature::ClDumpVkSpirv, "clDumpVkSpirv"},
69 {Feature::ClearsWithGapsNeedFlush, "clearsWithGapsNeedFlush"},
70 {Feature::ClearToZeroOrOneBroken, "clearToZeroOrOneBroken"},
71 {Feature::ClipSrcRegionForBlitFramebuffer, "clipSrcRegionForBlitFramebuffer"},
72 {Feature::CompileJobIsThreadSafe, "compileJobIsThreadSafe"},
73 {Feature::CompileMetalShaders, "compileMetalShaders"},
74 {Feature::CompressVertexData, "compressVertexData"},
75 {Feature::CopyIOSurfaceToNonIOSurfaceForReadOptimization, "copyIOSurfaceToNonIOSurfaceForReadOptimization"},
76 {Feature::CopyTextureToBufferForReadOptimization, "copyTextureToBufferForReadOptimization"},
77 {Feature::CorruptProgramBinaryForTesting, "corruptProgramBinaryForTesting"},
78 {Feature::DecodeEncodeSRGBForGenerateMipmap, "decodeEncodeSRGBForGenerateMipmap"},
79 {Feature::DepthStencilBlitExtraCopy, "depthStencilBlitExtraCopy"},
80 {Feature::DescriptorSetCache, "descriptorSetCache"},
81 {Feature::DisableAnisotropicFiltering, "disableAnisotropicFiltering"},
82 {Feature::DisableB5G6R5Support, "disableB5G6R5Support"},
83 {Feature::DisableBaseInstanceVertex, "disableBaseInstanceVertex"},
84 {Feature::DisableBlendEquationAdvanced, "disableBlendEquationAdvanced"},
85 {Feature::DisableBlendFuncExtended, "disableBlendFuncExtended"},
86 {Feature::DisableClipControl, "disableClipControl"},
87 {Feature::DisableDepthStencilResolveThroughAttachment, "disableDepthStencilResolveThroughAttachment"},
88 {Feature::DisableDrawBuffersIndexed, "disableDrawBuffersIndexed"},
89 {Feature::DisableFlippingBlitWithCommand, "disableFlippingBlitWithCommand"},
90 {Feature::DisableGPUSwitchingSupport, "disableGPUSwitchingSupport"},
91 {Feature::DisableMetalOnNvidia, "disableMetalOnNvidia"},
92 {Feature::DisableMultisampledRenderToTexture, "disableMultisampledRenderToTexture"},
93 {Feature::DisableNativeParallelCompile, "disableNativeParallelCompile"},
94 {Feature::DisablePipelineCacheLoadForTesting, "disablePipelineCacheLoadForTesting"},
95 {Feature::DisableProgramBinary, "disableProgramBinary"},
96 {Feature::DisableProgramCaching, "disableProgramCaching"},
97 {Feature::DisableProgramCachingForTransformFeedback, "disableProgramCachingForTransformFeedback"},
98 {Feature::DisableProgrammableBlending, "disableProgrammableBlending"},
99 {Feature::DisableRasterizerOrderViews, "disableRasterizerOrderViews"},
100 {Feature::DisableRasterOrderGroups, "disableRasterOrderGroups"},
101 {Feature::DisableRenderSnorm, "disableRenderSnorm"},
102 {Feature::DisableRWTextureTier2Support, "disableRWTextureTier2Support"},
103 {Feature::DisableSemaphoreFd, "disableSemaphoreFd"},
104 {Feature::DisableSeparateShaderObjects, "disableSeparateShaderObjects"},
105 {Feature::DisableStagedInitializationOfPackedTextureFormats, "disableStagedInitializationOfPackedTextureFormats"},
106 {Feature::DisableSyncControlSupport, "disableSyncControlSupport"},
107 {Feature::DisableTextureClampToBorder, "disableTextureClampToBorder"},
108 {Feature::DisableTextureMirrorClampToEdge, "disableTextureMirrorClampToEdge"},
109 {Feature::DisableTiledRendering, "disableTiledRendering"},
110 {Feature::DisableTimestampQueries, "disableTimestampQueries"},
111 {Feature::DisallowMixedDepthStencilLoadOpNoneAndLoad, "disallowMixedDepthStencilLoadOpNoneAndLoad"},
112 {Feature::DoesSRGBClearsOnLinearFramebufferAttachments, "doesSRGBClearsOnLinearFramebufferAttachments"},
113 {Feature::DontInitializeUninitializedLocals, "dontInitializeUninitializedLocals"},
114 {Feature::DontUseLoopsToInitializeVariables, "dontUseLoopsToInitializeVariables"},
115 {Feature::DoubleDepthBiasConstantFactor, "doubleDepthBiasConstantFactor"},
116 {Feature::DoWhileGLSLCausesGPUHang, "doWhileGLSLCausesGPUHang"},
117 {Feature::DumpShaderSource, "dumpShaderSource"},
118 {Feature::DumpTranslatedShaders, "dumpTranslatedShaders"},
119 {Feature::EglColorspaceAttributePassthrough, "eglColorspaceAttributePassthrough"},
120 {Feature::EmulateAbsIntFunction, "emulateAbsIntFunction"},
121 {Feature::EmulateAdvancedBlendEquations, "emulateAdvancedBlendEquations"},
122 {Feature::EmulateAlphaToCoverage, "emulateAlphaToCoverage"},
123 {Feature::EmulateAtan2Float, "emulateAtan2Float"},
124 {Feature::EmulateClipDistanceState, "emulateClipDistanceState"},
125 {Feature::EmulateClipOrigin, "emulateClipOrigin"},
126 {Feature::EmulateCopyTexImage2D, "emulateCopyTexImage2D"},
127 {Feature::EmulateCopyTexImage2DFromRenderbuffers, "emulateCopyTexImage2DFromRenderbuffers"},
128 {Feature::EmulateDithering, "emulateDithering"},
129 {Feature::EmulateDontCareLoadWithRandomClear, "emulateDontCareLoadWithRandomClear"},
130 {Feature::EmulatedPrerotation180, "emulatedPrerotation180"},
131 {Feature::EmulatedPrerotation270, "emulatedPrerotation270"},
132 {Feature::EmulatedPrerotation90, "emulatedPrerotation90"},
133 {Feature::EmulateImmutableCompressedTexture3D, "emulateImmutableCompressedTexture3D"},
134 {Feature::EmulateIsnanFloat, "emulateIsnanFloat"},
135 {Feature::EmulateMaxVertexAttribStride, "emulateMaxVertexAttribStride"},
136 {Feature::EmulatePackSkipRowsAndPackSkipPixels, "emulatePackSkipRowsAndPackSkipPixels"},
137 {Feature::EmulatePixelLocalStorage, "emulatePixelLocalStorage"},
138 {Feature::EmulatePrimitiveRestartFixedIndex, "emulatePrimitiveRestartFixedIndex"},
139 {Feature::EmulateR32fImageAtomicExchange, "emulateR32fImageAtomicExchange"},
140 {Feature::EmulateRGB10, "emulateRGB10"},
141 {Feature::EmulateTinyStencilTextures, "emulateTinyStencilTextures"},
142 {Feature::EmulateTransformFeedback, "emulateTransformFeedback"},
143 {Feature::EnableAdditionalBlendFactorsForDithering, "enableAdditionalBlendFactorsForDithering"},
144 {Feature::EnableAsyncPipelineCacheCompression, "enableAsyncPipelineCacheCompression"},
145 {Feature::EnableCaptureLimits, "enableCaptureLimits"},
146 {Feature::EnableInMemoryMtlLibraryCache, "enableInMemoryMtlLibraryCache"},
147 {Feature::EnableMergeClientAttribBuffer, "enableMergeClientAttribBuffer"},
148 {Feature::EnableMultisampledRenderToTexture, "enableMultisampledRenderToTexture"},
149 {Feature::EnableMultisampledRenderToTextureOnNonTilers, "enableMultisampledRenderToTextureOnNonTilers"},
150 {Feature::EnableParallelCompileAndLink, "enableParallelCompileAndLink"},
151 {Feature::EnableParallelMtlLibraryCompilation, "enableParallelMtlLibraryCompilation"},
152 {Feature::EnablePipelineCacheDataCompression, "enablePipelineCacheDataCompression"},
153 {Feature::EnablePortabilityEnumeration, "enablePortabilityEnumeration"},
154 {Feature::EnablePrecisionQualifiers, "enablePrecisionQualifiers"},
155 {Feature::EnablePreRotateSurfaces, "enablePreRotateSurfaces"},
156 {Feature::EnableProgramBinaryForCapture, "enableProgramBinaryForCapture"},
157 {Feature::EnableShaderSubstitution, "enableShaderSubstitution"},
158 {Feature::EnableTimestampQueries, "enableTimestampQueries"},
159 {Feature::EnableTranslatedShaderSubstitution, "enableTranslatedShaderSubstitution"},
160 {Feature::EnsureNonEmptyBufferIsBoundForDraw, "ensureNonEmptyBufferIsBoundForDraw"},
161 {Feature::ExpandIntegerPowExpressions, "expandIntegerPowExpressions"},
162 {Feature::ExplicitFragmentLocations, "explicitFragmentLocations"},
163 {Feature::ExplicitlyCastMediumpFloatTo16Bit, "explicitlyCastMediumpFloatTo16Bit"},
164 {Feature::ExplicitlyEnablePerSampleShading, "explicitlyEnablePerSampleShading"},
165 {Feature::ExposeES32ForTesting, "exposeES32ForTesting"},
166 {Feature::ExposeNonConformantExtensionsAndVersions, "exposeNonConformantExtensionsAndVersions"},
167 {Feature::FinishDoesNotCauseQueriesToBeAvailable, "finishDoesNotCauseQueriesToBeAvailable"},
168 {Feature::FlushAfterEndingTransformFeedback, "flushAfterEndingTransformFeedback"},
169 {Feature::FlushAfterStreamVertexData, "flushAfterStreamVertexData"},
170 {Feature::FlushBeforeDeleteTextureIfCopiedTo, "flushBeforeDeleteTextureIfCopiedTo"},
171 {Feature::FlushOnFramebufferChange, "flushOnFramebufferChange"},
172 {Feature::ForceAtomicValueResolution, "forceAtomicValueResolution"},
173 {Feature::ForceBufferGPUStorage, "forceBufferGPUStorage"},
174 {Feature::ForceContinuousRefreshOnSharedPresent, "forceContinuousRefreshOnSharedPresent"},
175 {Feature::ForceD16TexFilter, "forceD16TexFilter"},
176 {Feature::ForceD24S8AsUnsupported, "forceD24S8AsUnsupported"},
177 {Feature::ForceDepthAttachmentInitOnClear, "forceDepthAttachmentInitOnClear"},
178 {Feature::ForceDisableFullScreenExclusive, "forceDisableFullScreenExclusive"},
179 {Feature::ForceFallbackFormat, "forceFallbackFormat"},
180 {Feature::ForceFlushAfterDrawcallUsingShadowmap, "forceFlushAfterDrawcallUsingShadowmap"},
181 {Feature::ForceFragmentShaderPrecisionHighpToMediump, "forceFragmentShaderPrecisionHighpToMediump"},
182 {Feature::ForceGlErrorChecking, "forceGlErrorChecking"},
183 {Feature::ForceInitShaderVariables, "forceInitShaderVariables"},
184 {Feature::ForceMaxUniformBufferSize16KB, "forceMaxUniformBufferSize16KB"},
185 {Feature::ForceMinimumMaxVertexAttributes, "forceMinimumMaxVertexAttributes"},
186 {Feature::ForceNearestFiltering, "forceNearestFiltering"},
187 {Feature::ForceNearestMipFiltering, "forceNearestMipFiltering"},
188 {Feature::ForceNonCSBaseMipmapGeneration, "forceNonCSBaseMipmapGeneration"},
189 {Feature::ForceRobustResourceInit, "forceRobustResourceInit"},
190 {Feature::ForceSampleUsageForAhbBackedImages, "forceSampleUsageForAhbBackedImages"},
191 {Feature::ForceSubmitImmutableTextureUpdates, "forceSubmitImmutableTextureUpdates"},
192 {Feature::ForceTextureLodOffset1, "forceTextureLodOffset1"},
193 {Feature::ForceTextureLodOffset2, "forceTextureLodOffset2"},
194 {Feature::ForceTextureLodOffset3, "forceTextureLodOffset3"},
195 {Feature::ForceTextureLodOffset4, "forceTextureLodOffset4"},
196 {Feature::ForceWaitForSubmissionToCompleteForQueryResult, "forceWaitForSubmissionToCompleteForQueryResult"},
197 {Feature::GenerateFragmentShadingRateAttchementWithCpu, "generateFragmentShadingRateAttchementWithCpu"},
198 {Feature::GenerateShareableShaders, "generateShareableShaders"},
199 {Feature::GetDimensionsIgnoresBaseLevel, "getDimensionsIgnoresBaseLevel"},
200 {Feature::HasBaseVertexInstancedDraw, "hasBaseVertexInstancedDraw"},
201 {Feature::HasBlobCacheThatEvictsOldItemsFirst, "hasBlobCacheThatEvictsOldItemsFirst"},
202 {Feature::HasCheapRenderPass, "hasCheapRenderPass"},
203 {Feature::HasDepthAutoResolve, "hasDepthAutoResolve"},
204 {Feature::HasEffectivePipelineCacheSerialization, "hasEffectivePipelineCacheSerialization"},
205 {Feature::HasEvents, "hasEvents"},
206 {Feature::HasExplicitMemBarrier, "hasExplicitMemBarrier"},
207 {Feature::HasNonUniformDispatch, "hasNonUniformDispatch"},
208 {Feature::HasShaderStencilOutput, "hasShaderStencilOutput"},
209 {Feature::HasStencilAutoResolve, "hasStencilAutoResolve"},
210 {Feature::HasTextureSwizzle, "hasTextureSwizzle"},
211 {Feature::InitFragmentOutputVariables, "initFragmentOutputVariables"},
212 {Feature::InitializeCurrentVertexAttributes, "initializeCurrentVertexAttributes"},
213 {Feature::InjectAsmStatementIntoLoopBodies, "injectAsmStatementIntoLoopBodies"},
214 {Feature::IntelDisableFastMath, "intelDisableFastMath"},
215 {Feature::IntelExplicitBoolCastWorkaround, "intelExplicitBoolCastWorkaround"},
216 {Feature::KeepBufferShadowCopy, "keepBufferShadowCopy"},
217 {Feature::LimitMax3dArrayTextureSizeTo1024, "limitMax3dArrayTextureSizeTo1024"},
218 {Feature::LimitMaxColorTargetBitsForTesting, "limitMaxColorTargetBitsForTesting"},
219 {Feature::LimitMaxDrawBuffersForTesting, "limitMaxDrawBuffersForTesting"},
220 {Feature::LimitMaxMSAASamplesTo4, "limitMaxMSAASamplesTo4"},
221 {Feature::LimitMaxStorageBufferSize, "limitMaxStorageBufferSize"},
222 {Feature::LimitSampleCountTo2, "limitSampleCountTo2"},
223 {Feature::LimitWebglMaxTextureSizeTo4096, "limitWebglMaxTextureSizeTo4096"},
224 {Feature::LimitWebglMaxTextureSizeTo8192, "limitWebglMaxTextureSizeTo8192"},
225 {Feature::LinkJobIsThreadSafe, "linkJobIsThreadSafe"},
226 {Feature::LoadMetalShadersFromBlobCache, "loadMetalShadersFromBlobCache"},
227 {Feature::LogMemoryReportCallbacks, "logMemoryReportCallbacks"},
228 {Feature::LogMemoryReportStats, "logMemoryReportStats"},
229 {Feature::LoseContextOnOutOfMemory, "loseContextOnOutOfMemory"},
230 {Feature::MapUnspecifiedColorSpaceToPassThrough, "mapUnspecifiedColorSpaceToPassThrough"},
231 {Feature::MergeProgramPipelineCachesToGlobalCache, "mergeProgramPipelineCachesToGlobalCache"},
232 {Feature::MrtPerfWorkaround, "mrtPerfWorkaround"},
233 {Feature::MultisampleColorFormatShaderReadWorkaround, "multisampleColorFormatShaderReadWorkaround"},
234 {Feature::MutableMipmapTextureUpload, "mutableMipmapTextureUpload"},
235 {Feature::OverrideSurfaceFormatRGB8ToRGBA8, "overrideSurfaceFormatRGB8ToRGBA8"},
236 {Feature::PackLastRowSeparatelyForPaddingInclusion, "packLastRowSeparatelyForPaddingInclusion"},
237 {Feature::PackOverlappingRowsSeparatelyPackBuffer, "packOverlappingRowsSeparatelyPackBuffer"},
238 {Feature::PadBuffersToMaxVertexAttribStride, "padBuffersToMaxVertexAttribStride"},
239 {Feature::PassHighpToPackUnormSnormBuiltins, "passHighpToPackUnormSnormBuiltins"},
240 {Feature::PerFrameWindowSizeQuery, "perFrameWindowSizeQuery"},
241 {Feature::PermanentlySwitchToFramebufferFetchMode, "permanentlySwitchToFramebufferFetchMode"},
242 {Feature::PersistentlyMappedBuffers, "persistentlyMappedBuffers"},
243 {Feature::PreAddTexelFetchOffsets, "preAddTexelFetchOffsets"},
244 {Feature::PreemptivelyStartProvokingVertexCommandBuffer, "preemptivelyStartProvokingVertexCommandBuffer"},
245 {Feature::PreferAggregateBarrierCalls, "preferAggregateBarrierCalls"},
246 {Feature::PreferCachedNoncoherentForDynamicStreamBufferUsage, "preferCachedNoncoherentForDynamicStreamBufferUsage"},
247 {Feature::PreferCpuForBuffersubdata, "preferCpuForBuffersubdata"},
248 {Feature::PreferCPUForBufferSubData, "preferCPUForBufferSubData"},
249 {Feature::PreferDeviceLocalMemoryHostVisible, "preferDeviceLocalMemoryHostVisible"},
250 {Feature::PreferDoubleBufferSwapchainOnFifoMode, "preferDoubleBufferSwapchainOnFifoMode"},
251 {Feature::PreferDrawClearOverVkCmdClearAttachments, "preferDrawClearOverVkCmdClearAttachments"},
252 {Feature::PreferDriverUniformOverSpecConst, "preferDriverUniformOverSpecConst"},
253 {Feature::PreferDynamicRendering, "preferDynamicRendering"},
254 {Feature::PreferHostCachedForNonStaticBufferUsage, "preferHostCachedForNonStaticBufferUsage"},
255 {Feature::PreferLinearFilterForYUV, "preferLinearFilterForYUV"},
256 {Feature::PreferMonolithicPipelinesOverLibraries, "preferMonolithicPipelinesOverLibraries"},
257 {Feature::PreferMSRTSSFlagByDefault, "preferMSRTSSFlagByDefault"},
258 {Feature::PreferSkippingInvalidateForEmulatedFormats, "preferSkippingInvalidateForEmulatedFormats"},
259 {Feature::PreferSubmitAtFBOBoundary, "preferSubmitAtFBOBoundary"},
260 {Feature::PreferSubmitOnAnySamplesPassedQueryEnd, "preferSubmitOnAnySamplesPassedQueryEnd"},
261 {Feature::PreTransformTextureCubeGradDerivatives, "preTransformTextureCubeGradDerivatives"},
262 {Feature::PrintMetalShaders, "printMetalShaders"},
263 {Feature::PromotePackedFormatsTo8BitPerChannel, "promotePackedFormatsTo8BitPerChannel"},
264 {Feature::ProvokingVertex, "provokingVertex"},
265 {Feature::QueryCounterBitsGeneratesErrors, "queryCounterBitsGeneratesErrors"},
266 {Feature::ReadPixelsUsingImplementationColorReadFormatForNorm16, "readPixelsUsingImplementationColorReadFormatForNorm16"},
267 {Feature::ReapplyUBOBindingsAfterUsingBinaryProgram, "reapplyUBOBindingsAfterUsingBinaryProgram"},
268 {Feature::RegenerateStructNames, "regenerateStructNames"},
269 {Feature::RejectWebglShadersWithUndefinedBehavior, "rejectWebglShadersWithUndefinedBehavior"},
270 {Feature::RemoveDynamicIndexingOfSwizzledVector, "removeDynamicIndexingOfSwizzledVector"},
271 {Feature::RemoveInvariantAndCentroidForESSL3, "removeInvariantAndCentroidForESSL3"},
272 {Feature::RequireGpuFamily2, "requireGpuFamily2"},
273 {Feature::RescopeGlobalVariables, "rescopeGlobalVariables"},
274 {Feature::ResetTexImage2DBaseLevel, "resetTexImage2DBaseLevel"},
275 {Feature::ResyncDepthRangeOnClipControl, "resyncDepthRangeOnClipControl"},
276 {Feature::RetainSPIRVDebugInfo, "retainSPIRVDebugInfo"},
277 {Feature::RewriteFloatUnaryMinusOperator, "rewriteFloatUnaryMinusOperator"},
278 {Feature::RewriteRepeatedAssignToSwizzled, "rewriteRepeatedAssignToSwizzled"},
279 {Feature::RewriteRowMajorMatrices, "rewriteRowMajorMatrices"},
280 {Feature::RewriteUnaryMinusOperator, "rewriteUnaryMinusOperator"},
281 {Feature::RGBA4IsNotSupportedForColorRendering, "RGBA4IsNotSupportedForColorRendering"},
282 {Feature::RGBDXT1TexturesSampleZeroAlpha, "RGBDXT1TexturesSampleZeroAlpha"},
283 {Feature::RoundOutputAfterDithering, "roundOutputAfterDithering"},
284 {Feature::SanitizeAMDGPURendererString, "sanitizeAMDGPURendererString"},
285 {Feature::ScalarizeVecAndMatConstructorArgs, "scalarizeVecAndMatConstructorArgs"},
286 {Feature::SelectViewInGeometryShader, "selectViewInGeometryShader"},
287 {Feature::SetDataFasterThanImageUpload, "setDataFasterThanImageUpload"},
288 {Feature::SetPrimitiveRestartFixedIndexForDrawArrays, "setPrimitiveRestartFixedIndexForDrawArrays"},
289 {Feature::SetZeroLevelBeforeGenerateMipmap, "setZeroLevelBeforeGenerateMipmap"},
290 {Feature::ShiftInstancedArrayDataWithOffset, "shiftInstancedArrayDataWithOffset"},
291 {Feature::SingleThreadedTextureDecompression, "singleThreadedTextureDecompression"},
292 {Feature::SkipVSConstantRegisterZero, "skipVSConstantRegisterZero"},
293 {Feature::SlowAsyncCommandQueueForTesting, "slowAsyncCommandQueueForTesting"},
294 {Feature::SlowDownMonolithicPipelineCreationForTesting, "slowDownMonolithicPipelineCreationForTesting"},
295 {Feature::SrgbBlendingBroken, "srgbBlendingBroken"},
296 {Feature::Supports16BitInputOutput, "supports16BitInputOutput"},
297 {Feature::Supports16BitPushConstant, "supports16BitPushConstant"},
298 {Feature::Supports16BitStorageBuffer, "supports16BitStorageBuffer"},
299 {Feature::Supports16BitUniformAndStorageBuffer, "supports16BitUniformAndStorageBuffer"},
300 {Feature::Supports8BitPushConstant, "supports8BitPushConstant"},
301 {Feature::Supports8BitStorageBuffer, "supports8BitStorageBuffer"},
302 {Feature::Supports8BitUniformAndStorageBuffer, "supports8BitUniformAndStorageBuffer"},
303 {Feature::SupportsAndroidHardwareBuffer, "supportsAndroidHardwareBuffer"},
304 {Feature::SupportsAndroidNativeFenceSync, "supportsAndroidNativeFenceSync"},
305 {Feature::SupportsAstcSliced3d, "supportsAstcSliced3d"},
306 {Feature::SupportsBindMemory2, "supportsBindMemory2"},
307 {Feature::SupportsBlendOperationAdvanced, "supportsBlendOperationAdvanced"},
308 {Feature::SupportsBlendOperationAdvancedCoherent, "supportsBlendOperationAdvancedCoherent"},
309 {Feature::SupportsColorWriteEnable, "supportsColorWriteEnable"},
310 {Feature::SupportsComputeTranscodeEtcToBc, "supportsComputeTranscodeEtcToBc"},
311 {Feature::SupportsCustomBorderColor, "supportsCustomBorderColor"},
312 {Feature::SupportsDenormFtzFp16, "supportsDenormFtzFp16"},
313 {Feature::SupportsDenormFtzFp32, "supportsDenormFtzFp32"},
314 {Feature::SupportsDenormFtzFp64, "supportsDenormFtzFp64"},
315 {Feature::SupportsDenormPreserveFp16, "supportsDenormPreserveFp16"},
316 {Feature::SupportsDenormPreserveFp32, "supportsDenormPreserveFp32"},
317 {Feature::SupportsDenormPreserveFp64, "supportsDenormPreserveFp64"},
318 {Feature::SupportsDepthClampZeroOne, "supportsDepthClampZeroOne"},
319 {Feature::SupportsDepthClipControl, "supportsDepthClipControl"},
320 {Feature::SupportsDepthStencilIndependentResolveNone, "supportsDepthStencilIndependentResolveNone"},
321 {Feature::SupportsDepthStencilResolve, "supportsDepthStencilResolve"},
322 {Feature::SupportsDynamicRendering, "supportsDynamicRendering"},
323 {Feature::SupportsDynamicRenderingLocalRead, "supportsDynamicRenderingLocalRead"},
324 {Feature::SupportsExtendedDynamicState, "supportsExtendedDynamicState"},
325 {Feature::SupportsExtendedDynamicState2, "supportsExtendedDynamicState2"},
326 {Feature::SupportsExternalFenceCapabilities, "supportsExternalFenceCapabilities"},
327 {Feature::SupportsExternalFenceFd, "supportsExternalFenceFd"},
328 {Feature::SupportsExternalFormatResolve, "supportsExternalFormatResolve"},
329 {Feature::SupportsExternalMemoryDmaBufAndModifiers, "supportsExternalMemoryDmaBufAndModifiers"},
330 {Feature::SupportsExternalMemoryFd, "supportsExternalMemoryFd"},
331 {Feature::SupportsExternalMemoryFuchsia, "supportsExternalMemoryFuchsia"},
332 {Feature::SupportsExternalMemoryHost, "supportsExternalMemoryHost"},
333 {Feature::SupportsExternalSemaphoreCapabilities, "supportsExternalSemaphoreCapabilities"},
334 {Feature::SupportsExternalSemaphoreFd, "supportsExternalSemaphoreFd"},
335 {Feature::SupportsExternalSemaphoreFuchsia, "supportsExternalSemaphoreFuchsia"},
336 {Feature::SupportsFormatFeatureFlags2, "supportsFormatFeatureFlags2"},
337 {Feature::SupportsFoveatedRendering, "supportsFoveatedRendering"},
338 {Feature::SupportsFragmentShaderInterlockARB, "supportsFragmentShaderInterlockARB"},
339 {Feature::SupportsFragmentShaderInterlockNV, "supportsFragmentShaderInterlockNV"},
340 {Feature::SupportsFragmentShaderOrderingINTEL, "supportsFragmentShaderOrderingINTEL"},
341 {Feature::SupportsFragmentShaderPixelInterlock, "supportsFragmentShaderPixelInterlock"},
342 {Feature::SupportsFragmentShadingRate, "supportsFragmentShadingRate"},
343 {Feature::SupportsFullScreenExclusive, "supportsFullScreenExclusive"},
344 {Feature::SupportsGeometryStreamsCapability, "supportsGeometryStreamsCapability"},
345 {Feature::SupportsGetMemoryRequirements2, "supportsGetMemoryRequirements2"},
346 {Feature::SupportsGGPFrameToken, "supportsGGPFrameToken"},
347 {Feature::SupportsGraphicsPipelineLibrary, "supportsGraphicsPipelineLibrary"},
348 {Feature::SupportsHostImageCopy, "supportsHostImageCopy"},
349 {Feature::SupportsHostQueryReset, "supportsHostQueryReset"},
350 {Feature::SupportsImage2dViewOf3d, "supportsImage2dViewOf3d"},
351 {Feature::SupportsImageCompressionControl, "supportsImageCompressionControl"},
352 {Feature::SupportsImageCubeArray, "supportsImageCubeArray"},
353 {Feature::SupportsImageFormatList, "supportsImageFormatList"},
354 {Feature::SupportsImagelessFramebuffer, "supportsImagelessFramebuffer"},
355 {Feature::SupportsIncrementalPresent, "supportsIncrementalPresent"},
356 {Feature::SupportsIndexTypeUint8, "supportsIndexTypeUint8"},
357 {Feature::SupportsLegacyDithering, "supportsLegacyDithering"},
358 {Feature::SupportsLockSurfaceExtension, "supportsLockSurfaceExtension"},
359 {Feature::SupportsLogicOpDynamicState, "supportsLogicOpDynamicState"},
360 {Feature::SupportsMaintenance5, "supportsMaintenance5"},
361 {Feature::SupportsMemoryBudget, "supportsMemoryBudget"},
362 {Feature::SupportsMixedReadWriteDepthStencilLayouts, "supportsMixedReadWriteDepthStencilLayouts"},
363 {Feature::SupportsMultiDrawIndirect, "supportsMultiDrawIndirect"},
364 {Feature::SupportsMultisampledRenderToSingleSampled, "supportsMultisampledRenderToSingleSampled"},
365 {Feature::SupportsMultiview, "supportsMultiview"},
366 {Feature::SupportsNonConstantLoopIndexing, "supportsNonConstantLoopIndexing"},
367 {Feature::SupportsPipelineCreationFeedback, "supportsPipelineCreationFeedback"},
368 {Feature::SupportsPipelineProtectedAccess, "supportsPipelineProtectedAccess"},
369 {Feature::SupportsPipelineRobustness, "supportsPipelineRobustness"},
370 {Feature::SupportsPipelineStatisticsQuery, "supportsPipelineStatisticsQuery"},
371 {Feature::SupportsPortabilityEnumeration, "supportsPortabilityEnumeration"},
372 {Feature::SupportsPresentation, "supportsPresentation"},
373 {Feature::SupportsPrimitivesGeneratedQuery, "supportsPrimitivesGeneratedQuery"},
374 {Feature::SupportsPrimitiveTopologyListRestart, "supportsPrimitiveTopologyListRestart"},
375 {Feature::SupportsProtectedMemory, "supportsProtectedMemory"},
376 {Feature::SupportsRasterizationOrderAttachmentAccess, "supportsRasterizationOrderAttachmentAccess"},
377 {Feature::SupportsRenderpass2, "supportsRenderpass2"},
378 {Feature::SupportsRenderPassLoadStoreOpNone, "supportsRenderPassLoadStoreOpNone"},
379 {Feature::SupportsRenderPassStoreOpNone, "supportsRenderPassStoreOpNone"},
380 {Feature::SupportsRoundingModeRteFp16, "supportsRoundingModeRteFp16"},
381 {Feature::SupportsRoundingModeRteFp32, "supportsRoundingModeRteFp32"},
382 {Feature::SupportsRoundingModeRteFp64, "supportsRoundingModeRteFp64"},
383 {Feature::SupportsRoundingModeRtzFp16, "supportsRoundingModeRtzFp16"},
384 {Feature::SupportsRoundingModeRtzFp32, "supportsRoundingModeRtzFp32"},
385 {Feature::SupportsRoundingModeRtzFp64, "supportsRoundingModeRtzFp64"},
386 {Feature::SupportsSampler2dViewOf3d, "supportsSampler2dViewOf3d"},
387 {Feature::SupportsSamplerMirrorClampToEdge, "supportsSamplerMirrorClampToEdge"},
388 {Feature::SupportsShaderFloat16, "supportsShaderFloat16"},
389 {Feature::SupportsShaderFloat64, "supportsShaderFloat64"},
390 {Feature::SupportsShaderFramebufferFetch, "supportsShaderFramebufferFetch"},
391 {Feature::SupportsShaderFramebufferFetchDepthStencil, "supportsShaderFramebufferFetchDepthStencil"},
392 {Feature::SupportsShaderFramebufferFetchEXT, "supportsShaderFramebufferFetchEXT"},
393 {Feature::SupportsShaderFramebufferFetchNonCoherent, "supportsShaderFramebufferFetchNonCoherent"},
394 {Feature::SupportsShaderFramebufferFetchNonCoherentEXT, "supportsShaderFramebufferFetchNonCoherentEXT"},
395 {Feature::SupportsShaderInt8, "supportsShaderInt8"},
396 {Feature::SupportsShaderNonSemanticInfo, "supportsShaderNonSemanticInfo"},
397 {Feature::SupportsShaderStencilExport, "supportsShaderStencilExport"},
398 {Feature::SupportsSharedPresentableImageExtension, "supportsSharedPresentableImageExtension"},
399 {Feature::SupportsSignedZeroInfNanPreserveFp16, "supportsSignedZeroInfNanPreserveFp16"},
400 {Feature::SupportsSignedZeroInfNanPreserveFp32, "supportsSignedZeroInfNanPreserveFp32"},
401 {Feature::SupportsSignedZeroInfNanPreserveFp64, "supportsSignedZeroInfNanPreserveFp64"},
402 {Feature::SupportsSPIRV14, "supportsSPIRV14"},
403 {Feature::SupportsSurfaceCapabilities2Extension, "supportsSurfaceCapabilities2Extension"},
404 {Feature::SupportsSurfacelessQueryExtension, "supportsSurfacelessQueryExtension"},
405 {Feature::SupportsSurfaceMaintenance1, "supportsSurfaceMaintenance1"},
406 {Feature::SupportsSurfaceProtectedCapabilitiesExtension, "supportsSurfaceProtectedCapabilitiesExtension"},
407 {Feature::SupportsSurfaceProtectedSwapchains, "supportsSurfaceProtectedSwapchains"},
408 {Feature::SupportsSwapchainMaintenance1, "supportsSwapchainMaintenance1"},
409 {Feature::SupportsSynchronization2, "supportsSynchronization2"},
410 {Feature::SupportsTextureCompressionAstcHdr, "supportsTextureCompressionAstcHdr"},
411 {Feature::SupportsTimelineSemaphore, "supportsTimelineSemaphore"},
412 {Feature::SupportsTimestampSurfaceAttribute, "supportsTimestampSurfaceAttribute"},
413 {Feature::SupportsTransformFeedbackExtension, "supportsTransformFeedbackExtension"},
414 {Feature::SupportsVertexInputDynamicState, "supportsVertexInputDynamicState"},
415 {Feature::SupportsYUVSamplerConversion, "supportsYUVSamplerConversion"},
416 {Feature::SupportsYuvTarget, "supportsYuvTarget"},
417 {Feature::SwapbuffersOnFlushOrFinishWithSingleBuffer, "swapbuffersOnFlushOrFinishWithSingleBuffer"},
418 {Feature::SyncAllVertexArraysToDefault, "syncAllVertexArraysToDefault"},
419 {Feature::SyncDefaultVertexArraysToDefault, "syncDefaultVertexArraysToDefault"},
420 {Feature::SyncMonolithicPipelinesToBlobCache, "syncMonolithicPipelinesToBlobCache"},
421 {Feature::UnbindFBOBeforeSwitchingContext, "unbindFBOBeforeSwitchingContext"},
422 {Feature::UncurrentEglSurfaceUponSurfaceDestroy, "uncurrentEglSurfaceUponSurfaceDestroy"},
423 {Feature::UnfoldShortCircuits, "unfoldShortCircuits"},
424 {Feature::UnpackLastRowSeparatelyForPaddingInclusion, "unpackLastRowSeparatelyForPaddingInclusion"},
425 {Feature::UnpackOverlappingRowsSeparatelyUnpackBuffer, "unpackOverlappingRowsSeparatelyUnpackBuffer"},
426 {Feature::UnsizedSRGBReadPixelsDoesntTransform, "unsizedSRGBReadPixelsDoesntTransform"},
427 {Feature::UploadDataToIosurfacesWithStagingBuffers, "uploadDataToIosurfacesWithStagingBuffers"},
428 {Feature::UploadTextureDataInChunks, "uploadTextureDataInChunks"},
429 {Feature::UseCullModeDynamicState, "useCullModeDynamicState"},
430 {Feature::UseDepthBiasEnableDynamicState, "useDepthBiasEnableDynamicState"},
431 {Feature::UseDepthCompareOpDynamicState, "useDepthCompareOpDynamicState"},
432 {Feature::UseDepthTestEnableDynamicState, "useDepthTestEnableDynamicState"},
433 {Feature::UseDepthWriteEnableDynamicState, "useDepthWriteEnableDynamicState"},
434 {Feature::UseDualPipelineBlobCacheSlots, "useDualPipelineBlobCacheSlots"},
435 {Feature::UseEmptyBlobsToEraseOldPipelineCacheFromBlobCache, "useEmptyBlobsToEraseOldPipelineCacheFromBlobCache"},
436 {Feature::UseFrontFaceDynamicState, "useFrontFaceDynamicState"},
437 {Feature::UseIntermediateTextureForGenerateMipmap, "useIntermediateTextureForGenerateMipmap"},
438 {Feature::UseMultipleDescriptorsForExternalFormats, "useMultipleDescriptorsForExternalFormats"},
439 {Feature::UseNonZeroStencilWriteMaskStaticState, "useNonZeroStencilWriteMaskStaticState"},
440 {Feature::UsePrimitiveRestartEnableDynamicState, "usePrimitiveRestartEnableDynamicState"},
441 {Feature::UseRasterizerDiscardEnableDynamicState, "useRasterizerDiscardEnableDynamicState"},
442 {Feature::UseResetCommandBufferBitForSecondaryPools, "useResetCommandBufferBitForSecondaryPools"},
443 {Feature::UseShadowBuffersWhenAppropriate, "useShadowBuffersWhenAppropriate"},
444 {Feature::UseStencilOpDynamicState, "useStencilOpDynamicState"},
445 {Feature::UseStencilTestEnableDynamicState, "useStencilTestEnableDynamicState"},
446 {Feature::UseSystemMemoryForConstantBuffers, "useSystemMemoryForConstantBuffers"},
447 {Feature::UseUnusedBlocksWithStandardOrSharedLayout, "useUnusedBlocksWithStandardOrSharedLayout"},
448 {Feature::UseVertexInputBindingStrideDynamicState, "useVertexInputBindingStrideDynamicState"},
449 {Feature::UseVkEventForImageBarrier, "useVkEventForImageBarrier"},
450 {Feature::UseVmaForImageSuballocation, "useVmaForImageSuballocation"},
451 {Feature::VaryingsRequireMatchingPrecisionInSpirv, "varyingsRequireMatchingPrecisionInSpirv"},
452 {Feature::VerifyPipelineCacheInBlobCache, "verifyPipelineCacheInBlobCache"},
453 {Feature::VertexIDDoesNotIncludeBaseVertex, "vertexIDDoesNotIncludeBaseVertex"},
454 {Feature::WaitIdleBeforeSwapchainRecreation, "waitIdleBeforeSwapchainRecreation"},
455 {Feature::WarmUpPipelineCacheAtLink, "warmUpPipelineCacheAtLink"},
456 {Feature::WrapSwitchInIfTrue, "wrapSwitchInIfTrue"},
457 {Feature::WriteHelperSampleMask, "writeHelperSampleMask"},
458 {Feature::ZeroMaxLodWorkaround, "zeroMaxLodWorkaround"},
459 }};
460 } // anonymous namespace
461
GetFeatureName(Feature feature)462 const char *GetFeatureName(Feature feature)
463 {
464 return kFeatureNames[feature];
465 }
466
467 } // namespace angle
468