• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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::AdjustSrcDstRegionForBlitFramebuffer, "adjustSrcDstRegionForBlitFramebuffer"},
22     {Feature::AllocateNonZeroMemory, "allocateNonZeroMemory"},
23     {Feature::AllowAstcFormats, "allowAstcFormats"},
24     {Feature::AllowBufferReadWrite, "allowBufferReadWrite"},
25     {Feature::AllowClearForRobustResourceInit, "allowClearForRobustResourceInit"},
26     {Feature::AllowCompressedFormats, "allowCompressedFormats"},
27     {Feature::AllowES3OnFL100, "allowES3OnFL100"},
28     {Feature::AllowETCFormats, "allowETCFormats"},
29     {Feature::AllowGenerateMipmapWithCompute, "allowGenerateMipmapWithCompute"},
30     {Feature::AllowGenMultipleMipsPerPass, "allowGenMultipleMipsPerPass"},
31     {Feature::AllowInlineConstVertexData, "allowInlineConstVertexData"},
32     {Feature::AllowMultisampleStoreAndResolve, "allowMultisampleStoreAndResolve"},
33     {Feature::AllowRenderpassWithoutAttachment, "allowRenderpassWithoutAttachment"},
34     {Feature::AllowRuntimeSamplerCompareMode, "allowRuntimeSamplerCompareMode"},
35     {Feature::AllowSamplerCompareGradient, "allowSamplerCompareGradient"},
36     {Feature::AllowSamplerCompareLod, "allowSamplerCompareLod"},
37     {Feature::AllowSeparateDepthStencilBuffers, "allowSeparateDepthStencilBuffers"},
38     {Feature::AllowTranslateUniformBlockToStructuredBuffer, "allowTranslateUniformBlockToStructuredBuffer"},
39     {Feature::AlwaysCallUseProgramAfterLink, "alwaysCallUseProgramAfterLink"},
40     {Feature::AlwaysPreferStagedTextureUploads, "alwaysPreferStagedTextureUploads"},
41     {Feature::AlwaysUnbindFramebufferTexture2D, "alwaysUnbindFramebufferTexture2D"},
42     {Feature::AlwaysUseManagedStorageModeForBuffers, "alwaysUseManagedStorageModeForBuffers"},
43     {Feature::AlwaysUseSharedStorageModeForBuffers, "alwaysUseSharedStorageModeForBuffers"},
44     {Feature::AlwaysUseStagedBufferUpdates, "alwaysUseStagedBufferUpdates"},
45     {Feature::AppendAliasedMemoryDecorations, "appendAliasedMemoryDecorations"},
46     {Feature::AsyncCommandBufferReset, "asyncCommandBufferReset"},
47     {Feature::AsyncCommandQueue, "asyncCommandQueue"},
48     {Feature::Avoid1BitAlphaTextureFormats, "avoid1BitAlphaTextureFormats"},
49     {Feature::AvoidStencilTextureSwizzle, "avoidStencilTextureSwizzle"},
50     {Feature::BindCompleteFramebufferForTimerQueries, "bindCompleteFramebufferForTimerQueries"},
51     {Feature::BindTransformFeedbackBufferBeforeBindBufferRange, "bindTransformFeedbackBufferBeforeBindBufferRange"},
52     {Feature::BorderColorSrgb, "borderColorSrgb"},
53     {Feature::BottomLeftOriginPresentRegionRectangles, "bottomLeftOriginPresentRegionRectangles"},
54     {Feature::BresenhamLineRasterization, "bresenhamLineRasterization"},
55     {Feature::CacheCompiledShader, "cacheCompiledShader"},
56     {Feature::CallClearTwice, "callClearTwice"},
57     {Feature::ClampArrayAccess, "clampArrayAccess"},
58     {Feature::ClampFragDepth, "clampFragDepth"},
59     {Feature::ClampMscRate, "clampMscRate"},
60     {Feature::ClampPointSize, "clampPointSize"},
61     {Feature::ClearToZeroOrOneBroken, "clearToZeroOrOneBroken"},
62     {Feature::ClipSrcRegionForBlitFramebuffer, "clipSrcRegionForBlitFramebuffer"},
63     {Feature::CompileMetalShaders, "compileMetalShaders"},
64     {Feature::CompressVertexData, "compressVertexData"},
65     {Feature::CopyIOSurfaceToNonIOSurfaceForReadOptimization, "copyIOSurfaceToNonIOSurfaceForReadOptimization"},
66     {Feature::CopyTextureToBufferForReadOptimization, "copyTextureToBufferForReadOptimization"},
67     {Feature::DecodeEncodeSRGBForGenerateMipmap, "decodeEncodeSRGBForGenerateMipmap"},
68     {Feature::DeferFlushUntilEndRenderPass, "deferFlushUntilEndRenderPass"},
69     {Feature::DepthStencilBlitExtraCopy, "depthStencilBlitExtraCopy"},
70     {Feature::DisableAnisotropicFiltering, "disableAnisotropicFiltering"},
71     {Feature::DisableB5G6R5Support, "disableB5G6R5Support"},
72     {Feature::DisableBaseInstanceVertex, "disableBaseInstanceVertex"},
73     {Feature::DisableBlendFuncExtended, "disableBlendFuncExtended"},
74     {Feature::DisableClipControl, "disableClipControl"},
75     {Feature::DisableDrawBuffersIndexed, "disableDrawBuffersIndexed"},
76     {Feature::DisableFlippingBlitWithCommand, "disableFlippingBlitWithCommand"},
77     {Feature::DisableGPUSwitchingSupport, "disableGPUSwitchingSupport"},
78     {Feature::DisableMetalOnNvidia, "disableMetalOnNvidia"},
79     {Feature::DisableMultisampledRenderToTexture, "disableMultisampledRenderToTexture"},
80     {Feature::DisableNativeParallelCompile, "disableNativeParallelCompile"},
81     {Feature::DisableProgramBinary, "disableProgramBinary"},
82     {Feature::DisableProgramCaching, "disableProgramCaching"},
83     {Feature::DisableProgramCachingForTransformFeedback, "disableProgramCachingForTransformFeedback"},
84     {Feature::DisableProgrammableBlending, "disableProgrammableBlending"},
85     {Feature::DisableRasterizerOrderViews, "disableRasterizerOrderViews"},
86     {Feature::DisableRasterOrderGroups, "disableRasterOrderGroups"},
87     {Feature::DisableRWTextureTier2Support, "disableRWTextureTier2Support"},
88     {Feature::DisableSemaphoreFd, "disableSemaphoreFd"},
89     {Feature::DisableStagedInitializationOfPackedTextureFormats, "disableStagedInitializationOfPackedTextureFormats"},
90     {Feature::DisableSyncControlSupport, "disableSyncControlSupport"},
91     {Feature::DisableTextureClampToBorder, "disableTextureClampToBorder"},
92     {Feature::DisableTimestampQueries, "disableTimestampQueries"},
93     {Feature::DisableWorkerContexts, "disableWorkerContexts"},
94     {Feature::DisallowMixedDepthStencilLoadOpNoneAndLoad, "disallowMixedDepthStencilLoadOpNoneAndLoad"},
95     {Feature::DoesSRGBClearsOnLinearFramebufferAttachments, "doesSRGBClearsOnLinearFramebufferAttachments"},
96     {Feature::DontInitializeUninitializedLocals, "dontInitializeUninitializedLocals"},
97     {Feature::DontRelinkProgramsInParallel, "dontRelinkProgramsInParallel"},
98     {Feature::DontUseLoopsToInitializeVariables, "dontUseLoopsToInitializeVariables"},
99     {Feature::DoubleDepthBiasConstantFactor, "doubleDepthBiasConstantFactor"},
100     {Feature::DoWhileGLSLCausesGPUHang, "doWhileGLSLCausesGPUHang"},
101     {Feature::DumpShaderSource, "dumpShaderSource"},
102     {Feature::DumpTranslatedShaders, "dumpTranslatedShaders"},
103     {Feature::EglColorspaceAttributePassthrough, "eglColorspaceAttributePassthrough"},
104     {Feature::EmulateAbsIntFunction, "emulateAbsIntFunction"},
105     {Feature::EmulateAdvancedBlendEquations, "emulateAdvancedBlendEquations"},
106     {Feature::EmulateAlphaToCoverage, "emulateAlphaToCoverage"},
107     {Feature::EmulateAtan2Float, "emulateAtan2Float"},
108     {Feature::EmulateClipDistanceState, "emulateClipDistanceState"},
109     {Feature::EmulateCopyTexImage2D, "emulateCopyTexImage2D"},
110     {Feature::EmulateCopyTexImage2DFromRenderbuffers, "emulateCopyTexImage2DFromRenderbuffers"},
111     {Feature::EmulateDithering, "emulateDithering"},
112     {Feature::EmulatedPrerotation180, "emulatedPrerotation180"},
113     {Feature::EmulatedPrerotation270, "emulatedPrerotation270"},
114     {Feature::EmulatedPrerotation90, "emulatedPrerotation90"},
115     {Feature::EmulateImmutableCompressedTexture3D, "emulateImmutableCompressedTexture3D"},
116     {Feature::EmulateIsnanFloat, "emulateIsnanFloat"},
117     {Feature::EmulateMaxVertexAttribStride, "emulateMaxVertexAttribStride"},
118     {Feature::EmulatePackSkipRowsAndPackSkipPixels, "emulatePackSkipRowsAndPackSkipPixels"},
119     {Feature::EmulatePixelLocalStorage, "emulatePixelLocalStorage"},
120     {Feature::EmulatePrimitiveRestartFixedIndex, "emulatePrimitiveRestartFixedIndex"},
121     {Feature::EmulateR32fImageAtomicExchange, "emulateR32fImageAtomicExchange"},
122     {Feature::EmulateRGB10, "emulateRGB10"},
123     {Feature::EmulateTinyStencilTextures, "emulateTinyStencilTextures"},
124     {Feature::EmulateTransformFeedback, "emulateTransformFeedback"},
125     {Feature::EnableAsyncPipelineCacheCompression, "enableAsyncPipelineCacheCompression"},
126     {Feature::EnableCaptureLimits, "enableCaptureLimits"},
127     {Feature::EnableInMemoryMtlLibraryCache, "enableInMemoryMtlLibraryCache"},
128     {Feature::EnableMultisampledRenderToTexture, "enableMultisampledRenderToTexture"},
129     {Feature::EnableParallelMtlLibraryCompilation, "enableParallelMtlLibraryCompilation"},
130     {Feature::EnablePipelineCacheDataCompression, "enablePipelineCacheDataCompression"},
131     {Feature::EnablePortabilityEnumeration, "enablePortabilityEnumeration"},
132     {Feature::EnablePrecisionQualifiers, "enablePrecisionQualifiers"},
133     {Feature::EnablePreRotateSurfaces, "enablePreRotateSurfaces"},
134     {Feature::EnableProgramBinaryForCapture, "enableProgramBinaryForCapture"},
135     {Feature::EnableShaderSubstitution, "enableShaderSubstitution"},
136     {Feature::EnableTimestampQueries, "enableTimestampQueries"},
137     {Feature::EnableTranslatedShaderSubstitution, "enableTranslatedShaderSubstitution"},
138     {Feature::EnsureNonEmptyBufferIsBoundForDraw, "ensureNonEmptyBufferIsBoundForDraw"},
139     {Feature::ExpandIntegerPowExpressions, "expandIntegerPowExpressions"},
140     {Feature::ExplicitlyCastMediumpFloatTo16Bit, "explicitlyCastMediumpFloatTo16Bit"},
141     {Feature::ExplicitlyEnablePerSampleShading, "explicitlyEnablePerSampleShading"},
142     {Feature::ExposeNonConformantExtensionsAndVersions, "exposeNonConformantExtensionsAndVersions"},
143     {Feature::FinishDoesNotCauseQueriesToBeAvailable, "finishDoesNotCauseQueriesToBeAvailable"},
144     {Feature::FlushAfterEndingTransformFeedback, "flushAfterEndingTransformFeedback"},
145     {Feature::FlushAfterStreamVertexData, "flushAfterStreamVertexData"},
146     {Feature::FlushBeforeDeleteTextureIfCopiedTo, "flushBeforeDeleteTextureIfCopiedTo"},
147     {Feature::FlushOnFramebufferChange, "flushOnFramebufferChange"},
148     {Feature::ForceAtomicValueResolution, "forceAtomicValueResolution"},
149     {Feature::ForceBufferGPUStorage, "forceBufferGPUStorage"},
150     {Feature::ForceContinuousRefreshOnSharedPresent, "forceContinuousRefreshOnSharedPresent"},
151     {Feature::ForceD16TexFilter, "forceD16TexFilter"},
152     {Feature::ForceD24S8AsUnsupported, "forceD24S8AsUnsupported"},
153     {Feature::ForceDepthAttachmentInitOnClear, "forceDepthAttachmentInitOnClear"},
154     {Feature::ForceDisableFullScreenExclusive, "forceDisableFullScreenExclusive"},
155     {Feature::ForceFallbackFormat, "forceFallbackFormat"},
156     {Feature::ForceFragmentShaderPrecisionHighpToMediump, "forceFragmentShaderPrecisionHighpToMediump"},
157     {Feature::ForceGlErrorChecking, "forceGlErrorChecking"},
158     {Feature::ForceInitShaderVariables, "forceInitShaderVariables"},
159     {Feature::ForceMaxUniformBufferSize16KB, "forceMaxUniformBufferSize16KB"},
160     {Feature::ForceNearestFiltering, "forceNearestFiltering"},
161     {Feature::ForceNearestMipFiltering, "forceNearestMipFiltering"},
162     {Feature::ForceNonCSBaseMipmapGeneration, "forceNonCSBaseMipmapGeneration"},
163     {Feature::ForceRobustResourceInit, "forceRobustResourceInit"},
164     {Feature::ForceSubmitImmutableTextureUpdates, "forceSubmitImmutableTextureUpdates"},
165     {Feature::ForceTextureLodOffset1, "forceTextureLodOffset1"},
166     {Feature::ForceTextureLodOffset2, "forceTextureLodOffset2"},
167     {Feature::ForceTextureLodOffset3, "forceTextureLodOffset3"},
168     {Feature::ForceTextureLodOffset4, "forceTextureLodOffset4"},
169     {Feature::ForceWaitForSubmissionToCompleteForQueryResult, "forceWaitForSubmissionToCompleteForQueryResult"},
170     {Feature::GenerateShareableShaders, "generateShareableShaders"},
171     {Feature::GetDimensionsIgnoresBaseLevel, "getDimensionsIgnoresBaseLevel"},
172     {Feature::HasBaseVertexInstancedDraw, "hasBaseVertexInstancedDraw"},
173     {Feature::HasCheapRenderPass, "hasCheapRenderPass"},
174     {Feature::HasDepthAutoResolve, "hasDepthAutoResolve"},
175     {Feature::HasEffectivePipelineCacheSerialization, "hasEffectivePipelineCacheSerialization"},
176     {Feature::HasEvents, "hasEvents"},
177     {Feature::HasExplicitMemBarrier, "hasExplicitMemBarrier"},
178     {Feature::HasNonUniformDispatch, "hasNonUniformDispatch"},
179     {Feature::HasShaderStencilOutput, "hasShaderStencilOutput"},
180     {Feature::HasStencilAutoResolve, "hasStencilAutoResolve"},
181     {Feature::HasTextureSwizzle, "hasTextureSwizzle"},
182     {Feature::InitFragmentOutputVariables, "initFragmentOutputVariables"},
183     {Feature::InitializeCurrentVertexAttributes, "initializeCurrentVertexAttributes"},
184     {Feature::IntelDisableFastMath, "intelDisableFastMath"},
185     {Feature::IntelExplicitBoolCastWorkaround, "intelExplicitBoolCastWorkaround"},
186     {Feature::KeepBufferShadowCopy, "keepBufferShadowCopy"},
187     {Feature::LimitMax3dArrayTextureSizeTo1024, "limitMax3dArrayTextureSizeTo1024"},
188     {Feature::LimitMaxColorTargetBitsForTesting, "limitMaxColorTargetBitsForTesting"},
189     {Feature::LimitMaxDrawBuffersForTesting, "limitMaxDrawBuffersForTesting"},
190     {Feature::LimitMaxMSAASamplesTo4, "limitMaxMSAASamplesTo4"},
191     {Feature::LimitSampleCountTo2, "limitSampleCountTo2"},
192     {Feature::LimitWebglMaxTextureSizeTo4096, "limitWebglMaxTextureSizeTo4096"},
193     {Feature::LoadMetalShadersFromBlobCache, "loadMetalShadersFromBlobCache"},
194     {Feature::LogMemoryReportCallbacks, "logMemoryReportCallbacks"},
195     {Feature::LogMemoryReportStats, "logMemoryReportStats"},
196     {Feature::LoseContextOnOutOfMemory, "loseContextOnOutOfMemory"},
197     {Feature::MapUnspecifiedColorSpaceToPassThrough, "mapUnspecifiedColorSpaceToPassThrough"},
198     {Feature::MergeProgramPipelineCachesToGlobalCache, "mergeProgramPipelineCachesToGlobalCache"},
199     {Feature::MrtPerfWorkaround, "mrtPerfWorkaround"},
200     {Feature::MultisampleColorFormatShaderReadWorkaround, "multisampleColorFormatShaderReadWorkaround"},
201     {Feature::MutableMipmapTextureUpload, "mutableMipmapTextureUpload"},
202     {Feature::OverrideSurfaceFormatRGB8ToRGBA8, "overrideSurfaceFormatRGB8ToRGBA8"},
203     {Feature::PackLastRowSeparatelyForPaddingInclusion, "packLastRowSeparatelyForPaddingInclusion"},
204     {Feature::PackOverlappingRowsSeparatelyPackBuffer, "packOverlappingRowsSeparatelyPackBuffer"},
205     {Feature::PadBuffersToMaxVertexAttribStride, "padBuffersToMaxVertexAttribStride"},
206     {Feature::PassHighpToPackUnormSnormBuiltins, "passHighpToPackUnormSnormBuiltins"},
207     {Feature::PerFrameWindowSizeQuery, "perFrameWindowSizeQuery"},
208     {Feature::PermanentlySwitchToFramebufferFetchMode, "permanentlySwitchToFramebufferFetchMode"},
209     {Feature::PersistentlyMappedBuffers, "persistentlyMappedBuffers"},
210     {Feature::PreAddTexelFetchOffsets, "preAddTexelFetchOffsets"},
211     {Feature::PreemptivelyStartProvokingVertexCommandBuffer, "preemptivelyStartProvokingVertexCommandBuffer"},
212     {Feature::PreferAggregateBarrierCalls, "preferAggregateBarrierCalls"},
213     {Feature::PreferCpuForBuffersubdata, "preferCpuForBuffersubdata"},
214     {Feature::PreferCPUForBufferSubData, "preferCPUForBufferSubData"},
215     {Feature::PreferDeviceLocalMemoryHostVisible, "preferDeviceLocalMemoryHostVisible"},
216     {Feature::PreferDrawClearOverVkCmdClearAttachments, "preferDrawClearOverVkCmdClearAttachments"},
217     {Feature::PreferDriverUniformOverSpecConst, "preferDriverUniformOverSpecConst"},
218     {Feature::PreferLinearFilterForYUV, "preferLinearFilterForYUV"},
219     {Feature::PreferMonolithicPipelinesOverLibraries, "preferMonolithicPipelinesOverLibraries"},
220     {Feature::PreferSkippingInvalidateForEmulatedFormats, "preferSkippingInvalidateForEmulatedFormats"},
221     {Feature::PreferSubmitAtFBOBoundary, "preferSubmitAtFBOBoundary"},
222     {Feature::PreferSubmitOnAnySamplesPassedQueryEnd, "preferSubmitOnAnySamplesPassedQueryEnd"},
223     {Feature::PrintMetalShaders, "printMetalShaders"},
224     {Feature::PromotePackedFormatsTo8BitPerChannel, "promotePackedFormatsTo8BitPerChannel"},
225     {Feature::ProvokingVertex, "provokingVertex"},
226     {Feature::QueryCounterBitsGeneratesErrors, "queryCounterBitsGeneratesErrors"},
227     {Feature::ReadPixelsUsingImplementationColorReadFormatForNorm16, "readPixelsUsingImplementationColorReadFormatForNorm16"},
228     {Feature::ReapplyUBOBindingsAfterUsingBinaryProgram, "reapplyUBOBindingsAfterUsingBinaryProgram"},
229     {Feature::RegenerateStructNames, "regenerateStructNames"},
230     {Feature::RemoveDynamicIndexingOfSwizzledVector, "removeDynamicIndexingOfSwizzledVector"},
231     {Feature::RemoveInvariantAndCentroidForESSL3, "removeInvariantAndCentroidForESSL3"},
232     {Feature::RequireGpuFamily2, "requireGpuFamily2"},
233     {Feature::RequireMsl21, "requireMsl21"},
234     {Feature::ResetTexImage2DBaseLevel, "resetTexImage2DBaseLevel"},
235     {Feature::RetainSPIRVDebugInfo, "retainSPIRVDebugInfo"},
236     {Feature::RewriteFloatUnaryMinusOperator, "rewriteFloatUnaryMinusOperator"},
237     {Feature::RewriteRepeatedAssignToSwizzled, "rewriteRepeatedAssignToSwizzled"},
238     {Feature::RewriteRowMajorMatrices, "rewriteRowMajorMatrices"},
239     {Feature::RewriteUnaryMinusOperator, "rewriteUnaryMinusOperator"},
240     {Feature::RGBA4IsNotSupportedForColorRendering, "RGBA4IsNotSupportedForColorRendering"},
241     {Feature::RGBDXT1TexturesSampleZeroAlpha, "RGBDXT1TexturesSampleZeroAlpha"},
242     {Feature::RoundOutputAfterDithering, "roundOutputAfterDithering"},
243     {Feature::SanitizeAMDGPURendererString, "sanitizeAMDGPURendererString"},
244     {Feature::ScalarizeVecAndMatConstructorArgs, "scalarizeVecAndMatConstructorArgs"},
245     {Feature::SelectViewInGeometryShader, "selectViewInGeometryShader"},
246     {Feature::SetDataFasterThanImageUpload, "setDataFasterThanImageUpload"},
247     {Feature::SetPrimitiveRestartFixedIndexForDrawArrays, "setPrimitiveRestartFixedIndexForDrawArrays"},
248     {Feature::SetZeroLevelBeforeGenerateMipmap, "setZeroLevelBeforeGenerateMipmap"},
249     {Feature::ShiftInstancedArrayDataWithOffset, "shiftInstancedArrayDataWithOffset"},
250     {Feature::SingleThreadedTextureDecompression, "singleThreadedTextureDecompression"},
251     {Feature::SkipVSConstantRegisterZero, "skipVSConstantRegisterZero"},
252     {Feature::SlowAsyncCommandQueueForTesting, "slowAsyncCommandQueueForTesting"},
253     {Feature::SlowDownMonolithicPipelineCreationForTesting, "slowDownMonolithicPipelineCreationForTesting"},
254     {Feature::SupportsAndroidHardwareBuffer, "supportsAndroidHardwareBuffer"},
255     {Feature::SupportsAndroidNativeFenceSync, "supportsAndroidNativeFenceSync"},
256     {Feature::SupportsBindMemory2, "supportsBindMemory2"},
257     {Feature::SupportsBlendOperationAdvanced, "supportsBlendOperationAdvanced"},
258     {Feature::SupportsColorWriteEnable, "supportsColorWriteEnable"},
259     {Feature::SupportsComputeTranscodeEtcToBc, "supportsComputeTranscodeEtcToBc"},
260     {Feature::SupportsCustomBorderColor, "supportsCustomBorderColor"},
261     {Feature::SupportsDepthClampZeroOne, "supportsDepthClampZeroOne"},
262     {Feature::SupportsDepthClipControl, "supportsDepthClipControl"},
263     {Feature::SupportsDepthClipEnable, "supportsDepthClipEnable"},
264     {Feature::SupportsDepthStencilResolve, "supportsDepthStencilResolve"},
265     {Feature::SupportsExtendedDynamicState, "supportsExtendedDynamicState"},
266     {Feature::SupportsExtendedDynamicState2, "supportsExtendedDynamicState2"},
267     {Feature::SupportsExternalFenceCapabilities, "supportsExternalFenceCapabilities"},
268     {Feature::SupportsExternalFenceFd, "supportsExternalFenceFd"},
269     {Feature::SupportsExternalMemoryDmaBufAndModifiers, "supportsExternalMemoryDmaBufAndModifiers"},
270     {Feature::SupportsExternalMemoryFd, "supportsExternalMemoryFd"},
271     {Feature::SupportsExternalMemoryFuchsia, "supportsExternalMemoryFuchsia"},
272     {Feature::SupportsExternalMemoryHost, "supportsExternalMemoryHost"},
273     {Feature::SupportsExternalSemaphoreCapabilities, "supportsExternalSemaphoreCapabilities"},
274     {Feature::SupportsExternalSemaphoreFd, "supportsExternalSemaphoreFd"},
275     {Feature::SupportsExternalSemaphoreFuchsia, "supportsExternalSemaphoreFuchsia"},
276     {Feature::SupportsFilteringPrecision, "supportsFilteringPrecision"},
277     {Feature::SupportsFragmentShaderInterlockARB, "supportsFragmentShaderInterlockARB"},
278     {Feature::SupportsFragmentShaderInterlockNV, "supportsFragmentShaderInterlockNV"},
279     {Feature::SupportsFragmentShaderOrderingINTEL, "supportsFragmentShaderOrderingINTEL"},
280     {Feature::SupportsFragmentShaderPixelInterlock, "supportsFragmentShaderPixelInterlock"},
281     {Feature::SupportsFragmentShadingRate, "supportsFragmentShadingRate"},
282     {Feature::SupportsFullScreenExclusive, "supportsFullScreenExclusive"},
283     {Feature::SupportsGeometryStreamsCapability, "supportsGeometryStreamsCapability"},
284     {Feature::SupportsGetMemoryRequirements2, "supportsGetMemoryRequirements2"},
285     {Feature::SupportsGGPFrameToken, "supportsGGPFrameToken"},
286     {Feature::SupportsGraphicsPipelineLibrary, "supportsGraphicsPipelineLibrary"},
287     {Feature::SupportsHostQueryReset, "supportsHostQueryReset"},
288     {Feature::SupportsImage2dViewOf3d, "supportsImage2dViewOf3d"},
289     {Feature::SupportsImageCubeArray, "supportsImageCubeArray"},
290     {Feature::SupportsImageFormatList, "supportsImageFormatList"},
291     {Feature::SupportsImagelessFramebuffer, "supportsImagelessFramebuffer"},
292     {Feature::SupportsIncrementalPresent, "supportsIncrementalPresent"},
293     {Feature::SupportsIndexTypeUint8, "supportsIndexTypeUint8"},
294     {Feature::SupportsLegacyDithering, "supportsLegacyDithering"},
295     {Feature::SupportsLockSurfaceExtension, "supportsLockSurfaceExtension"},
296     {Feature::SupportsLogicOpDynamicState, "supportsLogicOpDynamicState"},
297     {Feature::SupportsMemoryBudget, "supportsMemoryBudget"},
298     {Feature::SupportsMixedReadWriteDepthStencilLayouts, "supportsMixedReadWriteDepthStencilLayouts"},
299     {Feature::SupportsMultiDrawIndirect, "supportsMultiDrawIndirect"},
300     {Feature::SupportsMultisampledRenderToSingleSampled, "supportsMultisampledRenderToSingleSampled"},
301     {Feature::SupportsMultisampledRenderToSingleSampledGOOGLEX, "supportsMultisampledRenderToSingleSampledGOOGLEX"},
302     {Feature::SupportsMultiview, "supportsMultiview"},
303     {Feature::SupportsNegativeViewport, "supportsNegativeViewport"},
304     {Feature::SupportsPipelineCreationCacheControl, "supportsPipelineCreationCacheControl"},
305     {Feature::SupportsPipelineCreationFeedback, "supportsPipelineCreationFeedback"},
306     {Feature::SupportsPipelineProtectedAccess, "supportsPipelineProtectedAccess"},
307     {Feature::SupportsPipelineRobustness, "supportsPipelineRobustness"},
308     {Feature::SupportsPipelineStatisticsQuery, "supportsPipelineStatisticsQuery"},
309     {Feature::SupportsPortabilityEnumeration, "supportsPortabilityEnumeration"},
310     {Feature::SupportsPresentation, "supportsPresentation"},
311     {Feature::SupportsPrimitivesGeneratedQuery, "supportsPrimitivesGeneratedQuery"},
312     {Feature::SupportsPrimitiveTopologyListRestart, "supportsPrimitiveTopologyListRestart"},
313     {Feature::SupportsProtectedMemory, "supportsProtectedMemory"},
314     {Feature::SupportsRasterizationOrderAttachmentAccess, "supportsRasterizationOrderAttachmentAccess"},
315     {Feature::SupportsRenderpass2, "supportsRenderpass2"},
316     {Feature::SupportsRenderPassLoadStoreOpNone, "supportsRenderPassLoadStoreOpNone"},
317     {Feature::SupportsRenderPassStoreOpNone, "supportsRenderPassStoreOpNone"},
318     {Feature::SupportsSampler2dViewOf3d, "supportsSampler2dViewOf3d"},
319     {Feature::SupportsSamplerMirrorClampToEdge, "supportsSamplerMirrorClampToEdge"},
320     {Feature::SupportsShaderFloat16, "supportsShaderFloat16"},
321     {Feature::SupportsShaderFramebufferFetch, "supportsShaderFramebufferFetch"},
322     {Feature::SupportsShaderFramebufferFetchEXT, "supportsShaderFramebufferFetchEXT"},
323     {Feature::SupportsShaderFramebufferFetchNonCoherent, "supportsShaderFramebufferFetchNonCoherent"},
324     {Feature::SupportsShaderFramebufferFetchNonCoherentEXT, "supportsShaderFramebufferFetchNonCoherentEXT"},
325     {Feature::SupportsShaderPixelLocalStorageEXT, "supportsShaderPixelLocalStorageEXT"},
326     {Feature::SupportsShaderStencilExport, "supportsShaderStencilExport"},
327     {Feature::SupportsSharedPresentableImageExtension, "supportsSharedPresentableImageExtension"},
328     {Feature::SupportsSurfaceCapabilities2Extension, "supportsSurfaceCapabilities2Extension"},
329     {Feature::SupportsSurfacelessQueryExtension, "supportsSurfacelessQueryExtension"},
330     {Feature::SupportsSurfaceProtectedCapabilitiesExtension, "supportsSurfaceProtectedCapabilitiesExtension"},
331     {Feature::SupportsSurfaceProtectedSwapchains, "supportsSurfaceProtectedSwapchains"},
332     {Feature::SupportsSwapchainMaintenance1, "supportsSwapchainMaintenance1"},
333     {Feature::SupportsTimelineSemaphore, "supportsTimelineSemaphore"},
334     {Feature::SupportsTimestampSurfaceAttribute, "supportsTimestampSurfaceAttribute"},
335     {Feature::SupportsTransformFeedbackExtension, "supportsTransformFeedbackExtension"},
336     {Feature::SupportsVertexInputDynamicState, "supportsVertexInputDynamicState"},
337     {Feature::SupportsYUVSamplerConversion, "supportsYUVSamplerConversion"},
338     {Feature::SupportsYuvTarget, "supportsYuvTarget"},
339     {Feature::SwapbuffersOnFlushOrFinishWithSingleBuffer, "swapbuffersOnFlushOrFinishWithSingleBuffer"},
340     {Feature::SyncMonolithicPipelinesToBlobCache, "syncMonolithicPipelinesToBlobCache"},
341     {Feature::SyncVertexArraysToDefault, "syncVertexArraysToDefault"},
342     {Feature::UnbindFBOBeforeSwitchingContext, "unbindFBOBeforeSwitchingContext"},
343     {Feature::UnfoldShortCircuits, "unfoldShortCircuits"},
344     {Feature::UnpackLastRowSeparatelyForPaddingInclusion, "unpackLastRowSeparatelyForPaddingInclusion"},
345     {Feature::UnpackOverlappingRowsSeparatelyUnpackBuffer, "unpackOverlappingRowsSeparatelyUnpackBuffer"},
346     {Feature::UnsizedSRGBReadPixelsDoesntTransform, "unsizedSRGBReadPixelsDoesntTransform"},
347     {Feature::UploadDataToIosurfacesWithStagingBuffers, "uploadDataToIosurfacesWithStagingBuffers"},
348     {Feature::UploadTextureDataInChunks, "uploadTextureDataInChunks"},
349     {Feature::UseCullModeDynamicState, "useCullModeDynamicState"},
350     {Feature::UseDepthBiasEnableDynamicState, "useDepthBiasEnableDynamicState"},
351     {Feature::UseDepthCompareOpDynamicState, "useDepthCompareOpDynamicState"},
352     {Feature::UseDepthTestEnableDynamicState, "useDepthTestEnableDynamicState"},
353     {Feature::UseDepthWriteEnableDynamicState, "useDepthWriteEnableDynamicState"},
354     {Feature::UseFrontFaceDynamicState, "useFrontFaceDynamicState"},
355     {Feature::UseInstancedPointSpriteEmulation, "useInstancedPointSpriteEmulation"},
356     {Feature::UseMultipleDescriptorsForExternalFormats, "useMultipleDescriptorsForExternalFormats"},
357     {Feature::UseNonZeroStencilWriteMaskStaticState, "useNonZeroStencilWriteMaskStaticState"},
358     {Feature::UsePrimitiveRestartEnableDynamicState, "usePrimitiveRestartEnableDynamicState"},
359     {Feature::UseRasterizerDiscardEnableDynamicState, "useRasterizerDiscardEnableDynamicState"},
360     {Feature::UseResetCommandBufferBitForSecondaryPools, "useResetCommandBufferBitForSecondaryPools"},
361     {Feature::UseShadowBuffersWhenAppropriate, "useShadowBuffersWhenAppropriate"},
362     {Feature::UseStencilOpDynamicState, "useStencilOpDynamicState"},
363     {Feature::UseStencilTestEnableDynamicState, "useStencilTestEnableDynamicState"},
364     {Feature::UseSystemMemoryForConstantBuffers, "useSystemMemoryForConstantBuffers"},
365     {Feature::UseUnusedBlocksWithStandardOrSharedLayout, "useUnusedBlocksWithStandardOrSharedLayout"},
366     {Feature::UseVertexInputBindingStrideDynamicState, "useVertexInputBindingStrideDynamicState"},
367     {Feature::UseVmaForImageSuballocation, "useVmaForImageSuballocation"},
368     {Feature::VaryingsRequireMatchingPrecisionInSpirv, "varyingsRequireMatchingPrecisionInSpirv"},
369     {Feature::VertexIDDoesNotIncludeBaseVertex, "vertexIDDoesNotIncludeBaseVertex"},
370     {Feature::WaitIdleBeforeSwapchainRecreation, "waitIdleBeforeSwapchainRecreation"},
371     {Feature::WarmUpPipelineCacheAtLink, "warmUpPipelineCacheAtLink"},
372     {Feature::ZeroMaxLodWorkaround, "zeroMaxLodWorkaround"},
373 }};
374 }  // anonymous namespace
375 
GetFeatureName(Feature feature)376 const char *GetFeatureName(Feature feature)
377 {
378     return kFeatureNames[feature];
379 }
380 
381 }  // namespace angle
382