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