FeaturesVk_autogen.h (35192B)
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_FEATURESVK_H_ 11 #define ANGLE_PLATFORM_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 bresenhamLineRasterization = { 24 "bresenhamLineRasterization", 25 FeatureCategory::VulkanFeatures, 26 "Enable Bresenham line rasterization via VK_EXT_line_rasterization extension", 27 &members, 28 }; 29 30 FeatureInfo provokingVertex = { 31 "provokingVertex", 32 FeatureCategory::VulkanFeatures, 33 "Enable provoking vertex mode via VK_EXT_provoking_vertex extension", 34 &members, 35 }; 36 37 FeatureInfo forceFallbackFormat = { 38 "forceFallbackFormat", 39 FeatureCategory::VulkanWorkarounds, 40 "Force a fallback format for angle_end2end_tests", 41 &members, 42 }; 43 44 FeatureInfo clampPointSize = { 45 "clampPointSize", FeatureCategory::VulkanWorkarounds, 46 "The point size range reported from the API is inconsistent with the actual behavior", 47 &members, "http://anglebug.com/2970"}; 48 49 FeatureInfo depthClamping = { 50 "depthClamping", FeatureCategory::VulkanWorkarounds, 51 "The depth value is not clamped to [0,1] for floating point depth buffers.", &members, 52 "http://anglebug.com/3970"}; 53 54 FeatureInfo mutableMipmapTextureUpload = { 55 "mutableMipmapTextureUpload", FeatureCategory::VulkanFeatures, 56 "Enable uploading the previously defined mutable mipmap texture.", &members, 57 "https://anglebug.com/7308"}; 58 59 FeatureInfo supportsRenderpass2 = { 60 "supportsRenderpass2", 61 FeatureCategory::VulkanFeatures, 62 "VkDevice supports the VK_KHR_create_renderpass2 extension", 63 &members, 64 }; 65 66 FeatureInfo supportsIncrementalPresent = { 67 "supportsIncrementalPresent", 68 FeatureCategory::VulkanFeatures, 69 "VkDevice supports the VK_KHR_incremental_present extension", 70 &members, 71 }; 72 73 FeatureInfo supportsAndroidHardwareBuffer = { 74 "supportsAndroidHardwareBuffer", 75 FeatureCategory::VulkanFeatures, 76 "VkDevice supports the VK_ANDROID_external_memory_android_hardware_buffer extension", 77 &members, 78 }; 79 80 FeatureInfo supportsGGPFrameToken = { 81 "supportsGGPFrameToken", 82 FeatureCategory::VulkanFeatures, 83 "VkDevice supports the VK_GGP_frame_token extension", 84 &members, 85 }; 86 87 FeatureInfo supportsExternalMemoryFd = { 88 "supportsExternalMemoryFd", 89 FeatureCategory::VulkanFeatures, 90 "VkDevice supports the VK_KHR_external_memory_fd extension", 91 &members, 92 }; 93 94 FeatureInfo supportsExternalMemoryFuchsia = { 95 "supportsExternalMemoryFuchsia", 96 FeatureCategory::VulkanFeatures, 97 "VkDevice supports the VK_FUCHSIA_external_memory extension", 98 &members, 99 }; 100 101 FeatureInfo supportsFilteringPrecision = { 102 "supportsFilteringPrecision", 103 FeatureCategory::VulkanFeatures, 104 "VkDevice supports the VK_GOOGLE_sampler_filtering_precision extension", 105 &members, 106 }; 107 108 FeatureInfo supportsExternalFenceCapabilities = { 109 "supportsExternalFenceCapabilities", 110 FeatureCategory::VulkanFeatures, 111 "VkInstance supports the VK_KHR_external_fence_capabilities extension", 112 &members, 113 }; 114 115 FeatureInfo supportsExternalSemaphoreCapabilities = { 116 "supportsExternalSemaphoreCapabilities", 117 FeatureCategory::VulkanFeatures, 118 "VkInstance supports the VK_KHR_external_semaphore_capabilities extension", 119 &members, 120 }; 121 122 FeatureInfo supportsExternalSemaphoreFd = { 123 "supportsExternalSemaphoreFd", 124 FeatureCategory::VulkanFeatures, 125 "VkDevice supports the VK_KHR_external_semaphore_fd extension", 126 &members, 127 }; 128 129 FeatureInfo supportsExternalSemaphoreFuchsia = { 130 "supportsExternalSemaphoreFuchsia", 131 FeatureCategory::VulkanFeatures, 132 "VkDevice supports the VK_FUCHSIA_external_semaphore extension", 133 &members, 134 }; 135 136 FeatureInfo supportsExternalFenceFd = { 137 "supportsExternalFenceFd", FeatureCategory::VulkanFeatures, 138 "VkDevice supports the VK_KHR_external_fence_fd extension", &members, 139 "http://anglebug.com/2517"}; 140 141 FeatureInfo supportsAndroidNativeFenceSync = { 142 "supportsAndroidNativeFenceSync", FeatureCategory::VulkanFeatures, 143 "VkDevice supports the EGL_ANDROID_native_fence_sync extension", &members, 144 "http://anglebug.com/2517"}; 145 146 FeatureInfo supportsImageCubeArray = {"supportsImageCubeArray", FeatureCategory::VulkanFeatures, 147 "VkDevice supports the imageCubeArray feature properly", 148 &members, "http://anglebug.com/3584"}; 149 150 FeatureInfo supportsPipelineStatisticsQuery = { 151 "supportsPipelineStatisticsQuery", FeatureCategory::VulkanFeatures, 152 "VkDevice supports the pipelineStatisticsQuery feature", &members, 153 "http://anglebug.com/5430"}; 154 155 FeatureInfo supportsShaderStencilExport = { 156 "supportsShaderStencilExport", 157 FeatureCategory::VulkanFeatures, 158 "VkDevice supports the VK_EXT_shader_stencil_export extension", 159 &members, 160 }; 161 162 FeatureInfo supportsYUVSamplerConversion = { 163 "supportsYUVSamplerConversion", 164 FeatureCategory::VulkanFeatures, 165 "VkDevice supports the VK_KHR_sampler_ycbcr_conversion extension", 166 &members, 167 }; 168 169 FeatureInfo emulateTransformFeedback = { 170 "emulateTransformFeedback", FeatureCategory::VulkanFeatures, 171 "Emulate transform feedback as the VK_EXT_transform_feedback is not present.", &members, 172 "http://anglebug.com/3205"}; 173 174 FeatureInfo supportsTransformFeedbackExtension = { 175 "supportsTransformFeedbackExtension", FeatureCategory::VulkanFeatures, 176 "Transform feedback uses the VK_EXT_transform_feedback extension.", &members, 177 "http://anglebug.com/3206"}; 178 179 FeatureInfo supportsGeometryStreamsCapability = { 180 "supportsGeometryStreamsCapability", FeatureCategory::VulkanFeatures, 181 "Implementation supports the GeometryStreams SPIR-V capability.", &members, 182 "http://anglebug.com/3206"}; 183 184 FeatureInfo supportsIndexTypeUint8 = {"supportsIndexTypeUint8", FeatureCategory::VulkanFeatures, 185 "VkDevice supports the VK_EXT_index_type_uint8 extension", 186 &members, "http://anglebug.com/4405"}; 187 188 FeatureInfo supportsCustomBorderColor = { 189 "supportsCustomBorderColor", FeatureCategory::VulkanFeatures, 190 "VkDevice supports the VK_EXT_custom_border_color extension", &members, 191 "http://anglebug.com/3577"}; 192 193 FeatureInfo supportsMultiDrawIndirect = { 194 "supportsMultiDrawIndirect", FeatureCategory::VulkanFeatures, 195 "VkDevice supports the multiDrawIndirect extension", &members, "http://anglebug.com/6439"}; 196 197 FeatureInfo supportsDepthStencilResolve = {"supportsDepthStencilResolve", 198 FeatureCategory::VulkanFeatures, 199 "VkDevice supports the VK_KHR_depth_stencil_resolve " 200 "extension with the independentResolveNone feature", 201 &members, "http://anglebug.com/4836"}; 202 203 FeatureInfo supportsMultisampledRenderToSingleSampledGOOGLEX = { 204 "supportsMultisampledRenderToSingleSampledGOOGLEX", FeatureCategory::VulkanFeatures, 205 "VkDevice supports the VK_GOOGLEX_multisampled_render_to_single_sampled extension", 206 &members, "http://anglebug.com/4836"}; 207 208 FeatureInfo supportsMultisampledRenderToSingleSampled = { 209 "supportsMultisampledRenderToSingleSampled", FeatureCategory::VulkanFeatures, 210 "VkDevice supports the VK_EXT_multisampled_render_to_single_sampled extension", &members, 211 "http://anglebug.com/4836"}; 212 213 FeatureInfo supportsMultiview = {"supportsMultiview", FeatureCategory::VulkanFeatures, 214 "VkDevice supports the VK_KHR_multiview extension", &members, 215 "http://anglebug.com/6048"}; 216 217 FeatureInfo disableFifoPresentMode = { 218 "disableFifoPresentMode", FeatureCategory::VulkanWorkarounds, 219 "VK_PRESENT_MODE_FIFO_KHR causes random timeouts", &members, "http://anglebug.com/3153"}; 220 221 FeatureInfo forceD16TexFilter = { 222 "forceD16TexFilter", FeatureCategory::VulkanWorkarounds, 223 "VK_FORMAT_D16_UNORM does not support VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT, " 224 "which prevents OES_depth_texture from being supported.", 225 &members, "http://anglebug.com/3452"}; 226 227 FeatureInfo disableFlippingBlitWithCommand = { 228 "disableFlippingBlitWithCommand", FeatureCategory::VulkanWorkarounds, 229 "vkCmdBlitImage with flipped coordinates blits incorrectly.", &members, 230 "http://anglebug.com/3498"}; 231 232 FeatureInfo perFrameWindowSizeQuery = { 233 "perFrameWindowSizeQuery", FeatureCategory::VulkanWorkarounds, 234 "Vulkan swapchain is not returning VK_ERROR_OUT_OF_DATE when window resizing", &members, 235 "http://anglebug.com/3623, http://anglebug.com/3624, http://anglebug.com/3625"}; 236 237 FeatureInfo padBuffersToMaxVertexAttribStride = { 238 "padBuffersToMaxVertexAttribStride", FeatureCategory::VulkanWorkarounds, 239 "Vulkan considers vertex attribute accesses to count up to the last multiple of the " 240 "stride. This additional access supports AMD's robust buffer access implementation. " 241 "AMDVLK in particular will return incorrect values when the vertex access extends into " 242 "the range that would be the stride padding and the buffer is too small. " 243 "This workaround limits GL_MAX_VERTEX_ATTRIB_STRIDE to a maximum value and " 244 "pads up every buffer allocation size to be a multiple of the maximum stride.", 245 &members, "http://anglebug.com/4428"}; 246 247 FeatureInfo supportsExternalMemoryDmaBufAndModifiers = { 248 "supportsExternalMemoryDmaBufAndModifiers", FeatureCategory::VulkanFeatures, 249 "VkDevice supports the VK_EXT_external_memory_dma_buf and VK_EXT_image_drm_format_modifier " 250 "extensions", 251 &members, "http://anglebug.com/6248"}; 252 253 FeatureInfo supportsExternalMemoryHost = { 254 "supportsExternalMemoryHost", 255 FeatureCategory::VulkanFeatures, 256 "VkDevice supports the VK_EXT_external_memory_host extension", 257 &members, 258 }; 259 260 FeatureInfo allocateNonZeroMemory = { 261 "allocateNonZeroMemory", FeatureCategory::VulkanFeatures, 262 "Fill new allocations with non-zero values to flush out errors.", &members, 263 "http://anglebug.com/4384"}; 264 265 FeatureInfo logMemoryReportCallbacks = { 266 "logMemoryReportCallbacks", 267 FeatureCategory::VulkanFeatures, 268 "Log each callback from VK_EXT_device_memory_report", 269 &members, 270 }; 271 272 FeatureInfo logMemoryReportStats = { 273 "logMemoryReportStats", 274 FeatureCategory::VulkanFeatures, 275 "Log stats from VK_EXT_device_memory_report each swap", 276 &members, 277 }; 278 279 FeatureInfo shadowBuffers = { 280 "shadowBuffers", FeatureCategory::VulkanFeatures, 281 "Allocate a shadow buffer for GL buffer objects to reduce glMap* latency.", &members, 282 "http://anglebug.com/4339"}; 283 284 FeatureInfo preferCPUForBufferSubData = { 285 "preferCPUForBufferSubData", FeatureCategory::VulkanFeatures, 286 "Prefer use CPU to do bufferSubData instead of staged update.", &members, 287 "http://issuetracker.google.com/200067929"}; 288 289 FeatureInfo persistentlyMappedBuffers = { 290 "persistentlyMappedBuffers", FeatureCategory::VulkanFeatures, 291 "Persistently map buffer memory to reduce map/unmap IOCTL overhead.", &members, 292 "http://anglebug.com/2162"}; 293 294 FeatureInfo enablePreRotateSurfaces = {"enablePreRotateSurfaces", 295 FeatureCategory::VulkanFeatures, 296 "Enable Android pre-rotation for landscape applications", 297 &members, "http://anglebug.com/3502"}; 298 299 FeatureInfo enablePrecisionQualifiers = { 300 "enablePrecisionQualifiers", FeatureCategory::VulkanFeatures, 301 "Enable precision qualifiers in shaders", &members, "http://anglebug.com/3078"}; 302 303 FeatureInfo preferAggregateBarrierCalls = { 304 "preferAggregateBarrierCalls", FeatureCategory::VulkanWorkarounds, 305 "Single barrier call is preferred over multiple calls with " 306 "fine grained pipeline stage dependency information", 307 &members, "http://anglebug.com/4633"}; 308 309 FeatureInfo preferSkippingInvalidateForEmulatedFormats = { 310 "preferSkippingInvalidateForEmulatedFormats", FeatureCategory::VulkanWorkarounds, 311 "Skipping invalidate is preferred for emulated formats that have extra channels over " 312 "re-clearing the image", 313 &members, "http://anglebug.com/6860"}; 314 315 FeatureInfo asyncCommandQueue = {"asyncCommandQueue", FeatureCategory::VulkanFeatures, 316 "Use CommandQueue worker thread to dispatch work to GPU.", 317 &members, "http://anglebug.com/4324"}; 318 319 FeatureInfo supportsShaderFloat16 = { 320 "supportsShaderFloat16", FeatureCategory::VulkanFeatures, 321 "VkDevice supports the VK_KHR_shader_float16_int8 extension " 322 "and has the shaderFloat16 feature", 323 &members, "http://anglebug.com/4551"}; 324 325 FeatureInfo allowGenerateMipmapWithCompute = { 326 "allowGenerateMipmapWithCompute", FeatureCategory::VulkanFeatures, 327 "Use the compute path to generate mipmaps on devices that meet the minimum requirements, " 328 "and the performance is better.", 329 &members, "http://anglebug.com/4551"}; 330 331 FeatureInfo supportsRenderPassStoreOpNone = { 332 "supportsRenderPassStoreOpNone", FeatureCategory::VulkanFeatures, 333 "VkDevice supports VK_QCOM_render_pass_store_ops extension.", &members, 334 "http://anglebug.com/5055"}; 335 336 FeatureInfo supportsRenderPassLoadStoreOpNone = { 337 "supportsRenderPassLoadStoreOpNone", FeatureCategory::VulkanFeatures, 338 "VkDevice supports VK_EXT_load_store_op_none extension.", &members, 339 "http://anglebug.com/5371"}; 340 341 FeatureInfo disallowMixedDepthStencilLoadOpNoneAndLoad = { 342 "disallowMixedDepthStencilLoadOpNoneAndLoad", FeatureCategory::VulkanWorkarounds, 343 "Disallow use of LOAD_OP_NONE for only one of the depth or stencil aspects of a " 344 "depth/stencil attachment", 345 &members, "http://anglebug.com/7370"}; 346 347 FeatureInfo supportsDepthClipControl = { 348 "supportsDepthClipControl", FeatureCategory::VulkanFeatures, 349 "VkDevice supports VK_EXT_depth_clip_control extension.", &members, 350 "http://anglebug.com/5421"}; 351 352 FeatureInfo supportsPrimitiveTopologyListRestart = { 353 "supportsPrimitiveTopologyListRestart", FeatureCategory::VulkanFeatures, 354 "VkDevice supports VK_EXT_primitive_topology_list_restart extension.", &members, 355 "http://anglebug.com/3832"}; 356 357 FeatureInfo supportsBlendOperationAdvanced = { 358 "supportsBlendOperationAdvanced", FeatureCategory::VulkanFeatures, 359 "VkDevice supports VK_EXT_blend_operation_advanced extension.", &members, 360 "http://anglebug.com/3586"}; 361 362 FeatureInfo forceMaxUniformBufferSize16KB = { 363 "forceMaxUniformBufferSize16KB", FeatureCategory::VulkanWorkarounds, 364 "Force max uniform buffer size to 16K on some device due to bug", &members, 365 "https://issuetracker.google.com/161903006"}; 366 367 FeatureInfo supportsImageFormatList = { 368 "supportsImageFormatList", FeatureCategory::VulkanFeatures, 369 "Enable VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT by default for ICDs " 370 "that support VK_KHR_image_format_list", 371 &members, "http://anglebug.com/5281"}; 372 373 FeatureInfo enableMultisampledRenderToTexture = { 374 "enableMultisampledRenderToTexture", FeatureCategory::VulkanWorkarounds, 375 "Expose EXT_multisampled_render_to_texture", &members, "http://anglebug.com/4937"}; 376 377 FeatureInfo deferFlushUntilEndRenderPass = { 378 "deferFlushUntilEndRenderPass", FeatureCategory::VulkanWorkarounds, 379 "Allow glFlush to be deferred until renderpass ends", &members, 380 "https://issuetracker.google.com/issues/166475273"}; 381 382 FeatureInfo waitIdleBeforeSwapchainRecreation = { 383 "waitIdleBeforeSwapchainRecreation", FeatureCategory::VulkanWorkarounds, 384 "Before passing an oldSwapchain to VkSwapchainCreateInfoKHR, wait for queue to be idle. " 385 "Works around a bug on platforms which destroy oldSwapchain in vkCreateSwapchainKHR.", 386 &members, "http://anglebug.com/5061"}; 387 388 FeatureInfo forceTextureLodOffset1 = { 389 "forceTextureLodOffset1", 390 FeatureCategory::VulkanWorkarounds, 391 "Increase the minimum texture level-of-detail by 1 when sampling.", 392 &members, 393 }; 394 395 FeatureInfo forceTextureLodOffset2 = { 396 "forceTextureLodOffset2", 397 FeatureCategory::VulkanWorkarounds, 398 "Increase the minimum texture level-of-detail by 2 when sampling.", 399 &members, 400 }; 401 402 FeatureInfo forceTextureLodOffset3 = { 403 "forceTextureLodOffset3", 404 FeatureCategory::VulkanWorkarounds, 405 "Increase the minimum texture level-of-detail by 3 when sampling.", 406 &members, 407 }; 408 409 FeatureInfo forceTextureLodOffset4 = { 410 "forceTextureLodOffset4", 411 FeatureCategory::VulkanWorkarounds, 412 "Increase the minimum texture level-of-detail by 4 when sampling.", 413 &members, 414 }; 415 416 FeatureInfo forceNearestFiltering = { 417 "forceNearestFiltering", 418 FeatureCategory::VulkanWorkarounds, 419 "Force nearest filtering when sampling.", 420 &members, 421 }; 422 423 FeatureInfo forceNearestMipFiltering = { 424 "forceNearestMipFiltering", 425 FeatureCategory::VulkanWorkarounds, 426 "Force nearest mip filtering when sampling.", 427 &members, 428 }; 429 430 FeatureInfo compressVertexData = { 431 "compressVertexData", 432 FeatureCategory::VulkanWorkarounds, 433 "Compress vertex data to smaller data types when " 434 "possible. Using this feature makes ANGLE non-conformant.", 435 &members, 436 }; 437 438 FeatureInfo preferDrawClearOverVkCmdClearAttachments = { 439 "preferDrawClearOverVkCmdClearAttachments", FeatureCategory::VulkanWorkarounds, 440 "On some hardware, clear using a draw call instead of vkCmdClearAttachments in the middle " 441 "of render pass due to bugs", 442 &members, "https://issuetracker.google.com/166809097"}; 443 444 FeatureInfo emulatedPrerotation90 = {"emulatedPrerotation90", FeatureCategory::VulkanFeatures, 445 "Emulate 90-degree prerotation.", &members, 446 "http://anglebug.com/4901"}; 447 448 FeatureInfo emulatedPrerotation180 = {"emulatedPrerotation180", FeatureCategory::VulkanFeatures, 449 "Emulate 180-degree prerotation.", &members, 450 "http://anglebug.com/4901"}; 451 452 FeatureInfo emulatedPrerotation270 = {"emulatedPrerotation270", FeatureCategory::VulkanFeatures, 453 "Emulate 270-degree prerotation.", &members, 454 "http://anglebug.com/4901"}; 455 456 FeatureInfo generateSPIRVThroughGlslang = { 457 "generateSPIRVThroughGlslang", FeatureCategory::VulkanFeatures, 458 "Translate SPIR-V through glslang.", &members, "http://anglebug.com/4889"}; 459 460 FeatureInfo preferDriverUniformOverSpecConst = { 461 "preferDriverUniformOverSpecConst", FeatureCategory::VulkanFeatures, 462 "Prefer using driver uniforms instead of specialization constants.", &members, 463 "http://anglebug.com/7406"}; 464 465 FeatureInfo exposeNonConformantExtensionsAndVersions = { 466 "exposeNonConformantExtensionsAndVersions", FeatureCategory::VulkanWorkarounds, 467 "Expose GLES versions and extensions that are not conformant.", &members, 468 "http://anglebug.com/5375"}; 469 470 FeatureInfo emulateR32fImageAtomicExchange = { 471 "emulateR32fImageAtomicExchange", FeatureCategory::VulkanWorkarounds, 472 "Emulate r32f images with r32ui to support imageAtomicExchange.", &members, 473 "http://anglebug.com/5535"}; 474 475 FeatureInfo supportsNegativeViewport = { 476 "supportsNegativeViewport", 477 FeatureCategory::VulkanFeatures, 478 "The driver supports inverting the viewport with a negative height.", 479 &members, 480 }; 481 482 FeatureInfo forceFragmentShaderPrecisionHighpToMediump = { 483 "forceFragmentShaderPrecisionHighpToMediump", FeatureCategory::VulkanWorkarounds, 484 "Forces highp precision in fragment shader to mediump.", &members, 485 "https://issuetracker.google.com/184850002"}; 486 487 FeatureInfo preferSubmitAtFBOBoundary = { 488 "preferSubmitAtFBOBoundary", FeatureCategory::VulkanWorkarounds, 489 "Submit commands to driver at each FBO boundary for performance improvements.", &members, 490 "https://issuetracker.google.com/187425444"}; 491 492 FeatureInfo useMultipleDescriptorsForExternalFormats = { 493 "useMultipleDescriptorsForExternalFormats", FeatureCategory::VulkanWorkarounds, 494 "Return a default descriptor count for external formats.", &members, 495 "http://anglebug.com/6141"}; 496 497 FeatureInfo supportsProtectedMemory = { 498 "supportsProtectedMemory", FeatureCategory::VulkanFeatures, 499 "VkDevice supports protected memory", &members, "http://anglebug.com/3965"}; 500 501 FeatureInfo supportsHostQueryReset = {"supportsHostQueryReset", FeatureCategory::VulkanFeatures, 502 "VkDevice supports VK_EXT_host_query_reset extension", 503 &members, "http://anglebug.com/6692"}; 504 505 FeatureInfo supportsPipelineCreationCacheControl = { 506 "supportsPipelineCreationCacheControl", FeatureCategory::VulkanFeatures, 507 "VkDevice supports VK_EXT_pipeline_creation_cache_control extension", &members, 508 "http://anglebug.com/5881"}; 509 510 FeatureInfo supportsPipelineCreationFeedback = { 511 "supportsPipelineCreationFeedback", FeatureCategory::VulkanFeatures, 512 "VkDevice supports VK_EXT_pipeline_creation_feedback extension", &members, 513 "http://anglebug.com/5881"}; 514 515 FeatureInfo supportsPrimitivesGeneratedQuery = { 516 "supportsPrimitivesGeneratedQuery", FeatureCategory::VulkanFeatures, 517 "VkDevice supports VK_EXT_primitives_generated_query extension", &members, 518 "http://anglebug.com/5430"}; 519 520 FeatureInfo supportsSurfaceCapabilities2Extension = { 521 "supportsSurfaceCapabilities2Extension", 522 FeatureCategory::VulkanFeatures, 523 "VkInstance supports the VK_KHR_get_surface_capabilities2 extension", 524 &members, 525 }; 526 527 FeatureInfo supportsSurfaceProtectedCapabilitiesExtension = { 528 "supportsSurfaceProtectedCapabilitiesExtension", 529 FeatureCategory::VulkanFeatures, 530 "VkInstance supports the VK_KHR_surface_protected_capabilities extension", 531 &members, 532 }; 533 534 FeatureInfo supportsSurfacelessQueryExtension = { 535 "supportsSurfacelessQueryExtension", 536 FeatureCategory::VulkanFeatures, 537 "VkInstance supports the VK_GOOGLE_surfaceless_query extension", 538 &members, 539 }; 540 541 FeatureInfo supportsSurfaceProtectedSwapchains = { 542 "supportsSurfaceProtectedSwapchains", 543 FeatureCategory::VulkanFeatures, 544 "VkSurface supportsProtected for protected swapchains", 545 &members, 546 }; 547 548 FeatureInfo overrideSurfaceFormatRGB8ToRGBA8 = { 549 "overrideSurfaceFormatRGB8ToRGBA8", FeatureCategory::VulkanWorkarounds, 550 "Override surface format GL_RGB8 to GL_RGBA8", &members, "http://anglebug.com/6651"}; 551 552 FeatureInfo supportsSharedPresentableImageExtension = { 553 "supportsSharedPresentableImageExtension", 554 FeatureCategory::VulkanFeatures, 555 "VkSurface supports the VK_KHR_shared_presentable_images extension", 556 &members, 557 }; 558 559 FeatureInfo supportsShaderFramebufferFetch = { 560 "supportsShaderFramebufferFetch", 561 FeatureCategory::VulkanFeatures, 562 "Whether the Vulkan backend supports coherent framebuffer fetch", 563 &members, 564 }; 565 566 FeatureInfo supportsShaderFramebufferFetchNonCoherent = { 567 "supportsShaderFramebufferFetchNonCoherent", 568 FeatureCategory::VulkanFeatures, 569 "Whether the Vulkan backend supports non-coherent framebuffer fetch", 570 &members, 571 }; 572 573 FeatureInfo permanentlySwitchToFramebufferFetchMode = { 574 "permanentlySwitchToFramebufferFetchMode", 575 FeatureCategory::VulkanFeatures, 576 "Whether the context should permanently switch to framebuffer fetch mode on first" 577 "encounter", 578 &members, 579 }; 580 581 FeatureInfo supportsLockSurfaceExtension = { 582 "supportsLockSurfaceExtension", 583 FeatureCategory::VulkanFeatures, 584 "Surface supports the EGL_KHR_lock_surface3 extension", 585 &members, 586 }; 587 588 FeatureInfo swapbuffersOnFlushOrFinishWithSingleBuffer = { 589 "swapbuffersOnFlushOrFinishWithSingleBuffer", FeatureCategory::VulkanFeatures, 590 "Bypass deferredFlush with calling swapbuffers on flush or finish when in Shared " 591 "Present mode", 592 &members, "http://anglebug.com/6878"}; 593 594 FeatureInfo emulateDithering = {"emulateDithering", FeatureCategory::VulkanFeatures, 595 "Emulate OpenGL dithering", &members, 596 "http://anglebug.com/6755"}; 597 598 FeatureInfo roundOutputAfterDithering = { 599 "roundOutputAfterDithering", FeatureCategory::VulkanWorkarounds, 600 "Round output after dithering to workaround a driver bug that rounds the output up", 601 &members, "http://anglebug.com/6953"}; 602 603 FeatureInfo emulateAdvancedBlendEquations = { 604 "emulateAdvancedBlendEquations", FeatureCategory::VulkanFeatures, 605 "Emulate GL_KHR_blend_equation_advanced", &members, "http://anglebug.com/3586"}; 606 607 FeatureInfo precisionSafeDivision = { 608 "precisionSafeDivision", 609 FeatureCategory::VulkanWorkarounds, 610 "Special case handling for platforms that do not generate 1.0f even when the dividend and" 611 "divisor have the same value", 612 &members, 613 }; 614 615 FeatureInfo bottomLeftOriginPresentRegionRectangles = { 616 "bottomLeftOriginPresentRegionRectangles", 617 FeatureCategory::VulkanWorkarounds, 618 "On some platforms present region rectangles are expected to have a bottom-left origin, " 619 "instead of top-left origin as from spec", 620 &members, 621 }; 622 623 FeatureInfo forceSubmitImmutableTextureUpdates = { 624 "forceSubmitImmutableTextureUpdates", FeatureCategory::VulkanAppWorkarounds, 625 "Force submit updates to immutable textures", &members, "http://anglebug.com/6929"}; 626 627 FeatureInfo retainSPIRVDebugInfo = {"retainSPIRVDebugInfo", FeatureCategory::VulkanFeatures, 628 "Retain debug info in SPIR-V blob.", &members, 629 "http://anglebug.com/5901"}; 630 631 FeatureInfo warmUpPipelineCacheAtLink = { 632 "warmUpPipelineCacheAtLink", FeatureCategory::VulkanFeatures, 633 "Warm up the Vulkan pipeline cache at link time", &members, "http://anglebug.com/5881"}; 634 635 FeatureInfo preferDeviceLocalMemoryHostVisible = { 636 "preferDeviceLocalMemoryHostVisible", FeatureCategory::VulkanFeatures, 637 "Prefer adding HOST_VISIBLE flag for DEVICE_LOCAL memory when picking memory types", 638 &members, "http://anglebug.com/7047"}; 639 640 FeatureInfo forceStaticVertexStrideState = { 641 "forceStaticVertexStrideState", FeatureCategory::VulkanWorkarounds, 642 "Force static state for VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT due to" 643 "driver bugs", 644 &members, "https://bugs.fuchsia.dev/p/fuchsia/issues/detail?id=107106"}; 645 646 FeatureInfo supportsExtendedDynamicState = { 647 "supportsExtendedDynamicState", FeatureCategory::VulkanFeatures, 648 "VkDevice supports VK_EXT_extended_dynamic_state extension", &members, 649 "http://anglebug.com/5906"}; 650 651 FeatureInfo supportsExtendedDynamicState2 = { 652 "supportsExtendedDynamicState2", FeatureCategory::VulkanFeatures, 653 "VkDevice supports VK_EXT_extended_dynamic_state2 extension", &members, 654 "http://anglebug.com/5906"}; 655 656 FeatureInfo supportsLogicOpDynamicState = { 657 "supportsLogicOpDynamicState", FeatureCategory::VulkanFeatures, 658 "VkDevice supports the logicOp feature of VK_EXT_extended_dynamic_state2 extension", 659 &members, "http://anglebug.com/3862"}; 660 661 FeatureInfo supportsFragmentShadingRate = { 662 "supportsFragmentShadingRate", FeatureCategory::VulkanFeatures, 663 "VkDevice supports VK_KHR_fragment_shading_rate extension", &members, 664 "http://anglebug.com/7172"}; 665 666 FeatureInfo supportsFragmentShaderPixelInterlock = { 667 "supportsFragmentShaderPixelInterlock", 668 FeatureCategory::VulkanFeatures, 669 "VkDevice supports the VK_EXT_fragment_shader_interlock extension " 670 "and has the fragmentShaderPixelInterlock feature", 671 &members, 672 }; 673 674 FeatureInfo explicitlyEnablePerSampleShading = { 675 "explicitlyEnablePerSampleShading", FeatureCategory::VulkanWorkarounds, 676 "Explicitly enable per-sample shading if the fragment shader contains the " 677 "sample qualifier", 678 &members, "http://anglebug.com/6876"}; 679 680 FeatureInfo forceContinuousRefreshOnSharedPresent = { 681 "forceContinuousRefreshOnSharedPresent", FeatureCategory::VulkanFeatures, 682 "Force to create vulkan swapchain with continuous refresh on shared present", &members, 683 "https://issuetracker.google.com/229267970"}; 684 685 FeatureInfo supportsImage2dViewOf3d = { 686 "supportsImage2dViewOf3d", FeatureCategory::VulkanFeatures, 687 "VkDevice supports VK_EXT_image_2d_view_of_3d", &members, "https://anglebug.com/7320"}; 688 689 FeatureInfo supportsImagelessFramebuffer = { 690 "supportsImagelessFramebuffer", FeatureCategory::VulkanFeatures, 691 "VkDevice supports VK_KHR_imageless_framebuffer extension", &members, 692 "http://anglebug.com/7553"}; 693 694 FeatureInfo preferLinearFilterForYUV = { 695 "preferLinearFilterForYUV", FeatureCategory::VulkanFeatures, 696 "Prefer to use VK_FILTER_LINEAR for VkSamplerYcbcrConversion", &members, 697 "https://anglebug.com/7382"}; 698 699 FeatureInfo supportsYuvTarget = { 700 "supportsYuvTarget", 701 FeatureCategory::VulkanFeatures, 702 "VkDevice supports VK_ANDROID_render_to_external_format and VK_EXT_ycbcr_attachment", 703 &members, 704 }; 705 706 FeatureInfo useNonZeroStencilWriteMaskStaticState = { 707 "useNonZeroStencilWriteMaskStaticState", FeatureCategory::VulkanWorkarounds, 708 "Work around a driver bug where 0 in stencil write mask static state would make the" 709 "corresponding dynamic state malfunction in the presence of discard or alpha to coverage", 710 &members, "http://anglebug.com/7556"}; 711 712 FeatureInfo mapUnspecifiedColorSpaceToPassThrough = { 713 "mapUnspecifiedColorSpaceToPassThrough", 714 FeatureCategory::VulkanFeatures, 715 "Use VK_COLOR_SPACE_PASS_THROUGH_EXT for EGL_NONE or unspecifed color " 716 "spaces", 717 &members, 718 }; 719 720 FeatureInfo supportsTimestampSurfaceAttribute = { 721 "supportsTimestampSurfaceAttribute", FeatureCategory::VulkanFeatures, 722 "Platform supports setting frame timestamp surface attribute", &members, 723 "https://anglebug.com/7489"}; 724 725 FeatureInfo supportsRasterizationOrderAttachmentAccess = { 726 "supportsRasterizationOrderAttachmentAccess", FeatureCategory::VulkanFeatures, 727 "VkDevice supports VK_EXT_rasterization_order_attachment_access extension", &members, 728 "https://anglebug.com/7604"}; 729 730 FeatureInfo eglColorspaceAttributePassthrough = { 731 "eglColorspaceAttributePassthrough", FeatureCategory::VulkanFeatures, 732 "Support passthrough of EGL colorspace attribute values", &members, 733 "https://anglebug.com/7319"}; 734 735 FeatureInfo supportsPipelineRobustness = { 736 "supportsPipelineRobustness", FeatureCategory::VulkanFeatures, 737 "VkDevice supports VK_EXT_pipeline_robustness extension", &members, 738 "https://anglebug.com/5845"}; 739 740 FeatureInfo supportsVertexInputDynamicState = { 741 "supportsVertexInputDynamicState", FeatureCategory::VulkanFeatures, 742 "VkDevice supports VK_EXT_vertex_input_dynamic_state extension", &members, 743 "https://anglebug.com/7162"}; 744 745 FeatureInfo supportsColorWriteEnable = {"supportsColorWriteEnable", 746 FeatureCategory::VulkanFeatures, 747 "VkDevice supports VK_EXT_color_write_enable extension", 748 &members, "https://anglebug.com/7161"}; 749 750 FeatureInfo supportsPresentation = { 751 "supportsPresentation", 752 FeatureCategory::VulkanFeatures, 753 "VkDisplay supports presentation through a present family queue", 754 &members, 755 }; 756 757 FeatureInfo supportsComputeTranscodeEtcToBc = { 758 "supportsComputeTranscodeEtcToBc", 759 FeatureCategory::VulkanFeatures, 760 "supports compute shader transcode etc format to bc format", 761 &members, 762 }; 763 764 FeatureInfo supportsGraphicsPipelineLibrary = { 765 "supportsGraphicsPipelineLibrary", FeatureCategory::VulkanFeatures, 766 "VkDevice supports the VK_EXT_graphics_pipeline_library extension", &members, 767 "https://anglebug.com/7369"}; 768 769 FeatureInfo supportsPipelineProtectedAccess = { 770 "supportsPipelineProtectedAccess", FeatureCategory::VulkanFeatures, 771 "VkDevice supports the VK_EXT_pipeline_protected_access extension", &members, 772 "https://anglebug.com/7714"}; 773 774 FeatureInfo preferSubmitOnAnySamplesPassedQueryEnd = { 775 "preferSubmitOnAnySamplesPassedQueryEnd", FeatureCategory::VulkanWorkarounds, 776 "Submit commands to driver when last GL_ANY_SAMPLES_PASSED query is made for performance " 777 "improvements.", 778 &members, "https://issuetracker.google.com/250706693"}; 779 }; 780 781 inline FeaturesVk::FeaturesVk() = default; 782 inline FeaturesVk::~FeaturesVk() = default; 783 784 } // namespace angle 785 786 #endif // ANGLE_PLATFORM_FEATURESVK_H_