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.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 basicGLLineRasterization = { 24 "basicGLLineRasterization", 25 FeatureCategory::VulkanFeatures, 26 "Enable the use of pixel shader patching to implement OpenGL basic line " 27 "rasterization rules", 28 &members, 29 }; 30 31 FeatureInfo bresenhamLineRasterization = { 32 "bresenhamLineRasterization", 33 FeatureCategory::VulkanFeatures, 34 "Enable Bresenham line rasterization via VK_EXT_line_rasterization extension", 35 &members, 36 }; 37 38 FeatureInfo provokingVertex = { 39 "provokingVertex", 40 FeatureCategory::VulkanFeatures, 41 "Enable provoking vertex mode via VK_EXT_provoking_vertex extension", 42 &members, 43 }; 44 45 FeatureInfo forceFallbackFormat = { 46 "forceFallbackFormat", 47 FeatureCategory::VulkanWorkarounds, 48 "Force a fallback format for angle_end2end_tests", 49 &members, 50 }; 51 52 FeatureInfo clampPointSize = { 53 "clampPointSize", 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 FeatureInfo depthClamping = { 58 "depthClamping", FeatureCategory::VulkanWorkarounds, 59 "The depth value is not clamped to [0,1] for floating point depth buffers.", &members, 60 "http://anglebug.com/3970"}; 61 62 FeatureInfo supportsRenderpass2 = { 63 "supportsRenderpass2", 64 FeatureCategory::VulkanFeatures, 65 "VkDevice supports the VK_KHR_create_renderpass2 extension", 66 &members, 67 }; 68 69 FeatureInfo supportsIncrementalPresent = { 70 "supportsIncrementalPresent", 71 FeatureCategory::VulkanFeatures, 72 "VkDevice supports the VK_KHR_incremental_present extension", 73 &members, 74 }; 75 76 FeatureInfo supportsAndroidHardwareBuffer = { 77 "supportsAndroidHardwareBuffer", 78 FeatureCategory::VulkanFeatures, 79 "VkDevice supports the VK_ANDROID_external_memory_android_hardware_buffer extension", 80 &members, 81 }; 82 83 FeatureInfo supportsGGPFrameToken = { 84 "supportsGGPFrameToken", 85 FeatureCategory::VulkanFeatures, 86 "VkDevice supports the VK_GGP_frame_token extension", 87 &members, 88 }; 89 90 FeatureInfo supportsExternalMemoryFd = { 91 "supportsExternalMemoryFd", 92 FeatureCategory::VulkanFeatures, 93 "VkDevice supports the VK_KHR_external_memory_fd extension", 94 &members, 95 }; 96 97 FeatureInfo supportsExternalMemoryFuchsia = { 98 "supportsExternalMemoryFuchsia", 99 FeatureCategory::VulkanFeatures, 100 "VkDevice supports the VK_FUCHSIA_external_memory extension", 101 &members, 102 }; 103 104 FeatureInfo supportsFilteringPrecision = { 105 "supportsFilteringPrecision", 106 FeatureCategory::VulkanFeatures, 107 "VkDevice supports the VK_GOOGLE_sampler_filtering_precision extension", 108 &members, 109 }; 110 111 FeatureInfo supportsExternalFenceCapabilities = { 112 "supportsExternalFenceCapabilities", 113 FeatureCategory::VulkanFeatures, 114 "VkInstance supports the VK_KHR_external_fence_capabilities extension", 115 &members, 116 }; 117 118 FeatureInfo supportsExternalSemaphoreCapabilities = { 119 "supportsExternalSemaphoreCapabilities", 120 FeatureCategory::VulkanFeatures, 121 "VkInstance supports the VK_KHR_external_semaphore_capabilities extension", 122 &members, 123 }; 124 125 FeatureInfo supportsExternalSemaphoreFd = { 126 "supportsExternalSemaphoreFd", 127 FeatureCategory::VulkanFeatures, 128 "VkDevice supports the VK_KHR_external_semaphore_fd extension", 129 &members, 130 }; 131 132 FeatureInfo supportsExternalSemaphoreFuchsia = { 133 "supportsExternalSemaphoreFuchsia", 134 FeatureCategory::VulkanFeatures, 135 "VkDevice supports the VK_FUCHSIA_external_semaphore extension", 136 &members, 137 }; 138 139 FeatureInfo supportsExternalFenceFd = { 140 "supportsExternalFenceFd", FeatureCategory::VulkanFeatures, 141 "VkDevice supports the VK_KHR_external_fence_fd extension", &members, 142 "http://anglebug.com/2517"}; 143 144 FeatureInfo supportsAndroidNativeFenceSync = { 145 "supportsAndroidNativeFenceSync", FeatureCategory::VulkanFeatures, 146 "VkDevice supports the EGL_ANDROID_native_fence_sync extension", &members, 147 "http://anglebug.com/2517"}; 148 149 FeatureInfo supportsImageCubeArray = {"supportsImageCubeArray", FeatureCategory::VulkanFeatures, 150 "VkDevice supports the imageCubeArray feature properly", 151 &members, "http://anglebug.com/3584"}; 152 153 FeatureInfo supportsPipelineStatisticsQuery = { 154 "supportsPipelineStatisticsQuery", FeatureCategory::VulkanFeatures, 155 "VkDevice supports the pipelineStatisticsQuery feature", &members, 156 "http://anglebug.com/5430"}; 157 158 FeatureInfo supportsShaderStencilExport = { 159 "supportsShaderStencilExport", 160 FeatureCategory::VulkanFeatures, 161 "VkDevice supports the VK_EXT_shader_stencil_export extension", 162 &members, 163 }; 164 165 FeatureInfo supportsYUVSamplerConversion = { 166 "supportsYUVSamplerConversion", 167 FeatureCategory::VulkanFeatures, 168 "VkDevice supports the VK_KHR_sampler_ycbcr_conversion extension", 169 &members, 170 }; 171 172 FeatureInfo emulateTransformFeedback = { 173 "emulateTransformFeedback", FeatureCategory::VulkanFeatures, 174 "Emulate transform feedback as the VK_EXT_transform_feedback is not present.", &members, 175 "http://anglebug.com/3205"}; 176 177 FeatureInfo supportsTransformFeedbackExtension = { 178 "supportsTransformFeedbackExtension", FeatureCategory::VulkanFeatures, 179 "Transform feedback uses the VK_EXT_transform_feedback extension.", &members, 180 "http://anglebug.com/3206"}; 181 182 FeatureInfo supportsGeometryStreamsCapability = { 183 "supportsGeometryStreamsCapability", FeatureCategory::VulkanFeatures, 184 "Implementation supports the GeometryStreams SPIR-V capability.", &members, 185 "http://anglebug.com/3206"}; 186 187 FeatureInfo supportsIndexTypeUint8 = {"supportsIndexTypeUint8", FeatureCategory::VulkanFeatures, 188 "VkDevice supports the VK_EXT_index_type_uint8 extension", 189 &members, "http://anglebug.com/4405"}; 190 191 FeatureInfo supportsCustomBorderColor = { 192 "supportsCustomBorderColor", FeatureCategory::VulkanFeatures, 193 "VkDevice supports the VK_EXT_custom_border_color extension", &members, 194 "http://anglebug.com/3577"}; 195 196 FeatureInfo supportsMultiDrawIndirect = { 197 "supportsMultiDrawIndirect", FeatureCategory::VulkanFeatures, 198 "VkDevice supports the multiDrawIndirect extension", &members, "http://anglebug.com/6439"}; 199 200 FeatureInfo supportsDepthStencilResolve = {"supportsDepthStencilResolve", 201 FeatureCategory::VulkanFeatures, 202 "VkDevice supports the VK_KHR_depth_stencil_resolve " 203 "extension with the independentResolveNone feature", 204 &members, "http://anglebug.com/4836"}; 205 206 FeatureInfo supportsMultisampledRenderToSingleSampled = { 207 "supportsMultisampledRenderToSingleSampled", FeatureCategory::VulkanFeatures, 208 "VkDevice supports the VK_EXT_multisampled_render_to_single_sampled extension", &members, 209 "http://anglebug.com/4836"}; 210 211 FeatureInfo supportsMultiview = {"supportsMultiview", FeatureCategory::VulkanFeatures, 212 "VkDevice supports the VK_KHR_multiview extension", &members, 213 "http://anglebug.com/6048"}; 214 215 FeatureInfo disableFifoPresentMode = { 216 "disableFifoPresentMode", FeatureCategory::VulkanWorkarounds, 217 "VK_PRESENT_MODE_FIFO_KHR causes random timeouts", &members, "http://anglebug.com/3153"}; 218 219 FeatureInfo bindEmptyForUnusedDescriptorSets = { 220 "bindEmptyForUnusedDescriptorSets", FeatureCategory::VulkanWorkarounds, 221 "Gaps in bound descriptor set indices causes the post-gap sets to misbehave", &members, 222 "http://anglebug.com/2727"}; 223 224 FeatureInfo forceD16TexFilter = { 225 "forceD16TexFilter", FeatureCategory::VulkanWorkarounds, 226 "VK_FORMAT_D16_UNORM does not support VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT, " 227 "which prevents OES_depth_texture from being supported.", 228 &members, "http://anglebug.com/3452"}; 229 230 FeatureInfo disableFlippingBlitWithCommand = { 231 "disableFlippingBlitWithCommand", FeatureCategory::VulkanWorkarounds, 232 "vkCmdBlitImage with flipped coordinates blits incorrectly.", &members, 233 "http://anglebug.com/3498"}; 234 235 FeatureInfo perFrameWindowSizeQuery = { 236 "perFrameWindowSizeQuery", FeatureCategory::VulkanWorkarounds, 237 "Vulkan swapchain is not returning VK_ERROR_OUT_OF_DATE when window resizing", &members, 238 "http://anglebug.com/3623, http://anglebug.com/3624, http://anglebug.com/3625"}; 239 240 FeatureInfo disallowSeamfulCubeMapEmulation = { 241 "disallowSeamfulCubeMapEmulation", FeatureCategory::VulkanWorkarounds, 242 "Seamful cube map emulation misbehaves on some drivers, so it's disallowed", &members, 243 "http://anglebug.com/3243"}; 244 245 FeatureInfo padBuffersToMaxVertexAttribStride = { 246 "padBuffersToMaxVertexAttribStride", FeatureCategory::VulkanWorkarounds, 247 "Vulkan considers vertex attribute accesses to count up to the last multiple of the " 248 "stride. This additional access supports AMD's robust buffer access implementation. " 249 "AMDVLK in particular will return incorrect values when the vertex access extends into " 250 "the range that would be the stride padding and the buffer is too small. " 251 "This workaround limits GL_MAX_VERTEX_ATTRIB_STRIDE to a maximum value and " 252 "pads up every buffer allocation size to be a multiple of the maximum stride.", 253 &members, "http://anglebug.com/4428"}; 254 255 FeatureInfo supportsExternalMemoryDmaBufAndModifiers = { 256 "supportsExternalMemoryDmaBufAndModifiers", FeatureCategory::VulkanFeatures, 257 "VkDevice supports the VK_EXT_external_memory_dma_buf and VK_EXT_image_drm_format_modifier " 258 "extensions", 259 &members, "http://anglebug.com/6248"}; 260 261 FeatureInfo supportsExternalMemoryHost = { 262 "supportsExternalMemoryHost", 263 FeatureCategory::VulkanFeatures, 264 "VkDevice supports the VK_EXT_external_memory_host extension", 265 &members, 266 }; 267 268 FeatureInfo allocateNonZeroMemory = { 269 "allocateNonZeroMemory", FeatureCategory::VulkanFeatures, 270 "Fill new allocations with non-zero values to flush out errors.", &members, 271 "http://anglebug.com/4384"}; 272 273 FeatureInfo logMemoryReportCallbacks = { 274 "logMemoryReportCallbacks", 275 FeatureCategory::VulkanFeatures, 276 "Log each callback from VK_EXT_device_memory_report", 277 &members, 278 }; 279 280 FeatureInfo logMemoryReportStats = { 281 "logMemoryReportStats", 282 FeatureCategory::VulkanFeatures, 283 "Log stats from VK_EXT_device_memory_report each swap", 284 &members, 285 }; 286 287 FeatureInfo shadowBuffers = { 288 "shadowBuffers", FeatureCategory::VulkanFeatures, 289 "Allocate a shadow buffer for GL buffer objects to reduce glMap* latency.", &members, 290 "http://anglebug.com/4339"}; 291 292 FeatureInfo preferCPUForBufferSubData = { 293 "preferCPUForBufferSubData", FeatureCategory::VulkanFeatures, 294 "Prefer use CPU to do bufferSubData instead of staged update.", &members, 295 "http://issuetracker.google.com/200067929"}; 296 297 FeatureInfo persistentlyMappedBuffers = { 298 "persistentlyMappedBuffers", FeatureCategory::VulkanFeatures, 299 "Persistently map buffer memory to reduce map/unmap IOCTL overhead.", &members, 300 "http://anglebug.com/2162"}; 301 302 FeatureInfo enablePreRotateSurfaces = {"enablePreRotateSurfaces", 303 FeatureCategory::VulkanFeatures, 304 "Enable Android pre-rotation for landscape applications", 305 &members, "http://anglebug.com/3502"}; 306 307 FeatureInfo enablePrecisionQualifiers = { 308 "enablePrecisionQualifiers", FeatureCategory::VulkanFeatures, 309 "Enable precision qualifiers in shaders", &members, "http://anglebug.com/3078"}; 310 311 FeatureInfo preferAggregateBarrierCalls = { 312 "preferAggregateBarrierCalls", FeatureCategory::VulkanWorkarounds, 313 "Single barrier call is preferred over multiple calls with " 314 "fine grained pipeline stage dependency information", 315 &members, "http://anglebug.com/4633"}; 316 317 FeatureInfo preferSkippingInvalidateForEmulatedFormats = { 318 "preferSkippingInvalidateForEmulatedFormats", FeatureCategory::VulkanWorkarounds, 319 "Skipping invalidate is preferred for emulated formats that have extra channels over " 320 "re-clearing the image", 321 &members, "http://anglebug.com/6860"}; 322 323 FeatureInfo asyncCommandQueue = {"asyncCommandQueue", FeatureCategory::VulkanFeatures, 324 "Use CommandQueue worker thread to dispatch work to GPU.", 325 &members, "http://anglebug.com/4324"}; 326 327 FeatureInfo supportsShaderFloat16 = { 328 "supportsShaderFloat16", FeatureCategory::VulkanFeatures, 329 "VkDevice supports the VK_KHR_shader_float16_int8 extension " 330 "and has the shaderFloat16 feature", 331 &members, "http://anglebug.com/4551"}; 332 333 FeatureInfo allowGenerateMipmapWithCompute = { 334 "allowGenerateMipmapWithCompute", FeatureCategory::VulkanFeatures, 335 "Use the compute path to generate mipmaps on devices that meet the minimum requirements, " 336 "and the performance is better.", 337 &members, "http://anglebug.com/4551"}; 338 339 FeatureInfo supportsRenderPassStoreOpNone = { 340 "supportsRenderPassStoreOpNone", FeatureCategory::VulkanFeatures, 341 "VkDevice supports VK_QCOM_render_pass_store_ops extension.", &members, 342 "http://anglebug.com/5055"}; 343 344 FeatureInfo supportsRenderPassLoadStoreOpNone = { 345 "supportsRenderPassLoadStoreOpNone", FeatureCategory::VulkanFeatures, 346 "VkDevice supports VK_EXT_load_store_op_none extension.", &members, 347 "http://anglebug.com/5371"}; 348 349 FeatureInfo supportsDepthClipControl = { 350 "supportsDepthClipControl", FeatureCategory::VulkanFeatures, 351 "VkDevice supports VK_EXT_depth_clip_control extension.", &members, 352 "http://anglebug.com/5421"}; 353 354 FeatureInfo supportsBlendOperationAdvanced = { 355 "supportsBlendOperationAdvanced", FeatureCategory::VulkanFeatures, 356 "VkDevice supports VK_EXT_blend_operation_advanced extension.", &members, 357 "http://anglebug.com/3586"}; 358 359 FeatureInfo forceMaxUniformBufferSize16KB = { 360 "forceMaxUniformBufferSize16KB", FeatureCategory::VulkanWorkarounds, 361 "Force max uniform buffer size to 16K on some device due to bug", &members, 362 "https://issuetracker.google.com/161903006"}; 363 364 FeatureInfo supportsImageFormatList = { 365 "supportsImageFormatList", FeatureCategory::VulkanFeatures, 366 "Enable VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT by default for ICDs " 367 "that support VK_KHR_image_format_list", 368 &members, "http://anglebug.com/5281"}; 369 370 FeatureInfo enableMultisampledRenderToTexture = { 371 "enableMultisampledRenderToTexture", FeatureCategory::VulkanWorkarounds, 372 "Expose EXT_multisampled_render_to_texture", &members, "http://anglebug.com/4937"}; 373 374 FeatureInfo deferFlushUntilEndRenderPass = { 375 "deferFlushUntilEndRenderPass", FeatureCategory::VulkanWorkarounds, 376 "Allow glFlush to be deferred until renderpass ends", &members, 377 "https://issuetracker.google.com/issues/166475273"}; 378 379 FeatureInfo waitIdleBeforeSwapchainRecreation = { 380 "waitIdleBeforeSwapchainRecreation", FeatureCategory::VulkanWorkarounds, 381 "Before passing an oldSwapchain to VkSwapchainCreateInfoKHR, wait for queue to be idle. " 382 "Works around a bug on platforms which destroy oldSwapchain in vkCreateSwapchainKHR.", 383 &members, "http://anglebug.com/5061"}; 384 385 FeatureInfo forceTextureLodOffset1 = { 386 "forceTextureLodOffset1", 387 FeatureCategory::VulkanWorkarounds, 388 "Increase the minimum texture level-of-detail by 1 when sampling.", 389 &members, 390 }; 391 392 FeatureInfo forceTextureLodOffset2 = { 393 "forceTextureLodOffset2", 394 FeatureCategory::VulkanWorkarounds, 395 "Increase the minimum texture level-of-detail by 2 when sampling.", 396 &members, 397 }; 398 399 FeatureInfo forceTextureLodOffset3 = { 400 "forceTextureLodOffset3", 401 FeatureCategory::VulkanWorkarounds, 402 "Increase the minimum texture level-of-detail by 3 when sampling.", 403 &members, 404 }; 405 406 FeatureInfo forceTextureLodOffset4 = { 407 "forceTextureLodOffset4", 408 FeatureCategory::VulkanWorkarounds, 409 "Increase the minimum texture level-of-detail by 4 when sampling.", 410 &members, 411 }; 412 413 FeatureInfo forceNearestFiltering = { 414 "forceNearestFiltering", 415 FeatureCategory::VulkanWorkarounds, 416 "Force nearest filtering when sampling.", 417 &members, 418 }; 419 420 FeatureInfo forceNearestMipFiltering = { 421 "forceNearestMipFiltering", 422 FeatureCategory::VulkanWorkarounds, 423 "Force nearest mip filtering when sampling.", 424 &members, 425 }; 426 427 FeatureInfo compressVertexData = { 428 "compressVertexData", 429 FeatureCategory::VulkanWorkarounds, 430 "Compress vertex data to smaller data types when " 431 "possible. Using this feature makes ANGLE non-conformant.", 432 &members, 433 }; 434 435 FeatureInfo preferDrawClearOverVkCmdClearAttachments = { 436 "preferDrawClearOverVkCmdClearAttachments", FeatureCategory::VulkanWorkarounds, 437 "On some hardware, clear using a draw call instead of vkCmdClearAttachments in the middle " 438 "of render pass due to bugs", 439 &members, "https://issuetracker.google.com/166809097"}; 440 441 FeatureInfo emulatedPrerotation90 = {"emulatedPrerotation90", FeatureCategory::VulkanFeatures, 442 "Emulate 90-degree prerotation.", &members, 443 "http://anglebug.com/4901"}; 444 445 FeatureInfo emulatedPrerotation180 = {"emulatedPrerotation180", FeatureCategory::VulkanFeatures, 446 "Emulate 180-degree prerotation.", &members, 447 "http://anglebug.com/4901"}; 448 449 FeatureInfo emulatedPrerotation270 = {"emulatedPrerotation270", FeatureCategory::VulkanFeatures, 450 "Emulate 270-degree prerotation.", &members, 451 "http://anglebug.com/4901"}; 452 453 FeatureInfo generateSPIRVThroughGlslang = { 454 "generateSPIRVThroughGlslang", FeatureCategory::VulkanFeatures, 455 "Translate SPIR-V through glslang.", &members, "http://anglebug.com/4889"}; 456 457 FeatureInfo forceDriverUniformOverSpecConst = { 458 "forceDriverUniformOverSpecConst", FeatureCategory::VulkanWorkarounds, 459 "Forces using driver uniforms instead of specialization constants.", &members, 460 "http://issuetracker.google.com/173636783"}; 461 462 FeatureInfo exposeNonConformantExtensionsAndVersions = { 463 "exposeNonConformantExtensionsAndVersions", FeatureCategory::VulkanWorkarounds, 464 "Expose GLES versions and extensions that are not conformant.", &members, 465 "http://anglebug.com/5375"}; 466 467 FeatureInfo emulateR32fImageAtomicExchange = { 468 "emulateR32fImageAtomicExchange", FeatureCategory::VulkanWorkarounds, 469 "Emulate r32f images with r32ui to support imageAtomicExchange.", &members, 470 "http://anglebug.com/5535"}; 471 472 FeatureInfo supportsNegativeViewport = { 473 "supportsNegativeViewport", 474 FeatureCategory::VulkanFeatures, 475 "The driver supports inverting the viewport with a negative height.", 476 &members, 477 }; 478 479 FeatureInfo forceFragmentShaderPrecisionHighpToMediump = { 480 "forceFragmentShaderPrecisionHighpToMediump", FeatureCategory::VulkanWorkarounds, 481 "Forces highp precision in fragment shader to mediump.", &members, 482 "https://issuetracker.google.com/184850002"}; 483 484 FeatureInfo preferSubmitAtFBOBoundary = { 485 "preferSubmitAtFBOBoundary", FeatureCategory::VulkanWorkarounds, 486 "Submit commands to driver at each FBO boundary for performance improvements.", &members, 487 "https://issuetracker.google.com/187425444"}; 488 489 FeatureInfo useMultipleDescriptorsForExternalFormats = { 490 "useMultipleDescriptorsForExternalFormats", FeatureCategory::VulkanWorkarounds, 491 "Return a default descriptor count for external formats.", &members, 492 "http://anglebug.com/6141"}; 493 494 FeatureInfo supportsProtectedMemory = { 495 "supportsProtectedMemory", FeatureCategory::VulkanFeatures, 496 "VkDevice supports protected memory", &members, "http://anglebug.com/3965"}; 497 498 FeatureInfo supportsHostQueryReset = {"supportsHostQueryReset", FeatureCategory::VulkanFeatures, 499 "VkDevice supports VK_EXT_host_query_reset extension", 500 &members, "http://anglebug.com/6692"}; 501 502 FeatureInfo supportsSurfaceCapabilities2Extension = { 503 "supportsSurfaceCapabilities2Extension", 504 FeatureCategory::VulkanFeatures, 505 "VkInstance supports the VK_KHR_get_surface_capabilities2 extension", 506 &members, 507 }; 508 509 FeatureInfo supportsSurfaceProtectedCapabilitiesExtension = { 510 "supportsSurfaceProtectedCapabilitiesExtension", 511 FeatureCategory::VulkanFeatures, 512 "VkInstance supports the VK_KHR_surface_protected_capabilities extension", 513 &members, 514 }; 515 516 FeatureInfo supportsSurfacelessQueryExtension = { 517 "supportsSurfacelessQueryExtension", 518 FeatureCategory::VulkanFeatures, 519 "VkInstance supports the VK_GOOGLE_surfaceless_query extension", 520 &members, 521 }; 522 523 FeatureInfo supportsSurfaceProtectedSwapchains = { 524 "supportsSurfaceProtectedSwapchains", 525 FeatureCategory::VulkanFeatures, 526 "VkSurface supportsProtected for protected swapchains", 527 &members, 528 }; 529 530 FeatureInfo overrideSurfaceFormatRGB8ToRGBA8 = { 531 "overrideSurfaceFormatRGB8ToRGBA8", FeatureCategory::VulkanWorkarounds, 532 "Override surface format GL_RGB8 to GL_RGBA8", &members, "http://anglebug.com/6651"}; 533 534 FeatureInfo supportsSharedPresentableImageExtension = { 535 "supportsSharedPresentableImageExtension", 536 FeatureCategory::VulkanFeatures, 537 "VkSurface supports the VK_KHR_shared_presentable_images extension", 538 &members, 539 }; 540 541 FeatureInfo supportsShaderFramebufferFetch = { 542 "supportsShaderFramebufferFetch", 543 FeatureCategory::VulkanFeatures, 544 "Whether the Vulkan backend supports coherent framebuffer fetch", 545 &members, 546 }; 547 548 FeatureInfo supportsShaderFramebufferFetchNonCoherent = { 549 "supportsShaderFramebufferFetchNonCoherent", 550 FeatureCategory::VulkanFeatures, 551 "Whether the Vulkan backend supports non-coherent framebuffer fetch", 552 &members, 553 }; 554 555 FeatureInfo supportsLockSurfaceExtension = { 556 "supportsLockSurfaceExtension", 557 FeatureCategory::VulkanFeatures, 558 "Surface supports the EGL_KHR_lock_surface3 extension", 559 &members, 560 }; 561 562 FeatureInfo swapbuffersOnFlushOrFinishWithSingleBuffer = { 563 "swapbuffersOnFlushOrFinishWithSingleBuffer", FeatureCategory::VulkanFeatures, 564 "Bypass deferredFlush with calling swapbuffers on flush or finish when in Shared Present " 565 "mode", 566 &members, "http://anglebug.com/6878"}; 567 568 FeatureInfo emulateDithering = {"emulateDithering", FeatureCategory::VulkanFeatures, 569 "Emulate OpenGL dithering", &members, 570 "http://anglebug.com/6755"}; 571 572 FeatureInfo emulateAdvancedBlendEquations = { 573 "emulateAdvancedBlendEquations", FeatureCategory::VulkanFeatures, 574 "Emulate GL_KHR_blend_equation_advanced", &members, "http://anglebug.com/3586"}; 575 576 FeatureInfo bottomLeftOriginPresentRegionRectangles = { 577 "bottomLeftOriginPresentRegionRectangles", 578 FeatureCategory::VulkanWorkarounds, 579 "On some platforms present region rectangles are expected to have a bottom-left origin, " 580 "instead of top-left origin as from spec", 581 &members, 582 }; 583 584 FeatureInfo forceSubmitImmutableTextureUpdates = { 585 "forceSubmitImmutableTextureUpdates", FeatureCategory::VulkanAppWorkarounds, 586 "Force submit updates to immutable textures", &members, "http://anglebug.com/6929"}; 587 588 FeatureInfo retainSPIRVDebugInfo = {"retainSPIRVDebugInfo", FeatureCategory::VulkanFeatures, 589 "Retain debug info in SPIR-V blob.", &members, 590 "http://anglebug.com/5901"}; 591 592 FeatureInfo createPipelineDuringLink = { 593 "createPipelineDuringLink", FeatureCategory::VulkanFeatures, 594 "Create pipeline with default state during glLinkProgram", &members, 595 "http://anglebug.com/7046"}; 596 }; 597 598 inline FeaturesVk::FeaturesVk() = default; 599 inline FeaturesVk::~FeaturesVk() = default; 600 601 } // namespace angle 602 603 #endif // ANGLE_PLATFORM_FEATURESVK_H_ 604