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