summaryrefslogtreecommitdiffstats
path: root/gfx/angle/checkout/include/platform/FeaturesVk_autogen.h
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/angle/checkout/include/platform/FeaturesVk_autogen.h')
-rw-r--r--gfx/angle/checkout/include/platform/FeaturesVk_autogen.h786
1 files changed, 786 insertions, 0 deletions
diff --git a/gfx/angle/checkout/include/platform/FeaturesVk_autogen.h b/gfx/angle/checkout/include/platform/FeaturesVk_autogen.h
new file mode 100644
index 0000000000..dadd64c49b
--- /dev/null
+++ b/gfx/angle/checkout/include/platform/FeaturesVk_autogen.h
@@ -0,0 +1,786 @@
+// GENERATED FILE - DO NOT EDIT.
+// Generated by gen_features.py using data from vk_features.json.
+//
+// Copyright 2022 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// FeaturesVk_autogen.h: Optional features for the Vulkan renderer.
+
+#ifndef ANGLE_PLATFORM_FEATURESVK_H_
+#define ANGLE_PLATFORM_FEATURESVK_H_
+
+#include "platform/Feature.h"
+
+namespace angle
+{
+
+struct FeaturesVk : FeatureSetBase
+{
+ FeaturesVk();
+ ~FeaturesVk();
+
+ FeatureInfo bresenhamLineRasterization = {
+ "bresenhamLineRasterization",
+ FeatureCategory::VulkanFeatures,
+ "Enable Bresenham line rasterization via VK_EXT_line_rasterization extension",
+ &members,
+ };
+
+ FeatureInfo provokingVertex = {
+ "provokingVertex",
+ FeatureCategory::VulkanFeatures,
+ "Enable provoking vertex mode via VK_EXT_provoking_vertex extension",
+ &members,
+ };
+
+ FeatureInfo forceFallbackFormat = {
+ "forceFallbackFormat",
+ FeatureCategory::VulkanWorkarounds,
+ "Force a fallback format for angle_end2end_tests",
+ &members,
+ };
+
+ FeatureInfo clampPointSize = {
+ "clampPointSize", FeatureCategory::VulkanWorkarounds,
+ "The point size range reported from the API is inconsistent with the actual behavior",
+ &members, "http://anglebug.com/2970"};
+
+ FeatureInfo depthClamping = {
+ "depthClamping", FeatureCategory::VulkanWorkarounds,
+ "The depth value is not clamped to [0,1] for floating point depth buffers.", &members,
+ "http://anglebug.com/3970"};
+
+ FeatureInfo mutableMipmapTextureUpload = {
+ "mutableMipmapTextureUpload", FeatureCategory::VulkanFeatures,
+ "Enable uploading the previously defined mutable mipmap texture.", &members,
+ "https://anglebug.com/7308"};
+
+ FeatureInfo supportsRenderpass2 = {
+ "supportsRenderpass2",
+ FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_KHR_create_renderpass2 extension",
+ &members,
+ };
+
+ FeatureInfo supportsIncrementalPresent = {
+ "supportsIncrementalPresent",
+ FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_KHR_incremental_present extension",
+ &members,
+ };
+
+ FeatureInfo supportsAndroidHardwareBuffer = {
+ "supportsAndroidHardwareBuffer",
+ FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_ANDROID_external_memory_android_hardware_buffer extension",
+ &members,
+ };
+
+ FeatureInfo supportsGGPFrameToken = {
+ "supportsGGPFrameToken",
+ FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_GGP_frame_token extension",
+ &members,
+ };
+
+ FeatureInfo supportsExternalMemoryFd = {
+ "supportsExternalMemoryFd",
+ FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_KHR_external_memory_fd extension",
+ &members,
+ };
+
+ FeatureInfo supportsExternalMemoryFuchsia = {
+ "supportsExternalMemoryFuchsia",
+ FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_FUCHSIA_external_memory extension",
+ &members,
+ };
+
+ FeatureInfo supportsFilteringPrecision = {
+ "supportsFilteringPrecision",
+ FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_GOOGLE_sampler_filtering_precision extension",
+ &members,
+ };
+
+ FeatureInfo supportsExternalFenceCapabilities = {
+ "supportsExternalFenceCapabilities",
+ FeatureCategory::VulkanFeatures,
+ "VkInstance supports the VK_KHR_external_fence_capabilities extension",
+ &members,
+ };
+
+ FeatureInfo supportsExternalSemaphoreCapabilities = {
+ "supportsExternalSemaphoreCapabilities",
+ FeatureCategory::VulkanFeatures,
+ "VkInstance supports the VK_KHR_external_semaphore_capabilities extension",
+ &members,
+ };
+
+ FeatureInfo supportsExternalSemaphoreFd = {
+ "supportsExternalSemaphoreFd",
+ FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_KHR_external_semaphore_fd extension",
+ &members,
+ };
+
+ FeatureInfo supportsExternalSemaphoreFuchsia = {
+ "supportsExternalSemaphoreFuchsia",
+ FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_FUCHSIA_external_semaphore extension",
+ &members,
+ };
+
+ FeatureInfo supportsExternalFenceFd = {
+ "supportsExternalFenceFd", FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_KHR_external_fence_fd extension", &members,
+ "http://anglebug.com/2517"};
+
+ FeatureInfo supportsAndroidNativeFenceSync = {
+ "supportsAndroidNativeFenceSync", FeatureCategory::VulkanFeatures,
+ "VkDevice supports the EGL_ANDROID_native_fence_sync extension", &members,
+ "http://anglebug.com/2517"};
+
+ FeatureInfo supportsImageCubeArray = {"supportsImageCubeArray", FeatureCategory::VulkanFeatures,
+ "VkDevice supports the imageCubeArray feature properly",
+ &members, "http://anglebug.com/3584"};
+
+ FeatureInfo supportsPipelineStatisticsQuery = {
+ "supportsPipelineStatisticsQuery", FeatureCategory::VulkanFeatures,
+ "VkDevice supports the pipelineStatisticsQuery feature", &members,
+ "http://anglebug.com/5430"};
+
+ FeatureInfo supportsShaderStencilExport = {
+ "supportsShaderStencilExport",
+ FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_EXT_shader_stencil_export extension",
+ &members,
+ };
+
+ FeatureInfo supportsYUVSamplerConversion = {
+ "supportsYUVSamplerConversion",
+ FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_KHR_sampler_ycbcr_conversion extension",
+ &members,
+ };
+
+ FeatureInfo emulateTransformFeedback = {
+ "emulateTransformFeedback", FeatureCategory::VulkanFeatures,
+ "Emulate transform feedback as the VK_EXT_transform_feedback is not present.", &members,
+ "http://anglebug.com/3205"};
+
+ FeatureInfo supportsTransformFeedbackExtension = {
+ "supportsTransformFeedbackExtension", FeatureCategory::VulkanFeatures,
+ "Transform feedback uses the VK_EXT_transform_feedback extension.", &members,
+ "http://anglebug.com/3206"};
+
+ FeatureInfo supportsGeometryStreamsCapability = {
+ "supportsGeometryStreamsCapability", FeatureCategory::VulkanFeatures,
+ "Implementation supports the GeometryStreams SPIR-V capability.", &members,
+ "http://anglebug.com/3206"};
+
+ FeatureInfo supportsIndexTypeUint8 = {"supportsIndexTypeUint8", FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_EXT_index_type_uint8 extension",
+ &members, "http://anglebug.com/4405"};
+
+ FeatureInfo supportsCustomBorderColor = {
+ "supportsCustomBorderColor", FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_EXT_custom_border_color extension", &members,
+ "http://anglebug.com/3577"};
+
+ FeatureInfo supportsMultiDrawIndirect = {
+ "supportsMultiDrawIndirect", FeatureCategory::VulkanFeatures,
+ "VkDevice supports the multiDrawIndirect extension", &members, "http://anglebug.com/6439"};
+
+ FeatureInfo supportsDepthStencilResolve = {"supportsDepthStencilResolve",
+ FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_KHR_depth_stencil_resolve "
+ "extension with the independentResolveNone feature",
+ &members, "http://anglebug.com/4836"};
+
+ FeatureInfo supportsMultisampledRenderToSingleSampledGOOGLEX = {
+ "supportsMultisampledRenderToSingleSampledGOOGLEX", FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_GOOGLEX_multisampled_render_to_single_sampled extension",
+ &members, "http://anglebug.com/4836"};
+
+ FeatureInfo supportsMultisampledRenderToSingleSampled = {
+ "supportsMultisampledRenderToSingleSampled", FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_EXT_multisampled_render_to_single_sampled extension", &members,
+ "http://anglebug.com/4836"};
+
+ FeatureInfo supportsMultiview = {"supportsMultiview", FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_KHR_multiview extension", &members,
+ "http://anglebug.com/6048"};
+
+ FeatureInfo disableFifoPresentMode = {
+ "disableFifoPresentMode", FeatureCategory::VulkanWorkarounds,
+ "VK_PRESENT_MODE_FIFO_KHR causes random timeouts", &members, "http://anglebug.com/3153"};
+
+ FeatureInfo forceD16TexFilter = {
+ "forceD16TexFilter", FeatureCategory::VulkanWorkarounds,
+ "VK_FORMAT_D16_UNORM does not support VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT, "
+ "which prevents OES_depth_texture from being supported.",
+ &members, "http://anglebug.com/3452"};
+
+ FeatureInfo disableFlippingBlitWithCommand = {
+ "disableFlippingBlitWithCommand", FeatureCategory::VulkanWorkarounds,
+ "vkCmdBlitImage with flipped coordinates blits incorrectly.", &members,
+ "http://anglebug.com/3498"};
+
+ FeatureInfo perFrameWindowSizeQuery = {
+ "perFrameWindowSizeQuery", FeatureCategory::VulkanWorkarounds,
+ "Vulkan swapchain is not returning VK_ERROR_OUT_OF_DATE when window resizing", &members,
+ "http://anglebug.com/3623, http://anglebug.com/3624, http://anglebug.com/3625"};
+
+ FeatureInfo padBuffersToMaxVertexAttribStride = {
+ "padBuffersToMaxVertexAttribStride", FeatureCategory::VulkanWorkarounds,
+ "Vulkan considers vertex attribute accesses to count up to the last multiple of the "
+ "stride. This additional access supports AMD's robust buffer access implementation. "
+ "AMDVLK in particular will return incorrect values when the vertex access extends into "
+ "the range that would be the stride padding and the buffer is too small. "
+ "This workaround limits GL_MAX_VERTEX_ATTRIB_STRIDE to a maximum value and "
+ "pads up every buffer allocation size to be a multiple of the maximum stride.",
+ &members, "http://anglebug.com/4428"};
+
+ FeatureInfo supportsExternalMemoryDmaBufAndModifiers = {
+ "supportsExternalMemoryDmaBufAndModifiers", FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_EXT_external_memory_dma_buf and VK_EXT_image_drm_format_modifier "
+ "extensions",
+ &members, "http://anglebug.com/6248"};
+
+ FeatureInfo supportsExternalMemoryHost = {
+ "supportsExternalMemoryHost",
+ FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_EXT_external_memory_host extension",
+ &members,
+ };
+
+ FeatureInfo allocateNonZeroMemory = {
+ "allocateNonZeroMemory", FeatureCategory::VulkanFeatures,
+ "Fill new allocations with non-zero values to flush out errors.", &members,
+ "http://anglebug.com/4384"};
+
+ FeatureInfo logMemoryReportCallbacks = {
+ "logMemoryReportCallbacks",
+ FeatureCategory::VulkanFeatures,
+ "Log each callback from VK_EXT_device_memory_report",
+ &members,
+ };
+
+ FeatureInfo logMemoryReportStats = {
+ "logMemoryReportStats",
+ FeatureCategory::VulkanFeatures,
+ "Log stats from VK_EXT_device_memory_report each swap",
+ &members,
+ };
+
+ FeatureInfo shadowBuffers = {
+ "shadowBuffers", FeatureCategory::VulkanFeatures,
+ "Allocate a shadow buffer for GL buffer objects to reduce glMap* latency.", &members,
+ "http://anglebug.com/4339"};
+
+ FeatureInfo preferCPUForBufferSubData = {
+ "preferCPUForBufferSubData", FeatureCategory::VulkanFeatures,
+ "Prefer use CPU to do bufferSubData instead of staged update.", &members,
+ "http://issuetracker.google.com/200067929"};
+
+ FeatureInfo persistentlyMappedBuffers = {
+ "persistentlyMappedBuffers", FeatureCategory::VulkanFeatures,
+ "Persistently map buffer memory to reduce map/unmap IOCTL overhead.", &members,
+ "http://anglebug.com/2162"};
+
+ FeatureInfo enablePreRotateSurfaces = {"enablePreRotateSurfaces",
+ FeatureCategory::VulkanFeatures,
+ "Enable Android pre-rotation for landscape applications",
+ &members, "http://anglebug.com/3502"};
+
+ FeatureInfo enablePrecisionQualifiers = {
+ "enablePrecisionQualifiers", FeatureCategory::VulkanFeatures,
+ "Enable precision qualifiers in shaders", &members, "http://anglebug.com/3078"};
+
+ FeatureInfo preferAggregateBarrierCalls = {
+ "preferAggregateBarrierCalls", FeatureCategory::VulkanWorkarounds,
+ "Single barrier call is preferred over multiple calls with "
+ "fine grained pipeline stage dependency information",
+ &members, "http://anglebug.com/4633"};
+
+ FeatureInfo preferSkippingInvalidateForEmulatedFormats = {
+ "preferSkippingInvalidateForEmulatedFormats", FeatureCategory::VulkanWorkarounds,
+ "Skipping invalidate is preferred for emulated formats that have extra channels over "
+ "re-clearing the image",
+ &members, "http://anglebug.com/6860"};
+
+ FeatureInfo asyncCommandQueue = {"asyncCommandQueue", FeatureCategory::VulkanFeatures,
+ "Use CommandQueue worker thread to dispatch work to GPU.",
+ &members, "http://anglebug.com/4324"};
+
+ FeatureInfo supportsShaderFloat16 = {
+ "supportsShaderFloat16", FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_KHR_shader_float16_int8 extension "
+ "and has the shaderFloat16 feature",
+ &members, "http://anglebug.com/4551"};
+
+ FeatureInfo allowGenerateMipmapWithCompute = {
+ "allowGenerateMipmapWithCompute", FeatureCategory::VulkanFeatures,
+ "Use the compute path to generate mipmaps on devices that meet the minimum requirements, "
+ "and the performance is better.",
+ &members, "http://anglebug.com/4551"};
+
+ FeatureInfo supportsRenderPassStoreOpNone = {
+ "supportsRenderPassStoreOpNone", FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_QCOM_render_pass_store_ops extension.", &members,
+ "http://anglebug.com/5055"};
+
+ FeatureInfo supportsRenderPassLoadStoreOpNone = {
+ "supportsRenderPassLoadStoreOpNone", FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_EXT_load_store_op_none extension.", &members,
+ "http://anglebug.com/5371"};
+
+ FeatureInfo disallowMixedDepthStencilLoadOpNoneAndLoad = {
+ "disallowMixedDepthStencilLoadOpNoneAndLoad", FeatureCategory::VulkanWorkarounds,
+ "Disallow use of LOAD_OP_NONE for only one of the depth or stencil aspects of a "
+ "depth/stencil attachment",
+ &members, "http://anglebug.com/7370"};
+
+ FeatureInfo supportsDepthClipControl = {
+ "supportsDepthClipControl", FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_EXT_depth_clip_control extension.", &members,
+ "http://anglebug.com/5421"};
+
+ FeatureInfo supportsPrimitiveTopologyListRestart = {
+ "supportsPrimitiveTopologyListRestart", FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_EXT_primitive_topology_list_restart extension.", &members,
+ "http://anglebug.com/3832"};
+
+ FeatureInfo supportsBlendOperationAdvanced = {
+ "supportsBlendOperationAdvanced", FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_EXT_blend_operation_advanced extension.", &members,
+ "http://anglebug.com/3586"};
+
+ FeatureInfo forceMaxUniformBufferSize16KB = {
+ "forceMaxUniformBufferSize16KB", FeatureCategory::VulkanWorkarounds,
+ "Force max uniform buffer size to 16K on some device due to bug", &members,
+ "https://issuetracker.google.com/161903006"};
+
+ FeatureInfo supportsImageFormatList = {
+ "supportsImageFormatList", FeatureCategory::VulkanFeatures,
+ "Enable VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT by default for ICDs "
+ "that support VK_KHR_image_format_list",
+ &members, "http://anglebug.com/5281"};
+
+ FeatureInfo enableMultisampledRenderToTexture = {
+ "enableMultisampledRenderToTexture", FeatureCategory::VulkanWorkarounds,
+ "Expose EXT_multisampled_render_to_texture", &members, "http://anglebug.com/4937"};
+
+ FeatureInfo deferFlushUntilEndRenderPass = {
+ "deferFlushUntilEndRenderPass", FeatureCategory::VulkanWorkarounds,
+ "Allow glFlush to be deferred until renderpass ends", &members,
+ "https://issuetracker.google.com/issues/166475273"};
+
+ FeatureInfo waitIdleBeforeSwapchainRecreation = {
+ "waitIdleBeforeSwapchainRecreation", FeatureCategory::VulkanWorkarounds,
+ "Before passing an oldSwapchain to VkSwapchainCreateInfoKHR, wait for queue to be idle. "
+ "Works around a bug on platforms which destroy oldSwapchain in vkCreateSwapchainKHR.",
+ &members, "http://anglebug.com/5061"};
+
+ FeatureInfo forceTextureLodOffset1 = {
+ "forceTextureLodOffset1",
+ FeatureCategory::VulkanWorkarounds,
+ "Increase the minimum texture level-of-detail by 1 when sampling.",
+ &members,
+ };
+
+ FeatureInfo forceTextureLodOffset2 = {
+ "forceTextureLodOffset2",
+ FeatureCategory::VulkanWorkarounds,
+ "Increase the minimum texture level-of-detail by 2 when sampling.",
+ &members,
+ };
+
+ FeatureInfo forceTextureLodOffset3 = {
+ "forceTextureLodOffset3",
+ FeatureCategory::VulkanWorkarounds,
+ "Increase the minimum texture level-of-detail by 3 when sampling.",
+ &members,
+ };
+
+ FeatureInfo forceTextureLodOffset4 = {
+ "forceTextureLodOffset4",
+ FeatureCategory::VulkanWorkarounds,
+ "Increase the minimum texture level-of-detail by 4 when sampling.",
+ &members,
+ };
+
+ FeatureInfo forceNearestFiltering = {
+ "forceNearestFiltering",
+ FeatureCategory::VulkanWorkarounds,
+ "Force nearest filtering when sampling.",
+ &members,
+ };
+
+ FeatureInfo forceNearestMipFiltering = {
+ "forceNearestMipFiltering",
+ FeatureCategory::VulkanWorkarounds,
+ "Force nearest mip filtering when sampling.",
+ &members,
+ };
+
+ FeatureInfo compressVertexData = {
+ "compressVertexData",
+ FeatureCategory::VulkanWorkarounds,
+ "Compress vertex data to smaller data types when "
+ "possible. Using this feature makes ANGLE non-conformant.",
+ &members,
+ };
+
+ FeatureInfo preferDrawClearOverVkCmdClearAttachments = {
+ "preferDrawClearOverVkCmdClearAttachments", FeatureCategory::VulkanWorkarounds,
+ "On some hardware, clear using a draw call instead of vkCmdClearAttachments in the middle "
+ "of render pass due to bugs",
+ &members, "https://issuetracker.google.com/166809097"};
+
+ FeatureInfo emulatedPrerotation90 = {"emulatedPrerotation90", FeatureCategory::VulkanFeatures,
+ "Emulate 90-degree prerotation.", &members,
+ "http://anglebug.com/4901"};
+
+ FeatureInfo emulatedPrerotation180 = {"emulatedPrerotation180", FeatureCategory::VulkanFeatures,
+ "Emulate 180-degree prerotation.", &members,
+ "http://anglebug.com/4901"};
+
+ FeatureInfo emulatedPrerotation270 = {"emulatedPrerotation270", FeatureCategory::VulkanFeatures,
+ "Emulate 270-degree prerotation.", &members,
+ "http://anglebug.com/4901"};
+
+ FeatureInfo generateSPIRVThroughGlslang = {
+ "generateSPIRVThroughGlslang", FeatureCategory::VulkanFeatures,
+ "Translate SPIR-V through glslang.", &members, "http://anglebug.com/4889"};
+
+ FeatureInfo preferDriverUniformOverSpecConst = {
+ "preferDriverUniformOverSpecConst", FeatureCategory::VulkanFeatures,
+ "Prefer using driver uniforms instead of specialization constants.", &members,
+ "http://anglebug.com/7406"};
+
+ FeatureInfo exposeNonConformantExtensionsAndVersions = {
+ "exposeNonConformantExtensionsAndVersions", FeatureCategory::VulkanWorkarounds,
+ "Expose GLES versions and extensions that are not conformant.", &members,
+ "http://anglebug.com/5375"};
+
+ FeatureInfo emulateR32fImageAtomicExchange = {
+ "emulateR32fImageAtomicExchange", FeatureCategory::VulkanWorkarounds,
+ "Emulate r32f images with r32ui to support imageAtomicExchange.", &members,
+ "http://anglebug.com/5535"};
+
+ FeatureInfo supportsNegativeViewport = {
+ "supportsNegativeViewport",
+ FeatureCategory::VulkanFeatures,
+ "The driver supports inverting the viewport with a negative height.",
+ &members,
+ };
+
+ FeatureInfo forceFragmentShaderPrecisionHighpToMediump = {
+ "forceFragmentShaderPrecisionHighpToMediump", FeatureCategory::VulkanWorkarounds,
+ "Forces highp precision in fragment shader to mediump.", &members,
+ "https://issuetracker.google.com/184850002"};
+
+ FeatureInfo preferSubmitAtFBOBoundary = {
+ "preferSubmitAtFBOBoundary", FeatureCategory::VulkanWorkarounds,
+ "Submit commands to driver at each FBO boundary for performance improvements.", &members,
+ "https://issuetracker.google.com/187425444"};
+
+ FeatureInfo useMultipleDescriptorsForExternalFormats = {
+ "useMultipleDescriptorsForExternalFormats", FeatureCategory::VulkanWorkarounds,
+ "Return a default descriptor count for external formats.", &members,
+ "http://anglebug.com/6141"};
+
+ FeatureInfo supportsProtectedMemory = {
+ "supportsProtectedMemory", FeatureCategory::VulkanFeatures,
+ "VkDevice supports protected memory", &members, "http://anglebug.com/3965"};
+
+ FeatureInfo supportsHostQueryReset = {"supportsHostQueryReset", FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_EXT_host_query_reset extension",
+ &members, "http://anglebug.com/6692"};
+
+ FeatureInfo supportsPipelineCreationCacheControl = {
+ "supportsPipelineCreationCacheControl", FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_EXT_pipeline_creation_cache_control extension", &members,
+ "http://anglebug.com/5881"};
+
+ FeatureInfo supportsPipelineCreationFeedback = {
+ "supportsPipelineCreationFeedback", FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_EXT_pipeline_creation_feedback extension", &members,
+ "http://anglebug.com/5881"};
+
+ FeatureInfo supportsPrimitivesGeneratedQuery = {
+ "supportsPrimitivesGeneratedQuery", FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_EXT_primitives_generated_query extension", &members,
+ "http://anglebug.com/5430"};
+
+ FeatureInfo supportsSurfaceCapabilities2Extension = {
+ "supportsSurfaceCapabilities2Extension",
+ FeatureCategory::VulkanFeatures,
+ "VkInstance supports the VK_KHR_get_surface_capabilities2 extension",
+ &members,
+ };
+
+ FeatureInfo supportsSurfaceProtectedCapabilitiesExtension = {
+ "supportsSurfaceProtectedCapabilitiesExtension",
+ FeatureCategory::VulkanFeatures,
+ "VkInstance supports the VK_KHR_surface_protected_capabilities extension",
+ &members,
+ };
+
+ FeatureInfo supportsSurfacelessQueryExtension = {
+ "supportsSurfacelessQueryExtension",
+ FeatureCategory::VulkanFeatures,
+ "VkInstance supports the VK_GOOGLE_surfaceless_query extension",
+ &members,
+ };
+
+ FeatureInfo supportsSurfaceProtectedSwapchains = {
+ "supportsSurfaceProtectedSwapchains",
+ FeatureCategory::VulkanFeatures,
+ "VkSurface supportsProtected for protected swapchains",
+ &members,
+ };
+
+ FeatureInfo overrideSurfaceFormatRGB8ToRGBA8 = {
+ "overrideSurfaceFormatRGB8ToRGBA8", FeatureCategory::VulkanWorkarounds,
+ "Override surface format GL_RGB8 to GL_RGBA8", &members, "http://anglebug.com/6651"};
+
+ FeatureInfo supportsSharedPresentableImageExtension = {
+ "supportsSharedPresentableImageExtension",
+ FeatureCategory::VulkanFeatures,
+ "VkSurface supports the VK_KHR_shared_presentable_images extension",
+ &members,
+ };
+
+ FeatureInfo supportsShaderFramebufferFetch = {
+ "supportsShaderFramebufferFetch",
+ FeatureCategory::VulkanFeatures,
+ "Whether the Vulkan backend supports coherent framebuffer fetch",
+ &members,
+ };
+
+ FeatureInfo supportsShaderFramebufferFetchNonCoherent = {
+ "supportsShaderFramebufferFetchNonCoherent",
+ FeatureCategory::VulkanFeatures,
+ "Whether the Vulkan backend supports non-coherent framebuffer fetch",
+ &members,
+ };
+
+ FeatureInfo permanentlySwitchToFramebufferFetchMode = {
+ "permanentlySwitchToFramebufferFetchMode",
+ FeatureCategory::VulkanFeatures,
+ "Whether the context should permanently switch to framebuffer fetch mode on first"
+ "encounter",
+ &members,
+ };
+
+ FeatureInfo supportsLockSurfaceExtension = {
+ "supportsLockSurfaceExtension",
+ FeatureCategory::VulkanFeatures,
+ "Surface supports the EGL_KHR_lock_surface3 extension",
+ &members,
+ };
+
+ FeatureInfo swapbuffersOnFlushOrFinishWithSingleBuffer = {
+ "swapbuffersOnFlushOrFinishWithSingleBuffer", FeatureCategory::VulkanFeatures,
+ "Bypass deferredFlush with calling swapbuffers on flush or finish when in Shared "
+ "Present mode",
+ &members, "http://anglebug.com/6878"};
+
+ FeatureInfo emulateDithering = {"emulateDithering", FeatureCategory::VulkanFeatures,
+ "Emulate OpenGL dithering", &members,
+ "http://anglebug.com/6755"};
+
+ FeatureInfo roundOutputAfterDithering = {
+ "roundOutputAfterDithering", FeatureCategory::VulkanWorkarounds,
+ "Round output after dithering to workaround a driver bug that rounds the output up",
+ &members, "http://anglebug.com/6953"};
+
+ FeatureInfo emulateAdvancedBlendEquations = {
+ "emulateAdvancedBlendEquations", FeatureCategory::VulkanFeatures,
+ "Emulate GL_KHR_blend_equation_advanced", &members, "http://anglebug.com/3586"};
+
+ FeatureInfo precisionSafeDivision = {
+ "precisionSafeDivision",
+ FeatureCategory::VulkanWorkarounds,
+ "Special case handling for platforms that do not generate 1.0f even when the dividend and"
+ "divisor have the same value",
+ &members,
+ };
+
+ FeatureInfo bottomLeftOriginPresentRegionRectangles = {
+ "bottomLeftOriginPresentRegionRectangles",
+ FeatureCategory::VulkanWorkarounds,
+ "On some platforms present region rectangles are expected to have a bottom-left origin, "
+ "instead of top-left origin as from spec",
+ &members,
+ };
+
+ FeatureInfo forceSubmitImmutableTextureUpdates = {
+ "forceSubmitImmutableTextureUpdates", FeatureCategory::VulkanAppWorkarounds,
+ "Force submit updates to immutable textures", &members, "http://anglebug.com/6929"};
+
+ FeatureInfo retainSPIRVDebugInfo = {"retainSPIRVDebugInfo", FeatureCategory::VulkanFeatures,
+ "Retain debug info in SPIR-V blob.", &members,
+ "http://anglebug.com/5901"};
+
+ FeatureInfo warmUpPipelineCacheAtLink = {
+ "warmUpPipelineCacheAtLink", FeatureCategory::VulkanFeatures,
+ "Warm up the Vulkan pipeline cache at link time", &members, "http://anglebug.com/5881"};
+
+ FeatureInfo preferDeviceLocalMemoryHostVisible = {
+ "preferDeviceLocalMemoryHostVisible", FeatureCategory::VulkanFeatures,
+ "Prefer adding HOST_VISIBLE flag for DEVICE_LOCAL memory when picking memory types",
+ &members, "http://anglebug.com/7047"};
+
+ FeatureInfo forceStaticVertexStrideState = {
+ "forceStaticVertexStrideState", FeatureCategory::VulkanWorkarounds,
+ "Force static state for VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT due to"
+ "driver bugs",
+ &members, "https://bugs.fuchsia.dev/p/fuchsia/issues/detail?id=107106"};
+
+ FeatureInfo supportsExtendedDynamicState = {
+ "supportsExtendedDynamicState", FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_EXT_extended_dynamic_state extension", &members,
+ "http://anglebug.com/5906"};
+
+ FeatureInfo supportsExtendedDynamicState2 = {
+ "supportsExtendedDynamicState2", FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_EXT_extended_dynamic_state2 extension", &members,
+ "http://anglebug.com/5906"};
+
+ FeatureInfo supportsLogicOpDynamicState = {
+ "supportsLogicOpDynamicState", FeatureCategory::VulkanFeatures,
+ "VkDevice supports the logicOp feature of VK_EXT_extended_dynamic_state2 extension",
+ &members, "http://anglebug.com/3862"};
+
+ FeatureInfo supportsFragmentShadingRate = {
+ "supportsFragmentShadingRate", FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_KHR_fragment_shading_rate extension", &members,
+ "http://anglebug.com/7172"};
+
+ FeatureInfo supportsFragmentShaderPixelInterlock = {
+ "supportsFragmentShaderPixelInterlock",
+ FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_EXT_fragment_shader_interlock extension "
+ "and has the fragmentShaderPixelInterlock feature",
+ &members,
+ };
+
+ FeatureInfo explicitlyEnablePerSampleShading = {
+ "explicitlyEnablePerSampleShading", FeatureCategory::VulkanWorkarounds,
+ "Explicitly enable per-sample shading if the fragment shader contains the "
+ "sample qualifier",
+ &members, "http://anglebug.com/6876"};
+
+ FeatureInfo forceContinuousRefreshOnSharedPresent = {
+ "forceContinuousRefreshOnSharedPresent", FeatureCategory::VulkanFeatures,
+ "Force to create vulkan swapchain with continuous refresh on shared present", &members,
+ "https://issuetracker.google.com/229267970"};
+
+ FeatureInfo supportsImage2dViewOf3d = {
+ "supportsImage2dViewOf3d", FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_EXT_image_2d_view_of_3d", &members, "https://anglebug.com/7320"};
+
+ FeatureInfo supportsImagelessFramebuffer = {
+ "supportsImagelessFramebuffer", FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_KHR_imageless_framebuffer extension", &members,
+ "http://anglebug.com/7553"};
+
+ FeatureInfo preferLinearFilterForYUV = {
+ "preferLinearFilterForYUV", FeatureCategory::VulkanFeatures,
+ "Prefer to use VK_FILTER_LINEAR for VkSamplerYcbcrConversion", &members,
+ "https://anglebug.com/7382"};
+
+ FeatureInfo supportsYuvTarget = {
+ "supportsYuvTarget",
+ FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_ANDROID_render_to_external_format and VK_EXT_ycbcr_attachment",
+ &members,
+ };
+
+ FeatureInfo useNonZeroStencilWriteMaskStaticState = {
+ "useNonZeroStencilWriteMaskStaticState", FeatureCategory::VulkanWorkarounds,
+ "Work around a driver bug where 0 in stencil write mask static state would make the"
+ "corresponding dynamic state malfunction in the presence of discard or alpha to coverage",
+ &members, "http://anglebug.com/7556"};
+
+ FeatureInfo mapUnspecifiedColorSpaceToPassThrough = {
+ "mapUnspecifiedColorSpaceToPassThrough",
+ FeatureCategory::VulkanFeatures,
+ "Use VK_COLOR_SPACE_PASS_THROUGH_EXT for EGL_NONE or unspecifed color "
+ "spaces",
+ &members,
+ };
+
+ FeatureInfo supportsTimestampSurfaceAttribute = {
+ "supportsTimestampSurfaceAttribute", FeatureCategory::VulkanFeatures,
+ "Platform supports setting frame timestamp surface attribute", &members,
+ "https://anglebug.com/7489"};
+
+ FeatureInfo supportsRasterizationOrderAttachmentAccess = {
+ "supportsRasterizationOrderAttachmentAccess", FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_EXT_rasterization_order_attachment_access extension", &members,
+ "https://anglebug.com/7604"};
+
+ FeatureInfo eglColorspaceAttributePassthrough = {
+ "eglColorspaceAttributePassthrough", FeatureCategory::VulkanFeatures,
+ "Support passthrough of EGL colorspace attribute values", &members,
+ "https://anglebug.com/7319"};
+
+ FeatureInfo supportsPipelineRobustness = {
+ "supportsPipelineRobustness", FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_EXT_pipeline_robustness extension", &members,
+ "https://anglebug.com/5845"};
+
+ FeatureInfo supportsVertexInputDynamicState = {
+ "supportsVertexInputDynamicState", FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_EXT_vertex_input_dynamic_state extension", &members,
+ "https://anglebug.com/7162"};
+
+ FeatureInfo supportsColorWriteEnable = {"supportsColorWriteEnable",
+ FeatureCategory::VulkanFeatures,
+ "VkDevice supports VK_EXT_color_write_enable extension",
+ &members, "https://anglebug.com/7161"};
+
+ FeatureInfo supportsPresentation = {
+ "supportsPresentation",
+ FeatureCategory::VulkanFeatures,
+ "VkDisplay supports presentation through a present family queue",
+ &members,
+ };
+
+ FeatureInfo supportsComputeTranscodeEtcToBc = {
+ "supportsComputeTranscodeEtcToBc",
+ FeatureCategory::VulkanFeatures,
+ "supports compute shader transcode etc format to bc format",
+ &members,
+ };
+
+ FeatureInfo supportsGraphicsPipelineLibrary = {
+ "supportsGraphicsPipelineLibrary", FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_EXT_graphics_pipeline_library extension", &members,
+ "https://anglebug.com/7369"};
+
+ FeatureInfo supportsPipelineProtectedAccess = {
+ "supportsPipelineProtectedAccess", FeatureCategory::VulkanFeatures,
+ "VkDevice supports the VK_EXT_pipeline_protected_access extension", &members,
+ "https://anglebug.com/7714"};
+
+ FeatureInfo preferSubmitOnAnySamplesPassedQueryEnd = {
+ "preferSubmitOnAnySamplesPassedQueryEnd", FeatureCategory::VulkanWorkarounds,
+ "Submit commands to driver when last GL_ANY_SAMPLES_PASSED query is made for performance "
+ "improvements.",
+ &members, "https://issuetracker.google.com/250706693"};
+};
+
+inline FeaturesVk::FeaturesVk() = default;
+inline FeaturesVk::~FeaturesVk() = default;
+
+} // namespace angle
+
+#endif // ANGLE_PLATFORM_FEATURESVK_H_