1 // GENERATED FILE - DO NOT EDIT. 2 // Generated by gen_features.py using data from vk_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 // FeaturesVk_autogen.h: Optional features for the Vulkan renderer. 9 10 #ifndef ANGLE_PLATFORM_AUTOGEN_FEATURESVK_H_ 11 #define ANGLE_PLATFORM_AUTOGEN_FEATURESVK_H_ 12 13 #include "platform/Feature.h" 14 15 namespace angle 16 { 17 18 struct FeaturesVk : FeatureSetBase 19 { 20 FeaturesVk(); 21 ~FeaturesVk(); 22 23 FeatureInfo appendAliasedMemoryDecorations = { 24 "appendAliasedMemoryDecorations", 25 FeatureCategory::VulkanWorkarounds, 26 "Append aliased memory decoration to ssbo and image in SpirV if they are not declared with restrict memory qualifier in GLSL", 27 &members, "b/266235549" 28 }; 29 30 FeatureInfo bresenhamLineRasterization = { 31 "bresenhamLineRasterization", 32 FeatureCategory::VulkanFeatures, 33 "Enable Bresenham line rasterization via VK_EXT_line_rasterization extension", 34 &members, 35 }; 36 37 FeatureInfo provokingVertex = { 38 "provokingVertex", 39 FeatureCategory::VulkanFeatures, 40 "Enable provoking vertex mode via VK_EXT_provoking_vertex extension", 41 &members, 42 }; 43 44 FeatureInfo forceFallbackFormat = { 45 "forceFallbackFormat", 46 FeatureCategory::VulkanWorkarounds, 47 "Force a fallback format for angle_end2end_tests", 48 &members, 49 }; 50 51 FeatureInfo clampPointSize = { 52 "clampPointSize", 53 FeatureCategory::VulkanWorkarounds, 54 "The point size range reported from the API is inconsistent with the actual behavior", 55 &members, "http://anglebug.com/2970" 56 }; 57 58 FeatureInfo supportsDepthClipEnable = { 59 "supportsDepthClipEnable", 60 FeatureCategory::VulkanFeatures, 61 "VkDevice supports the VK_EXT_depth_clip_enable extension.", 62 &members, "http://anglebug.com/3970" 63 }; 64 65 FeatureInfo supportsDepthClampZeroOne = { 66 "supportsDepthClampZeroOne", 67 FeatureCategory::VulkanFeatures, 68 "VkDevice supports the VK_EXT_depth_clamp_zero_one extension", 69 &members, "http://anglebug.com/3970" 70 }; 71 72 FeatureInfo clampFragDepth = { 73 "clampFragDepth", 74 FeatureCategory::VulkanWorkarounds, 75 "gl_FragDepth is not clamped when rendering to a floating point depth buffer without VK_EXT_depth_clamp_zero_one", 76 &members, "http://anglebug.com/3970" 77 }; 78 79 FeatureInfo mutableMipmapTextureUpload = { 80 "mutableMipmapTextureUpload", 81 FeatureCategory::VulkanFeatures, 82 "Enable uploading the previously defined mutable mipmap texture.", 83 &members, "https://anglebug.com/7308" 84 }; 85 86 FeatureInfo useVmaForImageSuballocation = { 87 "useVmaForImageSuballocation", 88 FeatureCategory::VulkanFeatures, 89 "Utilize VMA for image memory suballocation.", 90 &members, 91 }; 92 93 FeatureInfo supportsMemoryBudget = { 94 "supportsMemoryBudget", 95 FeatureCategory::VulkanFeatures, 96 "VkDevice supports the VK_EXT_memory_budget extension.", 97 &members, 98 }; 99 100 FeatureInfo supportsRenderpass2 = { 101 "supportsRenderpass2", 102 FeatureCategory::VulkanFeatures, 103 "VkDevice supports the VK_KHR_create_renderpass2 extension", 104 &members, 105 }; 106 107 FeatureInfo supportsIncrementalPresent = { 108 "supportsIncrementalPresent", 109 FeatureCategory::VulkanFeatures, 110 "VkDevice supports the VK_KHR_incremental_present extension", 111 &members, 112 }; 113 114 FeatureInfo supportsAndroidHardwareBuffer = { 115 "supportsAndroidHardwareBuffer", 116 FeatureCategory::VulkanFeatures, 117 "VkDevice supports the VK_ANDROID_external_memory_android_hardware_buffer extension", 118 &members, 119 }; 120 121 FeatureInfo supportsGGPFrameToken = { 122 "supportsGGPFrameToken", 123 FeatureCategory::VulkanFeatures, 124 "VkDevice supports the VK_GGP_frame_token extension", 125 &members, 126 }; 127 128 FeatureInfo supportsExternalMemoryFd = { 129 "supportsExternalMemoryFd", 130 FeatureCategory::VulkanFeatures, 131 "VkDevice supports the VK_KHR_external_memory_fd extension", 132 &members, 133 }; 134 135 FeatureInfo supportsExternalMemoryFuchsia = { 136 "supportsExternalMemoryFuchsia", 137 FeatureCategory::VulkanFeatures, 138 "VkDevice supports the VK_FUCHSIA_external_memory extension", 139 &members, 140 }; 141 142 FeatureInfo supportsFilteringPrecision = { 143 "supportsFilteringPrecision", 144 FeatureCategory::VulkanFeatures, 145 "VkDevice supports the VK_GOOGLE_sampler_filtering_precision extension", 146 &members, 147 }; 148 149 FeatureInfo supportsExternalFenceCapabilities = { 150 "supportsExternalFenceCapabilities", 151 FeatureCategory::VulkanFeatures, 152 "VkInstance supports the VK_KHR_external_fence_capabilities extension", 153 &members, 154 }; 155 156 FeatureInfo supportsExternalSemaphoreCapabilities = { 157 "supportsExternalSemaphoreCapabilities", 158 FeatureCategory::VulkanFeatures, 159 "VkInstance supports the VK_KHR_external_semaphore_capabilities extension", 160 &members, 161 }; 162 163 FeatureInfo supportsExternalSemaphoreFd = { 164 "supportsExternalSemaphoreFd", 165 FeatureCategory::VulkanFeatures, 166 "VkDevice supports the VK_KHR_external_semaphore_fd extension", 167 &members, 168 }; 169 170 FeatureInfo supportsExternalSemaphoreFuchsia = { 171 "supportsExternalSemaphoreFuchsia", 172 FeatureCategory::VulkanFeatures, 173 "VkDevice supports the VK_FUCHSIA_external_semaphore extension", 174 &members, 175 }; 176 177 FeatureInfo supportsExternalFenceFd = { 178 "supportsExternalFenceFd", 179 FeatureCategory::VulkanFeatures, 180 "VkDevice supports the VK_KHR_external_fence_fd extension", 181 &members, "http://anglebug.com/2517" 182 }; 183 184 FeatureInfo supportsAndroidNativeFenceSync = { 185 "supportsAndroidNativeFenceSync", 186 FeatureCategory::VulkanFeatures, 187 "VkDevice supports the EGL_ANDROID_native_fence_sync extension", 188 &members, "http://anglebug.com/2517" 189 }; 190 191 FeatureInfo supportsImageCubeArray = { 192 "supportsImageCubeArray", 193 FeatureCategory::VulkanFeatures, 194 "VkDevice supports the imageCubeArray feature properly", 195 &members, "http://anglebug.com/3584" 196 }; 197 198 FeatureInfo supportsPipelineStatisticsQuery = { 199 "supportsPipelineStatisticsQuery", 200 FeatureCategory::VulkanFeatures, 201 "VkDevice supports the pipelineStatisticsQuery feature", 202 &members, "http://anglebug.com/5430" 203 }; 204 205 FeatureInfo supportsShaderStencilExport = { 206 "supportsShaderStencilExport", 207 FeatureCategory::VulkanFeatures, 208 "VkDevice supports the VK_EXT_shader_stencil_export extension", 209 &members, 210 }; 211 212 FeatureInfo supportsYUVSamplerConversion = { 213 "supportsYUVSamplerConversion", 214 FeatureCategory::VulkanFeatures, 215 "VkDevice supports the VK_KHR_sampler_ycbcr_conversion extension", 216 &members, 217 }; 218 219 FeatureInfo emulateTransformFeedback = { 220 "emulateTransformFeedback", 221 FeatureCategory::VulkanFeatures, 222 "Emulate transform feedback as the VK_EXT_transform_feedback is not present.", 223 &members, "http://anglebug.com/3205" 224 }; 225 226 FeatureInfo supportsTransformFeedbackExtension = { 227 "supportsTransformFeedbackExtension", 228 FeatureCategory::VulkanFeatures, 229 "Transform feedback uses the VK_EXT_transform_feedback extension.", 230 &members, "http://anglebug.com/3206" 231 }; 232 233 FeatureInfo supportsGeometryStreamsCapability = { 234 "supportsGeometryStreamsCapability", 235 FeatureCategory::VulkanFeatures, 236 "Implementation supports the GeometryStreams SPIR-V capability.", 237 &members, "http://anglebug.com/3206" 238 }; 239 240 FeatureInfo supportsIndexTypeUint8 = { 241 "supportsIndexTypeUint8", 242 FeatureCategory::VulkanFeatures, 243 "VkDevice supports the VK_EXT_index_type_uint8 extension", 244 &members, "http://anglebug.com/4405" 245 }; 246 247 FeatureInfo supportsCustomBorderColor = { 248 "supportsCustomBorderColor", 249 FeatureCategory::VulkanFeatures, 250 "VkDevice supports the VK_EXT_custom_border_color extension", 251 &members, "http://anglebug.com/3577" 252 }; 253 254 FeatureInfo supportsMultiDrawIndirect = { 255 "supportsMultiDrawIndirect", 256 FeatureCategory::VulkanFeatures, 257 "VkDevice supports the multiDrawIndirect extension", 258 &members, "http://anglebug.com/6439" 259 }; 260 261 FeatureInfo supportsDepthStencilResolve = { 262 "supportsDepthStencilResolve", 263 FeatureCategory::VulkanFeatures, 264 "VkDevice supports the VK_KHR_depth_stencil_resolve " 265 "extension with the independentResolveNone feature", 266 &members, "http://anglebug.com/4836" 267 }; 268 269 FeatureInfo supportsMultisampledRenderToSingleSampledGOOGLEX = { 270 "supportsMultisampledRenderToSingleSampledGOOGLEX", 271 FeatureCategory::VulkanFeatures, 272 "VkDevice supports the VK_GOOGLEX_multisampled_render_to_single_sampled extension", 273 &members, "http://anglebug.com/4836" 274 }; 275 276 FeatureInfo supportsMultisampledRenderToSingleSampled = { 277 "supportsMultisampledRenderToSingleSampled", 278 FeatureCategory::VulkanFeatures, 279 "VkDevice supports the VK_EXT_multisampled_render_to_single_sampled extension", 280 &members, "http://anglebug.com/4836" 281 }; 282 283 FeatureInfo supportsMultiview = { 284 "supportsMultiview", 285 FeatureCategory::VulkanFeatures, 286 "VkDevice supports the VK_KHR_multiview extension", 287 &members, "http://anglebug.com/6048" 288 }; 289 290 FeatureInfo forceD16TexFilter = { 291 "forceD16TexFilter", 292 FeatureCategory::VulkanWorkarounds, 293 "VK_FORMAT_D16_UNORM does not support VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT, " 294 "which prevents OES_depth_texture from being supported.", 295 &members, "http://anglebug.com/3452" 296 }; 297 298 FeatureInfo disableFlippingBlitWithCommand = { 299 "disableFlippingBlitWithCommand", 300 FeatureCategory::VulkanWorkarounds, 301 "vkCmdBlitImage with flipped coordinates blits incorrectly.", 302 &members, "http://anglebug.com/3498" 303 }; 304 305 FeatureInfo perFrameWindowSizeQuery = { 306 "perFrameWindowSizeQuery", 307 FeatureCategory::VulkanWorkarounds, 308 "Vulkan swapchain is not returning VK_ERROR_OUT_OF_DATE when window resizing", 309 &members, "http://anglebug.com/3623, http://anglebug.com/3624, http://anglebug.com/3625" 310 }; 311 312 FeatureInfo padBuffersToMaxVertexAttribStride = { 313 "padBuffersToMaxVertexAttribStride", 314 FeatureCategory::VulkanWorkarounds, 315 "Vulkan considers vertex attribute accesses to count up to the last multiple of the " 316 "stride. This additional access supports AMD's robust buffer access implementation. " 317 "AMDVLK in particular will return incorrect values when the vertex access extends into " 318 "the range that would be the stride padding and the buffer is too small. " 319 "This workaround limits GL_MAX_VERTEX_ATTRIB_STRIDE to a maximum value and " 320 "pads up every buffer allocation size to be a multiple of the maximum stride.", 321 &members, "http://anglebug.com/4428" 322 }; 323 324 FeatureInfo supportsExternalMemoryDmaBufAndModifiers = { 325 "supportsExternalMemoryDmaBufAndModifiers", 326 FeatureCategory::VulkanFeatures, 327 "VkDevice supports the VK_EXT_external_memory_dma_buf and VK_EXT_image_drm_format_modifier " 328 "extensions", 329 &members, "http://anglebug.com/6248" 330 }; 331 332 FeatureInfo supportsExternalMemoryHost = { 333 "supportsExternalMemoryHost", 334 FeatureCategory::VulkanFeatures, 335 "VkDevice supports the VK_EXT_external_memory_host extension", 336 &members, 337 }; 338 339 FeatureInfo allocateNonZeroMemory = { 340 "allocateNonZeroMemory", 341 FeatureCategory::VulkanFeatures, 342 "Fill new allocations with non-zero values to flush out errors.", 343 &members, "http://anglebug.com/4384" 344 }; 345 346 FeatureInfo logMemoryReportCallbacks = { 347 "logMemoryReportCallbacks", 348 FeatureCategory::VulkanFeatures, 349 "Log each callback from VK_EXT_device_memory_report", 350 &members, 351 }; 352 353 FeatureInfo logMemoryReportStats = { 354 "logMemoryReportStats", 355 FeatureCategory::VulkanFeatures, 356 "Log stats from VK_EXT_device_memory_report each swap", 357 &members, 358 }; 359 360 FeatureInfo preferCPUForBufferSubData = { 361 "preferCPUForBufferSubData", 362 FeatureCategory::VulkanFeatures, 363 "Prefer use CPU to do bufferSubData instead of staged update.", 364 &members, "http://issuetracker.google.com/200067929" 365 }; 366 367 FeatureInfo persistentlyMappedBuffers = { 368 "persistentlyMappedBuffers", 369 FeatureCategory::VulkanFeatures, 370 "Persistently map buffer memory to reduce map/unmap IOCTL overhead.", 371 &members, "http://anglebug.com/2162" 372 }; 373 374 FeatureInfo enablePreRotateSurfaces = { 375 "enablePreRotateSurfaces", 376 FeatureCategory::VulkanFeatures, 377 "Enable Android pre-rotation for landscape applications", 378 &members, "http://anglebug.com/3502" 379 }; 380 381 FeatureInfo enablePrecisionQualifiers = { 382 "enablePrecisionQualifiers", 383 FeatureCategory::VulkanFeatures, 384 "Enable precision qualifiers in shaders", 385 &members, "http://anglebug.com/3078" 386 }; 387 388 FeatureInfo varyingsRequireMatchingPrecisionInSpirv = { 389 "varyingsRequireMatchingPrecisionInSpirv", 390 FeatureCategory::VulkanWorkarounds, 391 "Add additional SPIRV instructions to make sure precision " 392 "between shader stages match with each other", 393 &members, "http://anglebug.com/7488" 394 }; 395 396 FeatureInfo preferAggregateBarrierCalls = { 397 "preferAggregateBarrierCalls", 398 FeatureCategory::VulkanWorkarounds, 399 "Single barrier call is preferred over multiple calls with " 400 "fine grained pipeline stage dependency information", 401 &members, "http://anglebug.com/4633" 402 }; 403 404 FeatureInfo preferSkippingInvalidateForEmulatedFormats = { 405 "preferSkippingInvalidateForEmulatedFormats", 406 FeatureCategory::VulkanWorkarounds, 407 "Skipping invalidate is preferred for emulated formats that have extra channels over " 408 "re-clearing the image", 409 &members, "http://anglebug.com/6860" 410 }; 411 412 FeatureInfo asyncCommandQueue = { 413 "asyncCommandQueue", 414 FeatureCategory::VulkanFeatures, 415 "Use CommandQueue worker thread to dispatch work to GPU.", 416 &members, "http://anglebug.com/4324" 417 }; 418 419 FeatureInfo slowAsyncCommandQueueForTesting = { 420 "slowAsyncCommandQueueForTesting", 421 FeatureCategory::VulkanWorkarounds, 422 "Artificially slow down async command queue for threading testing", 423 &members, "https://anglebug.com/6574" 424 }; 425 426 FeatureInfo supportsShaderFloat16 = { 427 "supportsShaderFloat16", 428 FeatureCategory::VulkanFeatures, 429 "VkDevice supports the VK_KHR_shader_float16_int8 extension " 430 "and has the shaderFloat16 feature", 431 &members, "http://anglebug.com/4551" 432 }; 433 434 FeatureInfo allowGenerateMipmapWithCompute = { 435 "allowGenerateMipmapWithCompute", 436 FeatureCategory::VulkanFeatures, 437 "Use the compute path to generate mipmaps on devices that meet the minimum requirements, " 438 "and the performance is better.", 439 &members, "http://anglebug.com/4551" 440 }; 441 442 FeatureInfo supportsRenderPassStoreOpNone = { 443 "supportsRenderPassStoreOpNone", 444 FeatureCategory::VulkanFeatures, 445 "VkDevice supports VK_QCOM_render_pass_store_ops extension.", 446 &members, "http://anglebug.com/5055" 447 }; 448 449 FeatureInfo supportsRenderPassLoadStoreOpNone = { 450 "supportsRenderPassLoadStoreOpNone", 451 FeatureCategory::VulkanFeatures, 452 "VkDevice supports VK_EXT_load_store_op_none extension.", 453 &members, "http://anglebug.com/5371" 454 }; 455 456 FeatureInfo disallowMixedDepthStencilLoadOpNoneAndLoad = { 457 "disallowMixedDepthStencilLoadOpNoneAndLoad", 458 FeatureCategory::VulkanWorkarounds, 459 "Disallow use of LOAD_OP_NONE for only one of the depth or stencil aspects of a " 460 "depth/stencil attachment", 461 &members, "http://anglebug.com/7370" 462 }; 463 464 FeatureInfo supportsDepthClipControl = { 465 "supportsDepthClipControl", 466 FeatureCategory::VulkanFeatures, 467 "VkDevice supports VK_EXT_depth_clip_control extension.", 468 &members, "http://anglebug.com/5421" 469 }; 470 471 FeatureInfo supportsPrimitiveTopologyListRestart = { 472 "supportsPrimitiveTopologyListRestart", 473 FeatureCategory::VulkanFeatures, 474 "VkDevice supports VK_EXT_primitive_topology_list_restart extension.", 475 &members, "http://anglebug.com/3832" 476 }; 477 478 FeatureInfo supportsBlendOperationAdvanced = { 479 "supportsBlendOperationAdvanced", 480 FeatureCategory::VulkanFeatures, 481 "VkDevice supports VK_EXT_blend_operation_advanced extension.", 482 &members, "http://anglebug.com/3586" 483 }; 484 485 FeatureInfo forceMaxUniformBufferSize16KB = { 486 "forceMaxUniformBufferSize16KB", 487 FeatureCategory::VulkanWorkarounds, 488 "Force max uniform buffer size to 16K on some device due to bug", 489 &members, "https://issuetracker.google.com/161903006" 490 }; 491 492 FeatureInfo supportsImageFormatList = { 493 "supportsImageFormatList", 494 FeatureCategory::VulkanFeatures, 495 "Enable VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT by default for ICDs " 496 "that support VK_KHR_image_format_list", 497 &members, "http://anglebug.com/5281" 498 }; 499 500 FeatureInfo enableMultisampledRenderToTexture = { 501 "enableMultisampledRenderToTexture", 502 FeatureCategory::VulkanWorkarounds, 503 "Expose EXT_multisampled_render_to_texture", 504 &members, "http://anglebug.com/4937" 505 }; 506 507 FeatureInfo deferFlushUntilEndRenderPass = { 508 "deferFlushUntilEndRenderPass", 509 FeatureCategory::VulkanWorkarounds, 510 "Allow glFlush to be deferred until renderpass ends", 511 &members, "https://issuetracker.google.com/issues/166475273" 512 }; 513 514 FeatureInfo waitIdleBeforeSwapchainRecreation = { 515 "waitIdleBeforeSwapchainRecreation", 516 FeatureCategory::VulkanWorkarounds, 517 "Before passing an oldSwapchain to VkSwapchainCreateInfoKHR, wait for queue to be idle. " 518 "Works around a bug on platforms which destroy oldSwapchain in vkCreateSwapchainKHR.", 519 &members, "http://anglebug.com/5061" 520 }; 521 522 FeatureInfo forceTextureLodOffset1 = { 523 "forceTextureLodOffset1", 524 FeatureCategory::VulkanWorkarounds, 525 "Increase the minimum texture level-of-detail by 1 when sampling.", 526 &members, 527 }; 528 529 FeatureInfo forceTextureLodOffset2 = { 530 "forceTextureLodOffset2", 531 FeatureCategory::VulkanWorkarounds, 532 "Increase the minimum texture level-of-detail by 2 when sampling.", 533 &members, 534 }; 535 536 FeatureInfo forceTextureLodOffset3 = { 537 "forceTextureLodOffset3", 538 FeatureCategory::VulkanWorkarounds, 539 "Increase the minimum texture level-of-detail by 3 when sampling.", 540 &members, 541 }; 542 543 FeatureInfo forceTextureLodOffset4 = { 544 "forceTextureLodOffset4", 545 FeatureCategory::VulkanWorkarounds, 546 "Increase the minimum texture level-of-detail by 4 when sampling.", 547 &members, 548 }; 549 550 FeatureInfo forceNearestFiltering = { 551 "forceNearestFiltering", 552 FeatureCategory::VulkanWorkarounds, 553 "Force nearest filtering when sampling.", 554 &members, 555 }; 556 557 FeatureInfo forceNearestMipFiltering = { 558 "forceNearestMipFiltering", 559 FeatureCategory::VulkanWorkarounds, 560 "Force nearest mip filtering when sampling.", 561 &members, 562 }; 563 564 FeatureInfo compressVertexData = { 565 "compressVertexData", 566 FeatureCategory::VulkanWorkarounds, 567 "Compress vertex data to smaller data types when " 568 "possible. Using this feature makes ANGLE non-conformant.", 569 &members, 570 }; 571 572 FeatureInfo preferDrawClearOverVkCmdClearAttachments = { 573 "preferDrawClearOverVkCmdClearAttachments", 574 FeatureCategory::VulkanWorkarounds, 575 "On some hardware, clear using a draw call instead of vkCmdClearAttachments in the middle " 576 "of render pass due to bugs", 577 &members, "https://issuetracker.google.com/166809097" 578 }; 579 580 FeatureInfo emulatedPrerotation90 = { 581 "emulatedPrerotation90", 582 FeatureCategory::VulkanFeatures, 583 "Emulate 90-degree prerotation.", 584 &members, "http://anglebug.com/4901" 585 }; 586 587 FeatureInfo emulatedPrerotation180 = { 588 "emulatedPrerotation180", 589 FeatureCategory::VulkanFeatures, 590 "Emulate 180-degree prerotation.", 591 &members, "http://anglebug.com/4901" 592 }; 593 594 FeatureInfo emulatedPrerotation270 = { 595 "emulatedPrerotation270", 596 FeatureCategory::VulkanFeatures, 597 "Emulate 270-degree prerotation.", 598 &members, "http://anglebug.com/4901" 599 }; 600 601 FeatureInfo preferDriverUniformOverSpecConst = { 602 "preferDriverUniformOverSpecConst", 603 FeatureCategory::VulkanFeatures, 604 "Prefer using driver uniforms instead of specialization constants.", 605 &members, "http://anglebug.com/7406" 606 }; 607 608 FeatureInfo exposeNonConformantExtensionsAndVersions = { 609 "exposeNonConformantExtensionsAndVersions", 610 FeatureCategory::VulkanWorkarounds, 611 "Expose GLES versions and extensions that are not conformant.", 612 &members, "http://anglebug.com/5375" 613 }; 614 615 FeatureInfo emulateR32fImageAtomicExchange = { 616 "emulateR32fImageAtomicExchange", 617 FeatureCategory::VulkanWorkarounds, 618 "Emulate r32f images with r32ui to support imageAtomicExchange.", 619 &members, "http://anglebug.com/5535" 620 }; 621 622 FeatureInfo supportsNegativeViewport = { 623 "supportsNegativeViewport", 624 FeatureCategory::VulkanFeatures, 625 "The driver supports inverting the viewport with a negative height.", 626 &members, 627 }; 628 629 FeatureInfo forceFragmentShaderPrecisionHighpToMediump = { 630 "forceFragmentShaderPrecisionHighpToMediump", 631 FeatureCategory::VulkanWorkarounds, 632 "Forces highp precision in fragment shader to mediump.", 633 &members, "https://issuetracker.google.com/184850002" 634 }; 635 636 FeatureInfo preferSubmitAtFBOBoundary = { 637 "preferSubmitAtFBOBoundary", 638 FeatureCategory::VulkanWorkarounds, 639 "Submit commands to driver at each FBO boundary for performance improvements.", 640 &members, "https://issuetracker.google.com/187425444" 641 }; 642 643 FeatureInfo useMultipleDescriptorsForExternalFormats = { 644 "useMultipleDescriptorsForExternalFormats", 645 FeatureCategory::VulkanWorkarounds, 646 "Return a default descriptor count for external formats.", 647 &members, "http://anglebug.com/6141" 648 }; 649 650 FeatureInfo supportsProtectedMemory = { 651 "supportsProtectedMemory", 652 FeatureCategory::VulkanFeatures, 653 "VkDevice supports protected memory", 654 &members, "http://anglebug.com/3965" 655 }; 656 657 FeatureInfo supportsHostQueryReset = { 658 "supportsHostQueryReset", 659 FeatureCategory::VulkanFeatures, 660 "VkDevice supports VK_EXT_host_query_reset extension", 661 &members, "http://anglebug.com/6692" 662 }; 663 664 FeatureInfo supportsPipelineCreationCacheControl = { 665 "supportsPipelineCreationCacheControl", 666 FeatureCategory::VulkanFeatures, 667 "VkDevice supports VK_EXT_pipeline_creation_cache_control extension", 668 &members, "http://anglebug.com/5881" 669 }; 670 671 FeatureInfo supportsPipelineCreationFeedback = { 672 "supportsPipelineCreationFeedback", 673 FeatureCategory::VulkanFeatures, 674 "VkDevice supports VK_EXT_pipeline_creation_feedback extension", 675 &members, "http://anglebug.com/5881" 676 }; 677 678 FeatureInfo supportsPrimitivesGeneratedQuery = { 679 "supportsPrimitivesGeneratedQuery", 680 FeatureCategory::VulkanFeatures, 681 "VkDevice supports VK_EXT_primitives_generated_query extension", 682 &members, "http://anglebug.com/5430" 683 }; 684 685 FeatureInfo supportsSurfaceCapabilities2Extension = { 686 "supportsSurfaceCapabilities2Extension", 687 FeatureCategory::VulkanFeatures, 688 "VkInstance supports the VK_KHR_get_surface_capabilities2 extension", 689 &members, 690 }; 691 692 FeatureInfo supportsSurfaceProtectedCapabilitiesExtension = { 693 "supportsSurfaceProtectedCapabilitiesExtension", 694 FeatureCategory::VulkanFeatures, 695 "VkInstance supports the VK_KHR_surface_protected_capabilities extension", 696 &members, 697 }; 698 699 FeatureInfo supportsSurfacelessQueryExtension = { 700 "supportsSurfacelessQueryExtension", 701 FeatureCategory::VulkanFeatures, 702 "VkInstance supports the VK_GOOGLE_surfaceless_query extension", 703 &members, 704 }; 705 706 FeatureInfo supportsSurfaceProtectedSwapchains = { 707 "supportsSurfaceProtectedSwapchains", 708 FeatureCategory::VulkanFeatures, 709 "VkSurface supportsProtected for protected swapchains", 710 &members, 711 }; 712 713 FeatureInfo overrideSurfaceFormatRGB8ToRGBA8 = { 714 "overrideSurfaceFormatRGB8ToRGBA8", 715 FeatureCategory::VulkanWorkarounds, 716 "Override surface format GL_RGB8 to GL_RGBA8", 717 &members, "http://anglebug.com/6651" 718 }; 719 720 FeatureInfo supportsSharedPresentableImageExtension = { 721 "supportsSharedPresentableImageExtension", 722 FeatureCategory::VulkanFeatures, 723 "VkSurface supports the VK_KHR_shared_presentable_images extension", 724 &members, 725 }; 726 727 FeatureInfo supportsShaderFramebufferFetch = { 728 "supportsShaderFramebufferFetch", 729 FeatureCategory::VulkanFeatures, 730 "Whether the Vulkan backend supports coherent framebuffer fetch", 731 &members, 732 }; 733 734 FeatureInfo supportsShaderFramebufferFetchNonCoherent = { 735 "supportsShaderFramebufferFetchNonCoherent", 736 FeatureCategory::VulkanFeatures, 737 "Whether the Vulkan backend supports non-coherent framebuffer fetch", 738 &members, 739 }; 740 741 FeatureInfo permanentlySwitchToFramebufferFetchMode = { 742 "permanentlySwitchToFramebufferFetchMode", 743 FeatureCategory::VulkanFeatures, 744 "Whether the context should permanently switch to framebuffer fetch mode on first " 745 "encounter", 746 &members, 747 }; 748 749 FeatureInfo supportsLockSurfaceExtension = { 750 "supportsLockSurfaceExtension", 751 FeatureCategory::VulkanFeatures, 752 "Surface supports the EGL_KHR_lock_surface3 extension", 753 &members, 754 }; 755 756 FeatureInfo swapbuffersOnFlushOrFinishWithSingleBuffer = { 757 "swapbuffersOnFlushOrFinishWithSingleBuffer", 758 FeatureCategory::VulkanFeatures, 759 "Bypass deferredFlush with calling swapbuffers on flush or finish when in Shared " 760 "Present mode", 761 &members, "http://anglebug.com/6878" 762 }; 763 764 FeatureInfo emulateDithering = { 765 "emulateDithering", 766 FeatureCategory::VulkanFeatures, 767 "Emulate OpenGL dithering", 768 &members, "http://anglebug.com/6755" 769 }; 770 771 FeatureInfo roundOutputAfterDithering = { 772 "roundOutputAfterDithering", 773 FeatureCategory::VulkanWorkarounds, 774 "Round output after dithering to workaround a driver bug that rounds the output up", 775 &members, "http://anglebug.com/6953" 776 }; 777 778 FeatureInfo emulateAdvancedBlendEquations = { 779 "emulateAdvancedBlendEquations", 780 FeatureCategory::VulkanFeatures, 781 "Emulate GL_KHR_blend_equation_advanced", 782 &members, "http://anglebug.com/3586" 783 }; 784 785 FeatureInfo doubleDepthBiasConstantFactor = { 786 "doubleDepthBiasConstantFactor", 787 FeatureCategory::VulkanWorkarounds, 788 "Due to a Vulkan spec ambiguity, some drivers interpret depthBiasConstantFactor as half " 789 "the expected value", 790 &members, 791 }; 792 793 FeatureInfo bottomLeftOriginPresentRegionRectangles = { 794 "bottomLeftOriginPresentRegionRectangles", 795 FeatureCategory::VulkanWorkarounds, 796 "On some platforms present region rectangles are expected to have a bottom-left origin, " 797 "instead of top-left origin as from spec", 798 &members, 799 }; 800 801 FeatureInfo forceSubmitImmutableTextureUpdates = { 802 "forceSubmitImmutableTextureUpdates", 803 FeatureCategory::VulkanAppWorkarounds, 804 "Force submit updates to immutable textures", 805 &members, "http://anglebug.com/6929" 806 }; 807 808 FeatureInfo retainSPIRVDebugInfo = { 809 "retainSPIRVDebugInfo", 810 FeatureCategory::VulkanFeatures, 811 "Retain debug info in SPIR-V blob.", 812 &members, "http://anglebug.com/5901" 813 }; 814 815 FeatureInfo warmUpPipelineCacheAtLink = { 816 "warmUpPipelineCacheAtLink", 817 FeatureCategory::VulkanFeatures, 818 "Warm up the Vulkan pipeline cache at link time", 819 &members, "http://anglebug.com/5881" 820 }; 821 822 FeatureInfo preferDeviceLocalMemoryHostVisible = { 823 "preferDeviceLocalMemoryHostVisible", 824 FeatureCategory::VulkanFeatures, 825 "Prefer adding HOST_VISIBLE flag for DEVICE_LOCAL memory when picking memory types", 826 &members, "http://anglebug.com/7047" 827 }; 828 829 FeatureInfo supportsExtendedDynamicState = { 830 "supportsExtendedDynamicState", 831 FeatureCategory::VulkanFeatures, 832 "VkDevice supports VK_EXT_extended_dynamic_state extension", 833 &members, "http://anglebug.com/5906" 834 }; 835 836 FeatureInfo useVertexInputBindingStrideDynamicState = { 837 "useVertexInputBindingStrideDynamicState", 838 FeatureCategory::VulkanWorkarounds, 839 "Use the Vertex Input Bininding Stride dynamic state from VK_EXT_extended_dynamic_state", 840 &members, "http://anglebug.com/5906" 841 }; 842 843 FeatureInfo useCullModeDynamicState = { 844 "useCullModeDynamicState", 845 FeatureCategory::VulkanWorkarounds, 846 "Use the Cull Mode dynamic state from VK_EXT_extended_dynamic_state", 847 &members, "http://anglebug.com/5906" 848 }; 849 850 FeatureInfo useFrontFaceDynamicState = { 851 "useFrontFaceDynamicState", 852 FeatureCategory::VulkanWorkarounds, 853 "Use the Front Face dynamic state from VK_EXT_extended_dynamic_state", 854 &members, "http://anglebug.com/5906" 855 }; 856 857 FeatureInfo useDepthTestEnableDynamicState = { 858 "useDepthTestEnableDynamicState", 859 FeatureCategory::VulkanWorkarounds, 860 "Use the Depth Test Enable dynamic state from VK_EXT_extended_dynamic_state", 861 &members, "http://anglebug.com/5906" 862 }; 863 864 FeatureInfo useDepthWriteEnableDynamicState = { 865 "useDepthWriteEnableDynamicState", 866 FeatureCategory::VulkanWorkarounds, 867 "Use the Depth Write Enable dynamic state from VK_EXT_extended_dynamic_state", 868 &members, "http://anglebug.com/5906" 869 }; 870 871 FeatureInfo useDepthCompareOpDynamicState = { 872 "useDepthCompareOpDynamicState", 873 FeatureCategory::VulkanWorkarounds, 874 "Use the Depth Compare Op dynamic state from VK_EXT_extended_dynamic_state", 875 &members, "http://anglebug.com/5906" 876 }; 877 878 FeatureInfo useStencilTestEnableDynamicState = { 879 "useStencilTestEnableDynamicState", 880 FeatureCategory::VulkanWorkarounds, 881 "Use the Stencil Test Enable dynamic state from VK_EXT_extended_dynamic_state", 882 &members, "http://anglebug.com/5906" 883 }; 884 885 FeatureInfo useStencilOpDynamicState = { 886 "useStencilOpDynamicState", 887 FeatureCategory::VulkanWorkarounds, 888 "Use the Stencil Op dynamic state from VK_EXT_extended_dynamic_state", 889 &members, "http://anglebug.com/5906" 890 }; 891 892 FeatureInfo supportsExtendedDynamicState2 = { 893 "supportsExtendedDynamicState2", 894 FeatureCategory::VulkanFeatures, 895 "VkDevice supports VK_EXT_extended_dynamic_state2 extension", 896 &members, "http://anglebug.com/5906" 897 }; 898 899 FeatureInfo usePrimitiveRestartEnableDynamicState = { 900 "usePrimitiveRestartEnableDynamicState", 901 FeatureCategory::VulkanWorkarounds, 902 "Use the Primitive Restart Enable dynamic state from VK_EXT_extended_dynamic_state2", 903 &members, "http://anglebug.com/5906" 904 }; 905 906 FeatureInfo useRasterizerDiscardEnableDynamicState = { 907 "useRasterizerDiscardEnableDynamicState", 908 FeatureCategory::VulkanWorkarounds, 909 "Use the Rasterizer Discard Enable dynamic state from VK_EXT_extended_dynamic_state2", 910 &members, "http://anglebug.com/5906" 911 }; 912 913 FeatureInfo useDepthBiasEnableDynamicState = { 914 "useDepthBiasEnableDynamicState", 915 FeatureCategory::VulkanWorkarounds, 916 "Use the Depth Bias Enable dynamic state from VK_EXT_extended_dynamic_state2", 917 &members, "http://anglebug.com/5906" 918 }; 919 920 FeatureInfo supportsLogicOpDynamicState = { 921 "supportsLogicOpDynamicState", 922 FeatureCategory::VulkanFeatures, 923 "VkDevice supports the logicOp feature of VK_EXT_extended_dynamic_state2 extension", 924 &members, "http://anglebug.com/3862" 925 }; 926 927 FeatureInfo supportsFragmentShadingRate = { 928 "supportsFragmentShadingRate", 929 FeatureCategory::VulkanFeatures, 930 "VkDevice supports VK_KHR_fragment_shading_rate extension", 931 &members, "http://anglebug.com/7172" 932 }; 933 934 FeatureInfo supportsFragmentShaderPixelInterlock = { 935 "supportsFragmentShaderPixelInterlock", 936 FeatureCategory::VulkanFeatures, 937 "VkDevice supports the VK_EXT_fragment_shader_interlock extension " 938 "and has the fragmentShaderPixelInterlock feature", 939 &members, 940 }; 941 942 FeatureInfo explicitlyEnablePerSampleShading = { 943 "explicitlyEnablePerSampleShading", 944 FeatureCategory::VulkanWorkarounds, 945 "Explicitly enable per-sample shading if the fragment shader contains the " 946 "sample qualifier", 947 &members, "http://anglebug.com/6876" 948 }; 949 950 FeatureInfo explicitlyCastMediumpFloatTo16Bit = { 951 "explicitlyCastMediumpFloatTo16Bit", 952 FeatureCategory::VulkanWorkarounds, 953 "Explicitly cast mediump floating point values to 16 bit", 954 &members, "https://issuetracker.google.com/274859104" 955 }; 956 957 FeatureInfo forceContinuousRefreshOnSharedPresent = { 958 "forceContinuousRefreshOnSharedPresent", 959 FeatureCategory::VulkanFeatures, 960 "Force to create vulkan swapchain with continuous refresh on shared present", 961 &members, "https://issuetracker.google.com/229267970" 962 }; 963 964 FeatureInfo supportsImage2dViewOf3d = { 965 "supportsImage2dViewOf3d", 966 FeatureCategory::VulkanFeatures, 967 "VkDevice supports VK_EXT_image_2d_view_of_3d", 968 &members, "https://anglebug.com/7320" 969 }; 970 971 FeatureInfo supportsSampler2dViewOf3d = { 972 "supportsSampler2dViewOf3d", 973 FeatureCategory::VulkanFeatures, 974 "VkDevice supports the sampler2DViewOf3D feature of VK_EXT_image_2d_view_of_3d", 975 &members, "https://anglebug.com/7320" 976 }; 977 978 FeatureInfo supportsImagelessFramebuffer = { 979 "supportsImagelessFramebuffer", 980 FeatureCategory::VulkanFeatures, 981 "VkDevice supports VK_KHR_imageless_framebuffer extension", 982 &members, "http://anglebug.com/7553" 983 }; 984 985 FeatureInfo preferLinearFilterForYUV = { 986 "preferLinearFilterForYUV", 987 FeatureCategory::VulkanFeatures, 988 "Prefer to use VK_FILTER_LINEAR for VkSamplerYcbcrConversion", 989 &members, "https://anglebug.com/7382" 990 }; 991 992 FeatureInfo supportsYuvTarget = { 993 "supportsYuvTarget", 994 FeatureCategory::VulkanFeatures, 995 "VkDevice supports VK_ANDROID_render_to_external_format and VK_EXT_ycbcr_attachment", 996 &members, 997 }; 998 999 FeatureInfo useNonZeroStencilWriteMaskStaticState = { 1000 "useNonZeroStencilWriteMaskStaticState", 1001 FeatureCategory::VulkanWorkarounds, 1002 "Work around a driver bug where 0 in stencil write mask static state would make the " 1003 "corresponding dynamic state malfunction in the presence of discard or alpha to coverage", 1004 &members, "http://anglebug.com/7556" 1005 }; 1006 1007 FeatureInfo mapUnspecifiedColorSpaceToPassThrough = { 1008 "mapUnspecifiedColorSpaceToPassThrough", 1009 FeatureCategory::VulkanFeatures, 1010 "Use VK_COLOR_SPACE_PASS_THROUGH_EXT for EGL_NONE or unspecifed color " 1011 "spaces", 1012 &members, 1013 }; 1014 1015 FeatureInfo supportsTimestampSurfaceAttribute = { 1016 "supportsTimestampSurfaceAttribute", 1017 FeatureCategory::VulkanFeatures, 1018 "Platform supports setting frame timestamp surface attribute", 1019 &members, "https://anglebug.com/7489" 1020 }; 1021 1022 FeatureInfo supportsRasterizationOrderAttachmentAccess = { 1023 "supportsRasterizationOrderAttachmentAccess", 1024 FeatureCategory::VulkanFeatures, 1025 "VkDevice supports VK_EXT_rasterization_order_attachment_access extension", 1026 &members, "https://anglebug.com/7604" 1027 }; 1028 1029 FeatureInfo eglColorspaceAttributePassthrough = { 1030 "eglColorspaceAttributePassthrough", 1031 FeatureCategory::VulkanFeatures, 1032 "Support passthrough of EGL colorspace attribute values", 1033 &members, "https://anglebug.com/7319" 1034 }; 1035 1036 FeatureInfo supportsPipelineRobustness = { 1037 "supportsPipelineRobustness", 1038 FeatureCategory::VulkanFeatures, 1039 "VkDevice supports VK_EXT_pipeline_robustness extension", 1040 &members, "https://anglebug.com/5845" 1041 }; 1042 1043 FeatureInfo supportsVertexInputDynamicState = { 1044 "supportsVertexInputDynamicState", 1045 FeatureCategory::VulkanFeatures, 1046 "VkDevice supports VK_EXT_vertex_input_dynamic_state extension", 1047 &members, "https://anglebug.com/7162" 1048 }; 1049 1050 FeatureInfo supportsColorWriteEnable = { 1051 "supportsColorWriteEnable", 1052 FeatureCategory::VulkanFeatures, 1053 "VkDevice supports VK_EXT_color_write_enable extension", 1054 &members, "https://anglebug.com/7161" 1055 }; 1056 1057 FeatureInfo supportsPresentation = { 1058 "supportsPresentation", 1059 FeatureCategory::VulkanFeatures, 1060 "VkDisplay supports presentation through a present family queue", 1061 &members, 1062 }; 1063 1064 FeatureInfo supportsComputeTranscodeEtcToBc = { 1065 "supportsComputeTranscodeEtcToBc", 1066 FeatureCategory::VulkanFeatures, 1067 "supports compute shader transcode etc format to bc format", 1068 &members, 1069 }; 1070 1071 FeatureInfo supportsGraphicsPipelineLibrary = { 1072 "supportsGraphicsPipelineLibrary", 1073 FeatureCategory::VulkanFeatures, 1074 "VkDevice supports the VK_EXT_graphics_pipeline_library extension", 1075 &members, "https://anglebug.com/7369" 1076 }; 1077 1078 FeatureInfo preferMonolithicPipelinesOverLibraries = { 1079 "preferMonolithicPipelinesOverLibraries", 1080 FeatureCategory::VulkanWorkarounds, 1081 "Whether monolithic pipelines perform significantly better than libraries", 1082 &members, "https://anglebug.com/7369" 1083 }; 1084 1085 FeatureInfo slowDownMonolithicPipelineCreationForTesting = { 1086 "slowDownMonolithicPipelineCreationForTesting", 1087 FeatureCategory::VulkanWorkarounds, 1088 "Artificially slow down async monolithic pipeline creation for threading testing", 1089 &members, "https://anglebug.com/7369" 1090 }; 1091 1092 FeatureInfo syncMonolithicPipelinesToBlobCache = { 1093 "syncMonolithicPipelinesToBlobCache", 1094 FeatureCategory::VulkanWorkarounds, 1095 "Whether it's beneficial to store monolithic pipelines in the blob cache when " 1096 "VK_EXT_graphics_pipeline_library is in use. Otherwise the libraries are stored " 1097 "only, and monolithic pipelines are recreated on every run", 1098 &members, "https://anglebug.com/7369" 1099 }; 1100 1101 FeatureInfo mergeProgramPipelineCachesToGlobalCache = { 1102 "mergeProgramPipelineCachesToGlobalCache", 1103 FeatureCategory::VulkanWorkarounds, 1104 "Whether it's beneficial to merge the pipeline cache for the shaders subset of the " 1105 "pipeline into the monolithic pipeline cache. Only useful on platforms where " 1106 "monolithic pipelines can reuse blobs from partial pipelines", 1107 &members, "https://anglebug.com/7369" 1108 }; 1109 1110 FeatureInfo hasEffectivePipelineCacheSerialization = { 1111 "hasEffectivePipelineCacheSerialization", 1112 FeatureCategory::VulkanFeatures, 1113 "Whether the implementation serializes the Vulkan pipeline cache effectively. " 1114 "On some implementations, pipeline cache serialization returns no data, so there " 1115 "is no benefit to serializing it", 1116 &members, "https://anglebug.com/7369" 1117 }; 1118 1119 FeatureInfo enableAsyncPipelineCacheCompression = { 1120 "enableAsyncPipelineCacheCompression", 1121 FeatureCategory::VulkanWorkarounds, 1122 "Enable compressing pipeline cache in a thread.", 1123 &members, "http://anglebug.com/4722" 1124 }; 1125 1126 FeatureInfo supportsPipelineProtectedAccess = { 1127 "supportsPipelineProtectedAccess", 1128 FeatureCategory::VulkanFeatures, 1129 "VkDevice supports the VK_EXT_pipeline_protected_access extension", 1130 &members, "https://anglebug.com/7714" 1131 }; 1132 1133 FeatureInfo supportsMixedReadWriteDepthStencilLayouts = { 1134 "supportsMixedReadWriteDepthStencilLayouts", 1135 FeatureCategory::VulkanFeatures, 1136 "VkDevice supports the mixed read and write depth/stencil layouts introduced by VK_KHR_maintenance2", 1137 &members, "https://anglebug.com/7899" 1138 }; 1139 1140 FeatureInfo supportsSwapchainMaintenance1 = { 1141 "supportsSwapchainMaintenance1", 1142 FeatureCategory::VulkanFeatures, 1143 "VkDevice supports the VK_EXT_surface_maintenance1 and VK_EXT_swapchain_maintenance1 extensions", 1144 &members, "https://anglebug.com/7847" 1145 }; 1146 1147 FeatureInfo supportsGetMemoryRequirements2 = { 1148 "supportsGetMemoryRequirements2", 1149 FeatureCategory::VulkanFeatures, 1150 "VkDevice supports the VK_KHR_get_memory_requirements2 extension", 1151 &members, "https://anglebug.com/4830" 1152 }; 1153 1154 FeatureInfo supportsBindMemory2 = { 1155 "supportsBindMemory2", 1156 FeatureCategory::VulkanFeatures, 1157 "VkDevice supports the VK_KHR_bind_memory2 extension", 1158 &members, "https://anglebug.com/4966" 1159 }; 1160 1161 FeatureInfo supportsSamplerMirrorClampToEdge = { 1162 "supportsSamplerMirrorClampToEdge", 1163 FeatureCategory::VulkanFeatures, 1164 "VkDevice supports the VK_KHR_sampler_mirror_clamp_to_edge extension", 1165 &members, 1166 }; 1167 1168 FeatureInfo preferSubmitOnAnySamplesPassedQueryEnd = { 1169 "preferSubmitOnAnySamplesPassedQueryEnd", 1170 FeatureCategory::VulkanWorkarounds, 1171 "Submit commands to driver when last GL_ANY_SAMPLES_PASSED query is made for performance improvements.", 1172 &members, "https://issuetracker.google.com/250706693" 1173 }; 1174 1175 FeatureInfo forceWaitForSubmissionToCompleteForQueryResult = { 1176 "forceWaitForSubmissionToCompleteForQueryResult", 1177 FeatureCategory::VulkanWorkarounds, 1178 "Force wait for submission to complete before calling getQueryResult(wait).", 1179 &members, "https://issuetracker.google.com/253522366" 1180 }; 1181 1182 FeatureInfo asyncCommandBufferReset = { 1183 "asyncCommandBufferReset", 1184 FeatureCategory::VulkanFeatures, 1185 "Reset command buffer in async thread.", 1186 &members, "https://issuetracker.google.com/255411748" 1187 }; 1188 1189 FeatureInfo useResetCommandBufferBitForSecondaryPools = { 1190 "useResetCommandBufferBitForSecondaryPools", 1191 FeatureCategory::VulkanWorkarounds, 1192 "Use VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT for initializing " 1193 "SecondaryCommandPools when using VulkanSecondaryCommandBuffer. ", 1194 &members, 1195 }; 1196 1197 FeatureInfo enablePipelineCacheDataCompression = { 1198 "enablePipelineCacheDataCompression", 1199 FeatureCategory::VulkanFeatures, 1200 "enable pipeline cache data compression.", 1201 &members, "https://issuetracker.google.com/258207403" 1202 }; 1203 1204 FeatureInfo supportsLegacyDithering = { 1205 "supportsLegacyDithering", 1206 FeatureCategory::VulkanFeatures, 1207 "VkDevice supports the VK_EXT_legacy_dithering extension", 1208 &members, "https://issuetracker.google.com/284462263" 1209 }; 1210 1211 FeatureInfo limitSampleCountTo2 = { 1212 "limitSampleCountTo2", 1213 FeatureCategory::VulkanWorkarounds, 1214 "Limit sample count to 2 to save memory on low end devices.", 1215 &members, "http://anglebug.com/8162" 1216 }; 1217 1218 FeatureInfo supportsFullScreenExclusive = { 1219 "supportsFullScreenExclusive", 1220 FeatureCategory::VulkanFeatures, 1221 "VkDevice supports the VK_EXT_full_screen_exclusive extension", 1222 &members, "http://anglebug.com/8215" 1223 }; 1224 1225 FeatureInfo forceDisableFullScreenExclusive = { 1226 "forceDisableFullScreenExclusive", 1227 FeatureCategory::VulkanWorkarounds, 1228 "Device needs VK_EXT_full_screen_exclusive explicitly disabled", 1229 &members, "http://anglebug.com/8215" 1230 }; 1231 1232 FeatureInfo supportsPortabilityEnumeration = { 1233 "supportsPortabilityEnumeration", 1234 FeatureCategory::VulkanFeatures, 1235 "Vulkan supports VK_KHR_portability_enumeration extension", 1236 &members, "http://anglebug.com/8229" 1237 }; 1238 1239 FeatureInfo enablePortabilityEnumeration = { 1240 "enablePortabilityEnumeration", 1241 FeatureCategory::VulkanWorkarounds, 1242 "Enable use of VK_KHR_portability_enumeration extension", 1243 &members, "http://anglebug.com/8229" 1244 }; 1245 1246 FeatureInfo supportsTimelineSemaphore = { 1247 "supportsTimelineSemaphore", 1248 FeatureCategory::VulkanFeatures, 1249 "VkDevice supports the VK_KHR_timeline_semaphore extension", 1250 &members, 1251 }; 1252 1253 }; 1254 1255 inline FeaturesVk::FeaturesVk() = default; 1256 inline FeaturesVk::~FeaturesVk() = default; 1257 1258 } // namespace angle 1259 1260 #endif // ANGLE_PLATFORM_AUTOGEN_FEATURESVK_H_ 1261