You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1261 lines
45 KiB
1261 lines
45 KiB
// 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_AUTOGEN_FEATURESVK_H_
|
|
#define ANGLE_PLATFORM_AUTOGEN_FEATURESVK_H_
|
|
|
|
#include "platform/Feature.h"
|
|
|
|
namespace angle
|
|
{
|
|
|
|
struct FeaturesVk : FeatureSetBase
|
|
{
|
|
FeaturesVk();
|
|
~FeaturesVk();
|
|
|
|
FeatureInfo appendAliasedMemoryDecorations = {
|
|
"appendAliasedMemoryDecorations",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Append aliased memory decoration to ssbo and image in SpirV if they are not declared with restrict memory qualifier in GLSL",
|
|
&members, "b/266235549"
|
|
};
|
|
|
|
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 supportsDepthClipEnable = {
|
|
"supportsDepthClipEnable",
|
|
FeatureCategory::VulkanFeatures,
|
|
"VkDevice supports the VK_EXT_depth_clip_enable extension.",
|
|
&members, "http://anglebug.com/3970"
|
|
};
|
|
|
|
FeatureInfo supportsDepthClampZeroOne = {
|
|
"supportsDepthClampZeroOne",
|
|
FeatureCategory::VulkanFeatures,
|
|
"VkDevice supports the VK_EXT_depth_clamp_zero_one extension",
|
|
&members, "http://anglebug.com/3970"
|
|
};
|
|
|
|
FeatureInfo clampFragDepth = {
|
|
"clampFragDepth",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"gl_FragDepth is not clamped when rendering to a floating point depth buffer without VK_EXT_depth_clamp_zero_one",
|
|
&members, "http://anglebug.com/3970"
|
|
};
|
|
|
|
FeatureInfo mutableMipmapTextureUpload = {
|
|
"mutableMipmapTextureUpload",
|
|
FeatureCategory::VulkanFeatures,
|
|
"Enable uploading the previously defined mutable mipmap texture.",
|
|
&members, "https://anglebug.com/7308"
|
|
};
|
|
|
|
FeatureInfo useVmaForImageSuballocation = {
|
|
"useVmaForImageSuballocation",
|
|
FeatureCategory::VulkanFeatures,
|
|
"Utilize VMA for image memory suballocation.",
|
|
&members,
|
|
};
|
|
|
|
FeatureInfo supportsMemoryBudget = {
|
|
"supportsMemoryBudget",
|
|
FeatureCategory::VulkanFeatures,
|
|
"VkDevice supports the VK_EXT_memory_budget extension.",
|
|
&members,
|
|
};
|
|
|
|
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 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 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 varyingsRequireMatchingPrecisionInSpirv = {
|
|
"varyingsRequireMatchingPrecisionInSpirv",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Add additional SPIRV instructions to make sure precision "
|
|
"between shader stages match with each other",
|
|
&members, "http://anglebug.com/7488"
|
|
};
|
|
|
|
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 slowAsyncCommandQueueForTesting = {
|
|
"slowAsyncCommandQueueForTesting",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Artificially slow down async command queue for threading testing",
|
|
&members, "https://anglebug.com/6574"
|
|
};
|
|
|
|
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 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 doubleDepthBiasConstantFactor = {
|
|
"doubleDepthBiasConstantFactor",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Due to a Vulkan spec ambiguity, some drivers interpret depthBiasConstantFactor as half "
|
|
"the expected 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 supportsExtendedDynamicState = {
|
|
"supportsExtendedDynamicState",
|
|
FeatureCategory::VulkanFeatures,
|
|
"VkDevice supports VK_EXT_extended_dynamic_state extension",
|
|
&members, "http://anglebug.com/5906"
|
|
};
|
|
|
|
FeatureInfo useVertexInputBindingStrideDynamicState = {
|
|
"useVertexInputBindingStrideDynamicState",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Use the Vertex Input Bininding Stride dynamic state from VK_EXT_extended_dynamic_state",
|
|
&members, "http://anglebug.com/5906"
|
|
};
|
|
|
|
FeatureInfo useCullModeDynamicState = {
|
|
"useCullModeDynamicState",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Use the Cull Mode dynamic state from VK_EXT_extended_dynamic_state",
|
|
&members, "http://anglebug.com/5906"
|
|
};
|
|
|
|
FeatureInfo useFrontFaceDynamicState = {
|
|
"useFrontFaceDynamicState",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Use the Front Face dynamic state from VK_EXT_extended_dynamic_state",
|
|
&members, "http://anglebug.com/5906"
|
|
};
|
|
|
|
FeatureInfo useDepthTestEnableDynamicState = {
|
|
"useDepthTestEnableDynamicState",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Use the Depth Test Enable dynamic state from VK_EXT_extended_dynamic_state",
|
|
&members, "http://anglebug.com/5906"
|
|
};
|
|
|
|
FeatureInfo useDepthWriteEnableDynamicState = {
|
|
"useDepthWriteEnableDynamicState",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Use the Depth Write Enable dynamic state from VK_EXT_extended_dynamic_state",
|
|
&members, "http://anglebug.com/5906"
|
|
};
|
|
|
|
FeatureInfo useDepthCompareOpDynamicState = {
|
|
"useDepthCompareOpDynamicState",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Use the Depth Compare Op dynamic state from VK_EXT_extended_dynamic_state",
|
|
&members, "http://anglebug.com/5906"
|
|
};
|
|
|
|
FeatureInfo useStencilTestEnableDynamicState = {
|
|
"useStencilTestEnableDynamicState",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Use the Stencil Test Enable dynamic state from VK_EXT_extended_dynamic_state",
|
|
&members, "http://anglebug.com/5906"
|
|
};
|
|
|
|
FeatureInfo useStencilOpDynamicState = {
|
|
"useStencilOpDynamicState",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Use the Stencil Op dynamic state from VK_EXT_extended_dynamic_state",
|
|
&members, "http://anglebug.com/5906"
|
|
};
|
|
|
|
FeatureInfo supportsExtendedDynamicState2 = {
|
|
"supportsExtendedDynamicState2",
|
|
FeatureCategory::VulkanFeatures,
|
|
"VkDevice supports VK_EXT_extended_dynamic_state2 extension",
|
|
&members, "http://anglebug.com/5906"
|
|
};
|
|
|
|
FeatureInfo usePrimitiveRestartEnableDynamicState = {
|
|
"usePrimitiveRestartEnableDynamicState",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Use the Primitive Restart Enable dynamic state from VK_EXT_extended_dynamic_state2",
|
|
&members, "http://anglebug.com/5906"
|
|
};
|
|
|
|
FeatureInfo useRasterizerDiscardEnableDynamicState = {
|
|
"useRasterizerDiscardEnableDynamicState",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Use the Rasterizer Discard Enable dynamic state from VK_EXT_extended_dynamic_state2",
|
|
&members, "http://anglebug.com/5906"
|
|
};
|
|
|
|
FeatureInfo useDepthBiasEnableDynamicState = {
|
|
"useDepthBiasEnableDynamicState",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Use the Depth Bias Enable dynamic state from VK_EXT_extended_dynamic_state2",
|
|
&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 explicitlyCastMediumpFloatTo16Bit = {
|
|
"explicitlyCastMediumpFloatTo16Bit",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Explicitly cast mediump floating point values to 16 bit",
|
|
&members, "https://issuetracker.google.com/274859104"
|
|
};
|
|
|
|
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 supportsSampler2dViewOf3d = {
|
|
"supportsSampler2dViewOf3d",
|
|
FeatureCategory::VulkanFeatures,
|
|
"VkDevice supports the sampler2DViewOf3D feature of 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 preferMonolithicPipelinesOverLibraries = {
|
|
"preferMonolithicPipelinesOverLibraries",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Whether monolithic pipelines perform significantly better than libraries",
|
|
&members, "https://anglebug.com/7369"
|
|
};
|
|
|
|
FeatureInfo slowDownMonolithicPipelineCreationForTesting = {
|
|
"slowDownMonolithicPipelineCreationForTesting",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Artificially slow down async monolithic pipeline creation for threading testing",
|
|
&members, "https://anglebug.com/7369"
|
|
};
|
|
|
|
FeatureInfo syncMonolithicPipelinesToBlobCache = {
|
|
"syncMonolithicPipelinesToBlobCache",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Whether it's beneficial to store monolithic pipelines in the blob cache when "
|
|
"VK_EXT_graphics_pipeline_library is in use. Otherwise the libraries are stored "
|
|
"only, and monolithic pipelines are recreated on every run",
|
|
&members, "https://anglebug.com/7369"
|
|
};
|
|
|
|
FeatureInfo mergeProgramPipelineCachesToGlobalCache = {
|
|
"mergeProgramPipelineCachesToGlobalCache",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Whether it's beneficial to merge the pipeline cache for the shaders subset of the "
|
|
"pipeline into the monolithic pipeline cache. Only useful on platforms where "
|
|
"monolithic pipelines can reuse blobs from partial pipelines",
|
|
&members, "https://anglebug.com/7369"
|
|
};
|
|
|
|
FeatureInfo hasEffectivePipelineCacheSerialization = {
|
|
"hasEffectivePipelineCacheSerialization",
|
|
FeatureCategory::VulkanFeatures,
|
|
"Whether the implementation serializes the Vulkan pipeline cache effectively. "
|
|
"On some implementations, pipeline cache serialization returns no data, so there "
|
|
"is no benefit to serializing it",
|
|
&members, "https://anglebug.com/7369"
|
|
};
|
|
|
|
FeatureInfo enableAsyncPipelineCacheCompression = {
|
|
"enableAsyncPipelineCacheCompression",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Enable compressing pipeline cache in a thread.",
|
|
&members, "http://anglebug.com/4722"
|
|
};
|
|
|
|
FeatureInfo supportsPipelineProtectedAccess = {
|
|
"supportsPipelineProtectedAccess",
|
|
FeatureCategory::VulkanFeatures,
|
|
"VkDevice supports the VK_EXT_pipeline_protected_access extension",
|
|
&members, "https://anglebug.com/7714"
|
|
};
|
|
|
|
FeatureInfo supportsMixedReadWriteDepthStencilLayouts = {
|
|
"supportsMixedReadWriteDepthStencilLayouts",
|
|
FeatureCategory::VulkanFeatures,
|
|
"VkDevice supports the mixed read and write depth/stencil layouts introduced by VK_KHR_maintenance2",
|
|
&members, "https://anglebug.com/7899"
|
|
};
|
|
|
|
FeatureInfo supportsSwapchainMaintenance1 = {
|
|
"supportsSwapchainMaintenance1",
|
|
FeatureCategory::VulkanFeatures,
|
|
"VkDevice supports the VK_EXT_surface_maintenance1 and VK_EXT_swapchain_maintenance1 extensions",
|
|
&members, "https://anglebug.com/7847"
|
|
};
|
|
|
|
FeatureInfo supportsGetMemoryRequirements2 = {
|
|
"supportsGetMemoryRequirements2",
|
|
FeatureCategory::VulkanFeatures,
|
|
"VkDevice supports the VK_KHR_get_memory_requirements2 extension",
|
|
&members, "https://anglebug.com/4830"
|
|
};
|
|
|
|
FeatureInfo supportsBindMemory2 = {
|
|
"supportsBindMemory2",
|
|
FeatureCategory::VulkanFeatures,
|
|
"VkDevice supports the VK_KHR_bind_memory2 extension",
|
|
&members, "https://anglebug.com/4966"
|
|
};
|
|
|
|
FeatureInfo supportsSamplerMirrorClampToEdge = {
|
|
"supportsSamplerMirrorClampToEdge",
|
|
FeatureCategory::VulkanFeatures,
|
|
"VkDevice supports the VK_KHR_sampler_mirror_clamp_to_edge extension",
|
|
&members,
|
|
};
|
|
|
|
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"
|
|
};
|
|
|
|
FeatureInfo forceWaitForSubmissionToCompleteForQueryResult = {
|
|
"forceWaitForSubmissionToCompleteForQueryResult",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Force wait for submission to complete before calling getQueryResult(wait).",
|
|
&members, "https://issuetracker.google.com/253522366"
|
|
};
|
|
|
|
FeatureInfo asyncCommandBufferReset = {
|
|
"asyncCommandBufferReset",
|
|
FeatureCategory::VulkanFeatures,
|
|
"Reset command buffer in async thread.",
|
|
&members, "https://issuetracker.google.com/255411748"
|
|
};
|
|
|
|
FeatureInfo useResetCommandBufferBitForSecondaryPools = {
|
|
"useResetCommandBufferBitForSecondaryPools",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Use VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT for initializing "
|
|
"SecondaryCommandPools when using VulkanSecondaryCommandBuffer. ",
|
|
&members,
|
|
};
|
|
|
|
FeatureInfo enablePipelineCacheDataCompression = {
|
|
"enablePipelineCacheDataCompression",
|
|
FeatureCategory::VulkanFeatures,
|
|
"enable pipeline cache data compression.",
|
|
&members, "https://issuetracker.google.com/258207403"
|
|
};
|
|
|
|
FeatureInfo supportsLegacyDithering = {
|
|
"supportsLegacyDithering",
|
|
FeatureCategory::VulkanFeatures,
|
|
"VkDevice supports the VK_EXT_legacy_dithering extension",
|
|
&members, "https://issuetracker.google.com/284462263"
|
|
};
|
|
|
|
FeatureInfo limitSampleCountTo2 = {
|
|
"limitSampleCountTo2",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Limit sample count to 2 to save memory on low end devices.",
|
|
&members, "http://anglebug.com/8162"
|
|
};
|
|
|
|
FeatureInfo supportsFullScreenExclusive = {
|
|
"supportsFullScreenExclusive",
|
|
FeatureCategory::VulkanFeatures,
|
|
"VkDevice supports the VK_EXT_full_screen_exclusive extension",
|
|
&members, "http://anglebug.com/8215"
|
|
};
|
|
|
|
FeatureInfo forceDisableFullScreenExclusive = {
|
|
"forceDisableFullScreenExclusive",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Device needs VK_EXT_full_screen_exclusive explicitly disabled",
|
|
&members, "http://anglebug.com/8215"
|
|
};
|
|
|
|
FeatureInfo supportsPortabilityEnumeration = {
|
|
"supportsPortabilityEnumeration",
|
|
FeatureCategory::VulkanFeatures,
|
|
"Vulkan supports VK_KHR_portability_enumeration extension",
|
|
&members, "http://anglebug.com/8229"
|
|
};
|
|
|
|
FeatureInfo enablePortabilityEnumeration = {
|
|
"enablePortabilityEnumeration",
|
|
FeatureCategory::VulkanWorkarounds,
|
|
"Enable use of VK_KHR_portability_enumeration extension",
|
|
&members, "http://anglebug.com/8229"
|
|
};
|
|
|
|
FeatureInfo supportsTimelineSemaphore = {
|
|
"supportsTimelineSemaphore",
|
|
FeatureCategory::VulkanFeatures,
|
|
"VkDevice supports the VK_KHR_timeline_semaphore extension",
|
|
&members,
|
|
};
|
|
|
|
};
|
|
|
|
inline FeaturesVk::FeaturesVk() = default;
|
|
inline FeaturesVk::~FeaturesVk() = default;
|
|
|
|
} // namespace angle
|
|
|
|
#endif // ANGLE_PLATFORM_AUTOGEN_FEATURESVK_H_
|