blob: 8579060bce9122a59efdb69501aa7cdf5a3548ca [file] [log] [blame]
{
"description": [
"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.",
"",
"vk_features.json: Optional features for the Vulkan renderer."
],
"features": [
{
"name": "append_aliased_memory_decorations",
"category": "Workarounds",
"description": [
"Append aliased memory decoration to ssbo and image in SpirV if they are not declared with restrict memory qualifier in GLSL"
],
"issue": "b/266235549"
},
{
"name": "bresenham_line_rasterization",
"category": "Features",
"description": [
"Enable Bresenham line rasterization via VK_EXT_line_rasterization extension"
]
},
{
"name": "provoking_vertex",
"category": "Features",
"description": [
"Enable provoking vertex mode via VK_EXT_provoking_vertex extension"
]
},
{
"name": "force_fallback_format",
"category": "Workarounds",
"description": [
"Force a fallback format for angle_end2end_tests"
]
},
{
"name": "clamp_point_size",
"category": "Workarounds",
"description": [
"The point size range reported from the API is inconsistent with the actual behavior"
],
"issue": "http://anglebug.com/2970"
},
{
"name": "supports_depth_clamp_zero_one",
"category": "Features",
"description": [
"VkDevice supports the VK_EXT_depth_clamp_zero_one extension"
],
"issue": "http://anglebug.com/3970"
},
{
"name": "clamp_frag_depth",
"category": "Workarounds",
"description": [
"gl_FragDepth is not clamped when rendering to a floating point depth buffer without VK_EXT_depth_clamp_zero_one"
],
"issue": "http://anglebug.com/3970"
},
{
"name": "mutable_mipmap_texture_upload",
"category": "Features",
"description": [
"Enable uploading the previously defined mutable mipmap texture."
],
"issue": "https://anglebug.com/7308"
},
{
"name": "use_vma_for_image_suballocation",
"category": "Features",
"description": [
"Utilize VMA for image memory suballocation."
]
},
{
"name": "supports_memory_budget",
"category": "Features",
"description": [
"VkDevice supports the VK_EXT_memory_budget extension."
]
},
{
"name": "supports_renderpass2",
"category": "Features",
"description": [
"VkDevice supports the VK_KHR_create_renderpass2 extension"
]
},
{
"name": "supports_incremental_present",
"category": "Features",
"description": [
"VkDevice supports the VK_KHR_incremental_present extension"
]
},
{
"name": "supports_android_hardware_buffer",
"category": "Features",
"description": [
"VkDevice supports the VK_ANDROID_external_memory_android_hardware_buffer extension"
]
},
{
"name": "supports_GGP_frame_token",
"category": "Features",
"description": [
"VkDevice supports the VK_GGP_frame_token extension"
]
},
{
"name": "supports_external_memory_fd",
"category": "Features",
"description": [
"VkDevice supports the VK_KHR_external_memory_fd extension"
]
},
{
"name": "supports_external_memory_fuchsia",
"category": "Features",
"description": [
"VkDevice supports the VK_FUCHSIA_external_memory extension"
]
},
{
"name": "supports_external_fence_capabilities",
"category": "Features",
"description": [
"VkInstance supports the VK_KHR_external_fence_capabilities extension"
]
},
{
"name": "supports_external_semaphore_capabilities",
"category": "Features",
"description": [
"VkInstance supports the VK_KHR_external_semaphore_capabilities extension"
]
},
{
"name": "supports_external_semaphore_fd",
"category": "Features",
"description": [
"VkDevice supports the VK_KHR_external_semaphore_fd extension"
]
},
{
"name": "supports_external_semaphore_fuchsia",
"category": "Features",
"description": [
"VkDevice supports the VK_FUCHSIA_external_semaphore extension"
]
},
{
"name": "supports_external_fence_fd",
"category": "Features",
"description": [
"VkDevice supports the VK_KHR_external_fence_fd extension"
],
"issue": "http://anglebug.com/2517"
},
{
"name": "supports_android_native_fence_sync",
"category": "Features",
"description": [
"VkDevice supports the EGL_ANDROID_native_fence_sync extension"
],
"issue": "http://anglebug.com/2517"
},
{
"name": "supports_image_cube_array",
"category": "Features",
"description": [
"VkDevice supports the imageCubeArray feature properly"
],
"issue": "http://anglebug.com/3584"
},
{
"name": "supports_pipeline_statistics_query",
"category": "Features",
"description": [
"VkDevice supports the pipelineStatisticsQuery feature"
],
"issue": "http://anglebug.com/5430"
},
{
"name": "supports_shader_stencil_export",
"category": "Features",
"description": [
"VkDevice supports the VK_EXT_shader_stencil_export extension"
]
},
{
"name": "supports_YUV_sampler_conversion",
"category": "Features",
"description": [
"VkDevice supports the VK_KHR_sampler_ycbcr_conversion extension"
]
},
{
"name": "emulate_transform_feedback",
"category": "Features",
"description": [
"Emulate transform feedback as the VK_EXT_transform_feedback is not present."
],
"issue": "http://anglebug.com/3205"
},
{
"name": "supports_transform_feedback_extension",
"category": "Features",
"description": [
"Transform feedback uses the VK_EXT_transform_feedback extension."
],
"issue": "http://anglebug.com/3206"
},
{
"name": "supports_geometry_streams_capability",
"category": "Features",
"description": [
"Implementation supports the GeometryStreams SPIR-V capability."
],
"issue": "http://anglebug.com/3206"
},
{
"name": "supports_index_type_uint8",
"category": "Features",
"description": [
"VkDevice supports the VK_EXT_index_type_uint8 extension"
],
"issue": "http://anglebug.com/4405"
},
{
"name": "supports_custom_border_color",
"category": "Features",
"description": [
"VkDevice supports the VK_EXT_custom_border_color extension"
],
"issue": "http://anglebug.com/3577"
},
{
"name": "supports_multi_draw_indirect",
"category": "Features",
"description": [
"VkDevice supports the multiDrawIndirect extension"
],
"issue": "http://anglebug.com/6439"
},
{
"name": "supports_depth_stencil_resolve",
"category": "Features",
"description": [
"VkDevice supports the VK_KHR_depth_stencil_resolve extension"
],
"issue": "http://anglebug.com/4836"
},
{
"name": "supports_depth_stencil_independent_resolve_none",
"category": "Features",
"description": [
"VkDevice supports the VK_KHR_depth_stencil_resolve ",
"extension with the independentResolveNone feature"
],
"issue": "http://anglebug.com/7551"
},
{
"name": "supports_multisampled_render_to_single_sampled_GOOGLEX",
"category": "Features",
"description": [
"VkDevice supports the VK_GOOGLEX_multisampled_render_to_single_sampled extension"
],
"issue": "http://anglebug.com/4836"
},
{
"name": "supports_multisampled_render_to_single_sampled",
"category": "Features",
"description": [
"VkDevice supports the VK_EXT_multisampled_render_to_single_sampled extension"
],
"issue": "http://anglebug.com/4836"
},
{
"name": "prefer_MSRTSS_flag_by_default",
"category": "Features",
"description": [
"Enable MSRTSS for each image initialization if available"
],
"issue": "http://anglebug.com/8622"
},
{
"name": "supports_multiview",
"category": "Features",
"description": [
"VkDevice supports the VK_KHR_multiview extension"
],
"issue": "http://anglebug.com/6048"
},
{
"name": "force_D16_tex_filter",
"category": "Workarounds",
"description": [
"VK_FORMAT_D16_UNORM does not support VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT, ",
"which prevents OES_depth_texture from being supported."
],
"issue": "http://anglebug.com/3452"
},
{
"name": "disable_flipping_blit_with_command",
"category": "Workarounds",
"description": [
"vkCmdBlitImage with flipped coordinates blits incorrectly."
],
"issue": "http://anglebug.com/3498"
},
{
"name": "per_frame_window_size_query",
"category": "Workarounds",
"description": [
"Vulkan swapchain is not returning VK_ERROR_OUT_OF_DATE when window resizing"
],
"issue": "http://anglebug.com/3623, http://anglebug.com/3624, http://anglebug.com/3625"
},
{
"name": "pad_buffers_to_max_vertex_attrib_stride",
"category": "Workarounds",
"description": [
"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."
],
"issue": "http://anglebug.com/4428"
},
{
"name": "supports_external_memory_dma_buf_and_modifiers",
"category": "Features",
"description": [
"VkDevice supports the VK_EXT_external_memory_dma_buf and VK_EXT_image_drm_format_modifier ",
"extensions"
],
"issue": "http://anglebug.com/6248"
},
{
"name": "supports_external_memory_host",
"category": "Features",
"description": [
"VkDevice supports the VK_EXT_external_memory_host extension"
]
},
{
"name": "allocate_non_zero_memory",
"category": "Features",
"description": [
"Fill new allocations with non-zero values to flush out errors."
],
"issue": "http://anglebug.com/4384"
},
{
"name": "log_memory_report_callbacks",
"category": "Features",
"description": [
"Log each callback from VK_EXT_device_memory_report"
]
},
{
"name": "log_memory_report_stats",
"category": "Features",
"description": [
"Log stats from VK_EXT_device_memory_report each swap"
]
},
{
"name": "prefer_CPU_for_buffer_sub_data",
"category": "Features",
"description": [
"Prefer use CPU to do bufferSubData instead of staged update."
],
"issue": "http://issuetracker.google.com/200067929"
},
{
"name": "persistently_mapped_buffers",
"category": "Features",
"description": [
"Persistently map buffer memory to reduce map/unmap IOCTL overhead."
],
"issue": "http://anglebug.com/2162"
},
{
"name": "enable_pre_rotate_surfaces",
"category": "Features",
"description": [
"Enable Android pre-rotation for landscape applications"
],
"issue": "http://anglebug.com/3502"
},
{
"name": "enable_precision_qualifiers",
"category": "Features",
"description": [
"Enable precision qualifiers in shaders"
],
"issue": "http://anglebug.com/3078"
},
{
"name": "varyings_require_matching_precision_in_spirv",
"category": "Workarounds",
"description": [
"Add additional SPIRV instructions to make sure precision ",
"between shader stages match with each other"
],
"issue": "http://anglebug.com/7488"
},
{
"name": "prefer_aggregate_barrier_calls",
"category": "Workarounds",
"description": [
"Single barrier call is preferred over multiple calls with ",
"fine grained pipeline stage dependency information"
],
"issue": "http://anglebug.com/4633"
},
{
"name": "prefer_skipping_invalidate_for_emulated_formats",
"category": "Workarounds",
"description": [
"Skipping invalidate is preferred for emulated formats that have extra channels over ",
"re-clearing the image"
],
"issue": "http://anglebug.com/6860"
},
{
"name": "async_command_queue",
"category": "Features",
"description": [
"Use CommandQueue worker thread to dispatch work to GPU."
],
"issue": "http://anglebug.com/4324"
},
{
"name": "slow_async_command_queue_for_testing",
"category": "Workarounds",
"description": [
"Artificially slow down async command queue for threading testing"
],
"issue": "https://anglebug.com/6574"
},
{
"name": "supports_shader_float16",
"category": "Features",
"description": [
"VkDevice supports the VK_KHR_shader_float16_int8 extension ",
"and has the shaderFloat16 feature"
],
"issue": "http://anglebug.com/4551"
},
{
"name": "allow_GenerateMipmap_with_compute",
"category": "Features",
"description": [
"Use the compute path to generate mipmaps on devices that meet the minimum requirements, ",
"and the performance is better."
],
"issue": "http://anglebug.com/4551"
},
{
"name": "supports_render_pass_store_op_none",
"category": "Features",
"description": [
"VkDevice supports VK_QCOM_render_pass_store_ops extension."
],
"issue": "http://anglebug.com/5055"
},
{
"name": "supports_render_pass_load_store_op_none",
"category": "Features",
"description": [
"VkDevice supports VK_EXT_load_store_op_none extension."
],
"issue": "http://anglebug.com/5371"
},
{
"name": "disallow_mixed_depth_stencil_load_op_none_and_load",
"category": "Workarounds",
"description": [
"Disallow use of LOAD_OP_NONE for only one of the depth or stencil aspects of a ",
"depth/stencil attachment"
],
"issue": "http://anglebug.com/7370"
},
{
"name": "supports_depth_clip_control",
"category": "Features",
"description": [
"VkDevice supports VK_EXT_depth_clip_control extension."
],
"issue": "http://anglebug.com/5421"
},
{
"name": "supports_primitive_topology_list_restart",
"category": "Features",
"description": [
"VkDevice supports VK_EXT_primitive_topology_list_restart extension."
],
"issue": "http://anglebug.com/3832"
},
{
"name": "supports_blend_operation_advanced",
"category": "Features",
"description": [
"VkDevice supports VK_EXT_blend_operation_advanced extension."
],
"issue": "http://anglebug.com/3586"
},
{
"name": "force_max_uniform_buffer_size_16KB",
"category": "Workarounds",
"description": [
"Force max uniform buffer size to 16K on some device due to bug"
],
"issue": "https://issuetracker.google.com/161903006"
},
{
"name": "supports_image_format_list",
"category": "Features",
"description": [
"Enable VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT by default for ICDs ",
"that support VK_KHR_image_format_list"
],
"issue": "http://anglebug.com/5281"
},
{
"name": "allow_multisampled_render_to_texture_emulation",
"category": "Workarounds",
"description": [
"Allow emulation of EXT_multisampled_render_to_texture"
],
"issue": "http://anglebug.com/8291"
},
{
"name": "enable_multisampled_render_to_texture",
"category": "Workarounds",
"description": [
"Expose EXT_multisampled_render_to_texture"
],
"issue": "http://anglebug.com/4937"
},
{
"name": "defer_flush_until_end_render_pass",
"category": "Workarounds",
"description": [
"Allow glFlush to be deferred until renderpass ends"
],
"issue": "https://issuetracker.google.com/issues/166475273"
},
{
"name": "wait_idle_before_swapchain_recreation",
"category": "Workarounds",
"description": [
"Before passing an oldSwapchain to VkSwapchainCreateInfoKHR, wait for queue to be idle. ",
"Works around a bug on platforms which destroy oldSwapchain in vkCreateSwapchainKHR."
],
"issue": "http://anglebug.com/5061"
},
{
"name": "force_texture_lod_offset_1",
"category": "Workarounds",
"description": [
"Increase the minimum texture level-of-detail by 1 when sampling."
]
},
{
"name": "force_texture_lod_offset_2",
"category": "Workarounds",
"description": [
"Increase the minimum texture level-of-detail by 2 when sampling."
]
},
{
"name": "force_texture_lod_offset_3",
"category": "Workarounds",
"description": [
"Increase the minimum texture level-of-detail by 3 when sampling."
]
},
{
"name": "force_texture_lod_offset_4",
"category": "Workarounds",
"description": [
"Increase the minimum texture level-of-detail by 4 when sampling."
]
},
{
"name": "force_nearest_filtering",
"category": "Workarounds",
"description": [
"Force nearest filtering when sampling."
]
},
{
"name": "force_nearest_mip_filtering",
"category": "Workarounds",
"description": [
"Force nearest mip filtering when sampling."
]
},
{
"name": "compress_vertex_data",
"category": "Workarounds",
"description": [
"Compress vertex data to smaller data types when ",
"possible. Using this feature makes ANGLE non-conformant."
]
},
{
"name": "prefer_draw_clear_over_vkCmdClearAttachments",
"category": "Workarounds",
"description": [
"On some hardware, clear using a draw call instead of vkCmdClearAttachments in the middle ",
"of render pass due to bugs"
],
"issue": "https://issuetracker.google.com/166809097"
},
{
"name": "emulated_prerotation_90",
"category": "Features",
"description": [
"Emulate 90-degree prerotation."
],
"issue": "http://anglebug.com/4901"
},
{
"name": "emulated_prerotation_180",
"category": "Features",
"description": [
"Emulate 180-degree prerotation."
],
"issue": "http://anglebug.com/4901"
},
{
"name": "emulated_prerotation_270",
"category": "Features",
"description": [
"Emulate 270-degree prerotation."
],
"issue": "http://anglebug.com/4901"
},
{
"name": "prefer_driver_uniform_over_spec_const",
"category": "Features",
"description": [
"Prefer using driver uniforms instead of specialization constants."
],
"issue": "http://anglebug.com/7406"
},
{
"name": "expose_non_conformant_extensions_and_versions",
"category": "Workarounds",
"description": [
"Expose GLES versions and extensions that are not conformant."
],
"issue": "http://anglebug.com/5375"
},
{
"name": "emulate_R32f_image_atomic_exchange",
"category": "Workarounds",
"description": [
"Emulate r32f images with r32ui to support imageAtomicExchange."
],
"issue": "http://anglebug.com/5535"
},
{
"name": "force_fragment_shader_precision_highp_to_mediump",
"category": "Workarounds",
"description": [
"Forces highp precision in fragment shader to mediump."
],
"issue": "https://issuetracker.google.com/184850002"
},
{
"name": "prefer_submit_at_FBO_boundary",
"category": "Workarounds",
"description": [
"Submit commands to driver at each FBO boundary for performance improvements."
],
"issue": "https://issuetracker.google.com/187425444"
},
{
"name": "use_multiple_descriptors_for_external_formats",
"category": "Workarounds",
"description": [
"Return a default descriptor count for external formats."
],
"issue": "http://anglebug.com/6141"
},
{
"name": "supports_protected_memory",
"category": "Features",
"description": [
"VkDevice supports protected memory"
],
"issue": "http://anglebug.com/3965"
},
{
"name": "supports_host_query_reset",
"category": "Features",
"description": [
"VkDevice supports VK_EXT_host_query_reset extension"
],
"issue": "http://anglebug.com/6692"
},
{
"name": "supports_pipeline_creation_feedback",
"category": "Features",
"description": [
"VkDevice supports VK_EXT_pipeline_creation_feedback extension"
],
"issue": "http://anglebug.com/5881"
},
{
"name": "supports_primitives_generated_query",
"category": "Features",
"description": [
"VkDevice supports VK_EXT_primitives_generated_query extension"
],
"issue": "http://anglebug.com/5430"
},
{
"name": "supports_surface_capabilities2_extension",
"category": "Features",
"description": [
"VkInstance supports the VK_KHR_get_surface_capabilities2 extension"
]
},
{
"name": "supports_surface_protected_capabilities_extension",
"category": "Features",
"description": [
"VkInstance supports the VK_KHR_surface_protected_capabilities extension"
]
},
{
"name": "supports_surfaceless_query_extension",
"category": "Features",
"description": [
"VkInstance supports the VK_GOOGLE_surfaceless_query extension"
]
},
{
"name": "supports_surface_protected_swapchains",
"category": "Features",
"description": [
"VkSurface supportsProtected for protected swapchains"
]
},
{
"name": "override_surface_format_RGB8_to_RGBA8",
"category": "Workarounds",
"description": [
"Override surface format GL_RGB8 to GL_RGBA8"
],
"issue": "http://anglebug.com/6651"
},
{
"name": "supports_shared_presentable_image_extension",
"category": "Features",
"description": [
"VkSurface supports the VK_KHR_shared_presentable_images extension"
]
},
{
"name": "supports_shader_framebuffer_fetch",
"category": "Features",
"description": [
"Whether the Vulkan backend supports coherent framebuffer fetch"
]
},
{
"name": "supports_shader_framebuffer_fetch_non_coherent",
"category": "Features",
"description": [
"Whether the Vulkan backend supports non-coherent framebuffer fetch"
]
},
{
"name": "permanently_switch_to_framebuffer_fetch_mode",
"category": "Features",
"description": [
"Whether the context should permanently switch to framebuffer fetch mode on first ",
"encounter"
]
},
{
"name": "supports_lock_surface_extension",
"category": "Features",
"description": [
"Surface supports the EGL_KHR_lock_surface3 extension"
]
},
{
"name": "swapbuffers_on_flush_or_finish_with_single_buffer",
"category": "Features",
"description": [
"Bypass deferredFlush with calling swapbuffers on flush or finish when in Shared ",
"Present mode"
],
"issue": "http://anglebug.com/6878"
},
{
"name": "emulate_dithering",
"category": "Features",
"description": [
"Emulate OpenGL dithering"
],
"issue": "http://anglebug.com/6755"
},
{
"name": "round_output_after_dithering",
"category": "Workarounds",
"description": [
"Round output after dithering to workaround a driver bug that rounds the output up"
],
"issue": "http://anglebug.com/6953"
},
{
"name": "adjust_clear_color_precision",
"category": "Workarounds",
"description": [
"Adjust normalized clear color precision based on framebuffer color channel bits count"
],
"issue": "https://issuetracker.google.com/292282210"
},
{
"name": "emulate_advanced_blend_equations",
"category": "Features",
"description": [
"Emulate GL_KHR_blend_equation_advanced"
],
"issue": "http://anglebug.com/3586"
},
{
"name": "double_depth_bias_constant_factor",
"category": "Workarounds",
"description": [
"Due to a Vulkan spec ambiguity, some drivers interpret depthBiasConstantFactor as half ",
"the expected value"
]
},
{
"name": "bottom_left_origin_present_region_rectangles",
"category": "Workarounds",
"description": [
"On some platforms present region rectangles are expected to have a bottom-left origin, ",
"instead of top-left origin as from spec"
]
},
{
"name": "force_submit_immutable_texture_updates",
"category": "AppWorkarounds",
"description": [
"Force submit updates to immutable textures"
],
"issue": "http://anglebug.com/6929"
},
{
"name": "retain_SPIRV_debug_info",
"category": "Features",
"description": [
"Retain debug info in SPIR-V blob."
],
"issue": "http://anglebug.com/5901"
},
{
"name": "warm_up_pipeline_cache_at_link",
"category": "Features",
"description": [
"Warm up the Vulkan pipeline cache at link time"
],
"issue": "http://anglebug.com/5881"
},
{
"name": "prefer_device_local_memory_host_visible",
"category": "Features",
"description": [
"Prefer adding HOST_VISIBLE flag for DEVICE_LOCAL memory when picking memory types"
],
"issue": "http://anglebug.com/7047"
},
{
"name": "supports_extended_dynamic_state",
"category": "Features",
"description": [
"VkDevice supports VK_EXT_extended_dynamic_state extension"
],
"issue": "http://anglebug.com/5906"
},
{
"name": "use_vertex_input_binding_stride_dynamic_state",
"category": "Workarounds",
"description": [
"Use the Vertex Input Bininding Stride dynamic state from VK_EXT_extended_dynamic_state"
],
"issue": "http://anglebug.com/5906"
},
{
"name": "use_cull_mode_dynamic_state",
"category": "Workarounds",
"description": [
"Use the Cull Mode dynamic state from VK_EXT_extended_dynamic_state"
],
"issue": "http://anglebug.com/5906"
},
{
"name": "use_front_face_dynamic_state",
"category": "Workarounds",
"description": [
"Use the Front Face dynamic state from VK_EXT_extended_dynamic_state"
],
"issue": "http://anglebug.com/5906"
},
{
"name": "use_depth_test_enable_dynamic_state",
"category": "Workarounds",
"description": [
"Use the Depth Test Enable dynamic state from VK_EXT_extended_dynamic_state"
],
"issue": "http://anglebug.com/5906"
},
{
"name": "use_depth_write_enable_dynamic_state",
"category": "Workarounds",
"description": [
"Use the Depth Write Enable dynamic state from VK_EXT_extended_dynamic_state"
],
"issue": "http://anglebug.com/5906"
},
{
"name": "use_depth_compare_op_dynamic_state",
"category": "Workarounds",
"description": [
"Use the Depth Compare Op dynamic state from VK_EXT_extended_dynamic_state"
],
"issue": "http://anglebug.com/5906"
},
{
"name": "use_stencil_test_enable_dynamic_state",
"category": "Workarounds",
"description": [
"Use the Stencil Test Enable dynamic state from VK_EXT_extended_dynamic_state"
],
"issue": "http://anglebug.com/5906"
},
{
"name": "use_stencil_op_dynamic_state",
"category": "Workarounds",
"description": [
"Use the Stencil Op dynamic state from VK_EXT_extended_dynamic_state"
],
"issue": "http://anglebug.com/5906"
},
{
"name": "supports_extended_dynamic_state2",
"category": "Features",
"description": [
"VkDevice supports VK_EXT_extended_dynamic_state2 extension"
],
"issue": "http://anglebug.com/5906"
},
{
"name": "use_primitive_restart_enable_dynamic_state",
"category": "Workarounds",
"description": [
"Use the Primitive Restart Enable dynamic state from VK_EXT_extended_dynamic_state2"
],
"issue": "http://anglebug.com/5906"
},
{
"name": "use_rasterizer_discard_enable_dynamic_state",
"category": "Workarounds",
"description": [
"Use the Rasterizer Discard Enable dynamic state from VK_EXT_extended_dynamic_state2"
],
"issue": "http://anglebug.com/5906"
},
{
"name": "use_depth_bias_enable_dynamic_state",
"category": "Workarounds",
"description": [
"Use the Depth Bias Enable dynamic state from VK_EXT_extended_dynamic_state2"
],
"issue": "http://anglebug.com/5906"
},
{
"name": "supports_logic_op_dynamic_state",
"category": "Features",
"description": [
"VkDevice supports the logicOp feature of VK_EXT_extended_dynamic_state2 extension"
],
"issue": "http://anglebug.com/3862"
},
{
"name": "supports_fragment_shading_rate",
"category": "Features",
"description": [
"VkDevice supports VK_KHR_fragment_shading_rate extension"
],
"issue": "http://anglebug.com/7172"
},
{
"name": "supports_foveated_rendering",
"category": "Features",
"description": [
"Use VK_KHR_fragment_shading_rate extension to implement QCOM foveated rendering extensions"
],
"issue": "http://anglebug.com/8484"
},
{
"name": "supports_fragment_shader_pixel_interlock",
"category": "Features",
"description": [
"VkDevice supports the VK_EXT_fragment_shader_interlock extension ",
"and has the fragmentShaderPixelInterlock feature"
]
},
{
"name": "explicitly_enable_per_sample_shading",
"category": "Workarounds",
"description": [
"Explicitly enable per-sample shading if the fragment shader contains the ",
"sample qualifier"
],
"issue": "http://anglebug.com/6876"
},
{
"name": "explicitly_cast_mediump_float_to_16_bit",
"category": "Workarounds",
"description": [
"Explicitly cast mediump floating point values to 16 bit"
],
"issue": "https://issuetracker.google.com/274859104"
},
{
"name": "force_continuous_refresh_on_shared_present",
"category": "Features",
"description": [
"Force to create vulkan swapchain with continuous refresh on shared present"
],
"issue": "https://issuetracker.google.com/229267970"
},
{
"name": "supports_image_2d_view_of_3d",
"category": "Features",
"description": [
"VkDevice supports VK_EXT_image_2d_view_of_3d"
],
"issue": "https://anglebug.com/7320"
},
{
"name": "supports_sampler_2d_view_of_3d",
"category": "Features",
"description": [
"VkDevice supports the sampler2DViewOf3D feature of VK_EXT_image_2d_view_of_3d"
],
"issue": "https://anglebug.com/7320"
},
{
"name": "supports_imageless_framebuffer",
"category": "Features",
"description": [
"VkDevice supports VK_KHR_imageless_framebuffer extension"
],
"issue": "http://anglebug.com/7553"
},
{
"name": "prefer_linear_filter_for_YUV",
"category": "Features",
"description": [
"Prefer to use VK_FILTER_LINEAR for VkSamplerYcbcrConversion"
],
"issue": "https://anglebug.com/7382"
},
{
"name": "supports_yuv_target",
"category": "Features",
"description": [
"VkDevice supports VK_ANDROID_render_to_external_format and VK_EXT_ycbcr_attachment"
]
},
{
"name": "use_non_zero_stencil_write_mask_static_state",
"category": "Workarounds",
"description": [
"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"
],
"issue": "http://anglebug.com/7556"
},
{
"name": "map_unspecified_color_space_to_pass_through",
"category": "Features",
"description": [
"Use VK_COLOR_SPACE_PASS_THROUGH_EXT for EGL_NONE or unspecifed color ",
"spaces"
]
},
{
"name": "supports_timestamp_surface_attribute",
"category": "Features",
"description": [
"Platform supports setting frame timestamp surface attribute"
],
"issue": "https://anglebug.com/7489"
},
{
"name": "supports_rasterization_order_attachment_access",
"category": "Features",
"description": [
"VkDevice supports VK_EXT_rasterization_order_attachment_access extension"
],
"issue": "https://anglebug.com/7604"
},
{
"name": "egl_colorspace_attribute_passthrough",
"category": "Features",
"description": [
"Support passthrough of EGL colorspace attribute values"
],
"issue": "https://anglebug.com/7319"
},
{
"name": "supports_pipeline_robustness",
"category": "Features",
"description": [
"VkDevice supports VK_EXT_pipeline_robustness extension"
],
"issue": "https://anglebug.com/5845"
},
{
"name": "supports_vertex_input_dynamic_state",
"category": "Features",
"description": [
"VkDevice supports VK_EXT_vertex_input_dynamic_state extension"
],
"issue": "https://anglebug.com/7162"
},
{
"name": "supports_color_write_enable",
"category": "Features",
"description": [
"VkDevice supports VK_EXT_color_write_enable extension"
],
"issue": "https://anglebug.com/7161"
},
{
"name": "supports_presentation",
"category": "Features",
"description": [
"VkDisplay supports presentation through a present family queue"
]
},
{
"name": "supports_compute_transcode_etc_to_bc",
"category": "Features",
"description": [
"supports compute shader transcode etc format to bc format"
]
},
{
"name": "supports_graphics_pipeline_library",
"category": "Features",
"description": [
"VkDevice supports the VK_EXT_graphics_pipeline_library extension"
],
"issue": "https://anglebug.com/7369"
},
{
"name": "prefer_monolithic_pipelines_over_libraries",
"category": "Workarounds",
"description": [
"Whether monolithic pipelines perform significantly better than libraries"
],
"issue": "https://anglebug.com/7369"
},
{
"name": "slow_down_monolithic_pipeline_creation_for_testing",
"category": "Workarounds",
"description": [
"Artificially slow down async monolithic pipeline creation for threading testing"
],
"issue": "https://anglebug.com/7369"
},
{
"name": "disable_pipeline_cache_load_for_testing",
"category": "Workarounds",
"description": [
"Disable loading the pipeline cache from the blob cache for testing"
],
"issue": "https://anglebug.com/8417"
},
{
"name": "sync_monolithic_pipelines_to_blob_cache",
"category": "Workarounds",
"description": [
"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"
],
"issue": "https://anglebug.com/7369"
},
{
"name": "merge_program_pipeline_caches_to_global_cache",
"category": "Workarounds",
"description": [
"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"
],
"issue": "https://anglebug.com/7369"
},
{
"name": "has_effective_pipeline_cache_serialization",
"category": "Features",
"description": [
"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"
],
"issue": "https://anglebug.com/7369"
},
{
"name": "enable_async_pipeline_cache_compression",
"category": "Workarounds",
"description": [
"Enable compressing pipeline cache in a thread."
],
"issue": "http://anglebug.com/4722"
},
{
"name": "supports_pipeline_protected_access",
"category": "Features",
"description": [
"VkDevice supports the VK_EXT_pipeline_protected_access extension"
],
"issue": "https://anglebug.com/7714"
},
{
"name": "supports_mixed_read_write_depth_stencil_layouts",
"category": "Features",
"description": [
"VkDevice supports the mixed read and write depth/stencil layouts introduced by VK_KHR_maintenance2"
],
"issue": "https://anglebug.com/7899"
},
{
"name": "supports_swapchain_maintenance1",
"category": "Features",
"description": [
"VkDevice supports the VK_EXT_surface_maintenance1 and VK_EXT_swapchain_maintenance1 extensions"
],
"issue": "https://anglebug.com/7847"
},
{
"name": "supports_get_memory_requirements2",
"category": "Features",
"description": [
"VkDevice supports the VK_KHR_get_memory_requirements2 extension"
],
"issue": "https://anglebug.com/4830"
},
{
"name": "supports_bind_memory2",
"category": "Features",
"description": [
"VkDevice supports the VK_KHR_bind_memory2 extension"
],
"issue": "https://anglebug.com/4966"
},
{
"name": "supports_sampler_mirror_clamp_to_edge",
"category": "Features",
"description": [
"VkDevice supports the VK_KHR_sampler_mirror_clamp_to_edge extension"
]
},
{
"name": "prefer_submit_on_any_samples_passed_query_end",
"category": "Workarounds",
"description": [
"Submit commands to driver when last GL_ANY_SAMPLES_PASSED query is made for performance improvements."
],
"issue": "https://issuetracker.google.com/250706693"
},
{
"name": "force_wait_for_submission_to_complete_for_query_result",
"category": "Workarounds",
"description": [
"Force wait for submission to complete before calling getQueryResult(wait)."
],
"issue": "https://issuetracker.google.com/253522366"
},
{
"name": "async_command_buffer_reset",
"category": "Features",
"description": [
"Reset command buffer in async thread."
],
"issue": "https://issuetracker.google.com/255411748"
},
{
"name": "use_reset_command_buffer_bit_for_secondary_pools",
"category": "Workarounds",
"description": [
"Use VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT for initializing ",
"SecondaryCommandPools when using VulkanSecondaryCommandBuffer. "
]
},
{
"name": "enable_pipeline_cache_data_compression",
"category": "Features",
"description": [
"enable pipeline cache data compression."
],
"issue": "https://issuetracker.google.com/258207403"
},
{
"name": "supports_legacy_dithering",
"category": "Features",
"description": [
"VkDevice supports the VK_EXT_legacy_dithering extension"
],
"issue": "https://issuetracker.google.com/284462263"
},
{
"name": "limit_sample_count_to_2",
"category": "Workarounds",
"description": [
"Limit sample count to 2 to save memory on low end devices."
],
"issue": "http://anglebug.com/8162"
},
{
"name": "supports_full_screen_exclusive",
"category": "Features",
"description": [
"VkDevice supports the VK_EXT_full_screen_exclusive extension"
],
"issue": "http://anglebug.com/8215"
},
{
"name": "force_disable_full_screen_exclusive",
"category": "Workarounds",
"description": [
"Device needs VK_EXT_full_screen_exclusive explicitly disabled"
],
"issue": "http://anglebug.com/8215"
},
{
"name": "supports_portability_enumeration",
"category": "Features",
"description": [
"Vulkan supports VK_KHR_portability_enumeration extension"
],
"issue": "http://anglebug.com/8229"
},
{
"name": "enable_portability_enumeration",
"category": "Workarounds",
"description": [
"Enable use of VK_KHR_portability_enumeration extension"
],
"issue": "http://anglebug.com/8229"
},
{
"name": "supports_timeline_semaphore",
"category": "Features",
"description": [
"VkDevice supports the VK_KHR_timeline_semaphore extension"
]
},
{
"name": "supports_format_feature_flags2",
"category": "Features",
"description": [
"VkDevice supports the VK_KHR_format_feature_flags2 extension"
]
},
{
"name": "supports_host_image_copy",
"category": "Features",
"description": [
"VkDevice supports the VK_EXT_host_image_copy extension"
]
},
{
"name": "allow_host_image_copy_despite_non_identical_layout",
"category": "Features",
"description": [
"When using VK_EXT_host_image_copy, allow VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT even if",
"perf query indicates only optimalDeviceAccess, but not identicalMemoryLayout"
]
},
{
"name": "enable_parallel_compile_and_link",
"category": "Features",
"description": [
"Expose the GL_KHR_parallel_shader_compile extension"
],
"issue": "http://anglebug.com/8297"
},
{
"name": "prefer_host_cached_for_non_static_buffer_usage",
"category": "Features",
"description": [
"prefer host cached memory for non static buffer usage"
],
"issue": "https://issuetracker.google.com/288119108"
},
{
"name": "supports_external_format_resolve",
"category": "Features",
"description": [
"VkDevice supports the VK_ANDROID_external_format_resolve extension"
]
},
{
"name": "disable_separate_shader_objects",
"category": "AppWorkarounds",
"description": [
"Disable GL_EXT_separate_shader_objects and cap core ES version to 3.0"
],
"issue": "https://issuetracker.google.com/309028728"
},
{
"name": "force_sample_usage_for_ahb_backed_images",
"category": "AppWorkarounds",
"description": [
"Force enable VK_IMAGE_USAGE_SAMPLED_BIT usage for all AHB images"
],
"issue": "https://issuetracker.google.com/155487768"
},
{
"name": "avoid_OpSelect_with_mismatching_RelaxedPrecision",
"category": "Workarounds",
"description": [
"On some drivers, the OpSelect SPIR-V instruction with arguments with mismatching ",
"RelaxedPrecision decoration causes a crash"
],
"issue": "http://anglebug.com/8503"
},
{
"name": "disable_depth_stencil_resolve_through_attachment",
"category": "Workarounds",
"description": [
"On some drivers, using a depth/stencil resolve attachment results in errors"
],
"issue": "http://anglebug.com/8658"
},
{
"name": "cl_dump_vk_spirv",
"category": "Features",
"description": [
"Enable SPIR-V dumping at runtime for OpenCL programs compiled with clspv"
]
},
{
"name": "enable_additional_blend_factors_for_dithering",
"category": "AppWorkarounds",
"description": [
"Dithering darkens or brightens pixels depending on coordinates and when repeated ",
"sufficient numbers of times this effect becomes visible to users. Conditionally ",
"enable additional blend factors for dithering"
],
"issue": "https://issuetracker.google.com/328837151"
},
{
"name": "enable_merge_client_attrib_buffer",
"category": "Features",
"description": [
"Enable merge for client attrib buffer if possible"
],
"issue": "https://issuetracker.google.com/328301788"
},
{
"name": "supports_shader_non_semantic_info",
"category": "Features",
"description": [
"Enable non-semantic info inside shader module via VK_KHR_shader_non_semantic_info extension"
],
"issue": "http://anglebug.com/8549"
},
{
"name": "combine_all_shaders_in_pipeline_library",
"category": "Features",
"description": [
"For Vulkan ICDs that support VK_EXT_graphics_pipeline_library the shaders subset of the pipeline",
"can either be combined into a single pipeline or can be decoupled into separate pipelines. This feature",
"is enabled when the former is the case."
],
"issue": "http://anglebug.com/8601"
}
]
}