Commit 2e74c452 by Jamie Madill Committed by Commit Bot

Vulkan: Make feature names consistent.

This gives the features the exact same name as the member variable. It fixes a bunch of inconsistencies between the variable name and the external string identifier. Ideally these could be auto-generated from JSON. Bug: b/172704839 Change-Id: Id75c01db544672234435c3dd727c927027b9236d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2524541Reviewed-by: 's avatarCourtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: 's avatarTim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent 3806696c
......@@ -26,7 +26,7 @@ struct FeaturesVk : FeatureSetBase
// shader patching to implement OpenGL basic line rasterization rules. This feature will
// normally always be enabled. Exposing it as an option enables performance testing.
Feature basicGLLineRasterization = {
"basic_gl_line_rasterization", FeatureCategory::VulkanFeatures,
"basicGLLineRasterization", FeatureCategory::VulkanFeatures,
"Enable the use of pixel shader patching to implement OpenGL basic line "
"rasterization rules",
&members};
......@@ -34,33 +34,33 @@ struct FeaturesVk : FeatureSetBase
// If the VK_EXT_line_rasterization extension is available we'll use it to get
// Bresenham line rasterization.
Feature bresenhamLineRasterization = {
"bresenham_line_rasterization", FeatureCategory::VulkanFeatures,
"bresenhamLineRasterization", FeatureCategory::VulkanFeatures,
"Enable Bresenham line rasterization via VK_EXT_line_rasterization extension", &members};
// If the VK_EXT_provoking_vertex extension is available, we'll use it to set
// the provoking vertex mode
Feature provokingVertex = {"provoking_vertex", FeatureCategory::VulkanFeatures,
Feature provokingVertex = {"provokingVertex", FeatureCategory::VulkanFeatures,
"Enable provoking vertex mode via VK_EXT_provoking_vertex extension",
&members};
// Add an extra copy region when using vkCmdCopyBuffer as the Windows Intel driver seems
// to have a bug where the last region is ignored.
Feature extraCopyBufferRegion = {
"extra_copy_buffer_region", FeatureCategory::VulkanWorkarounds,
"extraCopyBufferRegion", FeatureCategory::VulkanWorkarounds,
"Some drivers seem to have a bug where the last copy region in vkCmdCopyBuffer is ignored",
&members};
// This flag is added for the sole purpose of end2end tests, to test the correctness
// of various algorithms when a fallback format is used, such as using a packed format to
// emulate a depth- or stencil-only format.
Feature forceFallbackFormat = {"force_fallback_format", FeatureCategory::VulkanWorkarounds,
Feature forceFallbackFormat = {"forceFallbackFormat", FeatureCategory::VulkanWorkarounds,
"Force a fallback format for angle_end2end_tests", &members};
// On some NVIDIA drivers the point size range reported from the API is inconsistent with the
// actual behavior. Clamp the point size to the value from the API to fix this.
// Tracked in http://anglebug.com/2970.
Feature clampPointSize = {
"clamp_point_size", FeatureCategory::VulkanWorkarounds,
"clampPointSize", FeatureCategory::VulkanWorkarounds,
"The point size range reported from the API is inconsistent with the actual behavior",
&members, "http://anglebug.com/2970"};
......@@ -68,95 +68,94 @@ struct FeaturesVk : FeatureSetBase
// attributes and the vertex shader that reads from it is ineffective. Only known workaround is
// to perform a flush after the conversion. http://anglebug.com/3016
Feature flushAfterVertexConversion = {
"flush_after_vertex_conversion", FeatureCategory::VulkanWorkarounds,
"flushAfterVertexConversion", FeatureCategory::VulkanWorkarounds,
"The memory barrier between the compute shader that converts vertex attributes and the "
"vertex shader that reads from it is ineffective",
&members, "http://anglebug.com/3016"};
Feature supportsRenderpass2 = {"supports_renderpass2", FeatureCategory::VulkanFeatures,
Feature supportsRenderpass2 = {"supportsRenderpass2", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_KHR_create_renderpass2 extension",
&members};
// Whether the VkDevice supports the VK_KHR_incremental_present extension, on which the
// EGL_KHR_swap_buffers_with_damage extension can be layered.
Feature supportsIncrementalPresent = {
"supports_incremental_present", FeatureCategory::VulkanFeatures,
"supportsIncrementalPresent", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_KHR_incremental_present extension", &members};
// Whether texture copies on cube map targets should be done on GPU. This is a workaround for
// Intel drivers on windows that have an issue with creating single-layer views on cube map
// textures.
Feature forceCPUPathForCubeMapCopy = {
"force_cpu_path_for_cube_map_copy", FeatureCategory::VulkanWorkarounds,
"forceCPUPathForCubeMapCopy", FeatureCategory::VulkanWorkarounds,
"Some drivers have an issue with creating single-layer views on cube map textures",
&members};
// Whether the VkDevice supports the VK_ANDROID_external_memory_android_hardware_buffer
// extension, on which the EGL_ANDROID_image_native_buffer extension can be layered.
Feature supportsAndroidHardwareBuffer = {
"supports_android_hardware_buffer", FeatureCategory::VulkanFeatures,
"supportsAndroidHardwareBuffer", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_ANDROID_external_memory_android_hardware_buffer extension",
&members};
// Whether the VkDevice supports the VK_GGP_frame_token extension, on which
// the EGL_ANGLE_swap_with_frame_token extension can be layered.
Feature supportsGGPFrameToken = {"supports_ggp_frame_token", FeatureCategory::VulkanFeatures,
Feature supportsGGPFrameToken = {"supportsGGPFrameToken", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_GGP_frame_token extension",
&members};
// Whether the VkDevice supports the VK_KHR_external_memory_fd extension, on which the
// GL_EXT_memory_object_fd extension can be layered.
Feature supportsExternalMemoryFd = {
"supports_external_memory_fd", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_KHR_external_memory_fd extension", &members};
Feature supportsExternalMemoryFd = {"supportsExternalMemoryFd", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_KHR_external_memory_fd extension",
&members};
// Whether the VkDevice supports the VK_FUCHSIA_external_memory
// extension, on which the GL_ANGLE_memory_object_fuchsia extension can be layered.
Feature supportsExternalMemoryFuchsia = {
"supports_external_memory_fuchsia", FeatureCategory::VulkanFeatures,
"supportsExternalMemoryFuchsia", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_FUCHSIA_external_memory extension", &members};
Feature supportsFilteringPrecision = {
"supports_filtering_precision_google", FeatureCategory::VulkanFeatures,
"supportsFilteringPrecision", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_GOOGLE_sampler_filtering_precision extension", &members};
// Whether the VkDevice supports the VK_KHR_external_fence_capabilities extension.
Feature supportsExternalFenceCapabilities = {
"supports_external_fence_capabilities", FeatureCategory::VulkanFeatures,
"supportsExternalFenceCapabilities", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_KHR_external_fence_capabilities extension", &members};
// Whether the VkDevice supports the VK_KHR_external_semaphore_capabilities extension.
Feature supportsExternalSemaphoreCapabilities = {
"supports_external_semaphore_capabilities", FeatureCategory::VulkanFeatures,
"supportsExternalSemaphoreCapabilities", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_KHR_external_semaphore_capabilities extension", &members};
// Whether the VkDevice supports the VK_KHR_external_semaphore_fd extension, on which the
// GL_EXT_semaphore_fd extension can be layered.
Feature supportsExternalSemaphoreFd = {
"supports_external_semaphore_fd", FeatureCategory::VulkanFeatures,
"supportsExternalSemaphoreFd", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_KHR_external_semaphore_fd extension", &members};
// Whether the VkDevice supports the VK_FUCHSIA_external_semaphore
// extension, on which the GL_ANGLE_semaphore_fuchsia extension can be layered.
angle::Feature supportsExternalSemaphoreFuchsia = {
"supports_external_semaphore_fuchsia", FeatureCategory::VulkanFeatures,
"supportsExternalSemaphoreFuchsia", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_FUCHSIA_external_semaphore extension", &members};
// Whether the VkDevice supports the VK_KHR_external_fence_fd extension, on which the
// EGL_ANDROID_native_fence extension can be layered.
Feature supportsExternalFenceFd = {"supports_external_fence_fd",
FeatureCategory::VulkanFeatures,
Feature supportsExternalFenceFd = {"supportsExternalFenceFd", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_KHR_external_fence_fd extension",
&members, "http://anglebug.com/2517"};
// Whether the VkDevice can support EGL_ANDROID_native_fence_sync extension.
Feature supportsAndroidNativeFenceSync = {
"supports_android_native_fence_sync", FeatureCategory::VulkanFeatures,
"supportsAndroidNativeFenceSync", FeatureCategory::VulkanFeatures,
"VkDevice supports the EGL_ANDROID_native_fence_sync extension", &members,
"http://anglebug.com/2517"};
// Whether the VkDevice can support imageCubeArray feature properly.
Feature supportsImageCubeArray = {"supports_image_cube_array", FeatureCategory::VulkanFeatures,
Feature supportsImageCubeArray = {"supportsImageCubeArray", FeatureCategory::VulkanFeatures,
"VkDevice supports the imageCubeArray feature properly",
&members, "http://anglebug.com/3584"};
......@@ -164,55 +163,55 @@ struct FeaturesVk : FeatureSetBase
// perform multisampled resolve of stencil buffer. A multi-step workaround is used instead if
// this extension is not available.
Feature supportsShaderStencilExport = {
"supports_shader_stencil_export", FeatureCategory::VulkanFeatures,
"supportsShaderStencilExport", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_EXT_shader_stencil_export extension", &members};
// Whether the VkDevice supports the VK_KHR_sampler_ycbcr_conversion extension, which is needed
// to support Ycbcr conversion with external images.
Feature supportsYUVSamplerConversion = {
"supports_yuv_sampler_conversion", FeatureCategory::VulkanFeatures,
"supportsYUVSamplerConversion", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_KHR_sampler_ycbcr_conversion extension", &members};
// Where VK_EXT_transform_feedback is not support, an emulation path is used.
// http://anglebug.com/3205
Feature emulateTransformFeedback = {
"emulate_transform_feedback", FeatureCategory::VulkanFeatures,
"emulateTransformFeedback", FeatureCategory::VulkanFeatures,
"Emulate transform feedback as the VK_EXT_transform_feedback is not present.", &members,
"http://anglebug.com/3205"};
// Where VK_EXT_transform_feedback is supported, it's preferred over an emulation path.
// http://anglebug.com/3206
Feature supportsTransformFeedbackExtension = {
"supports_transform_feedback_extension", FeatureCategory::VulkanFeatures,
"supportsTransformFeedbackExtension", FeatureCategory::VulkanFeatures,
"Transform feedback uses the VK_EXT_transform_feedback extension.", &members,
"http://anglebug.com/3206"};
// Whether the VkDevice supports the VK_EXT_index_type_uint8 extension
// http://anglebug.com/4405
Feature supportsIndexTypeUint8 = {"supports_index_type_uint8", FeatureCategory::VulkanFeatures,
Feature supportsIndexTypeUint8 = {"supportsIndexTypeUint8", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_EXT_index_type_uint8 extension",
&members, "http://anglebug.com/4405"};
// Whether the VkDevice supports the VK_KHR_depth_stencil_resolve extension with the
// independentResolveNone feature.
// http://anglebug.com/4836
Feature supportsDepthStencilResolve = {"supports_depth_stencil_resolve",
Feature supportsDepthStencilResolve = {"supportsDepthStencilResolve",
FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_KHR_depth_stencil_resolve "
"extension with the independentResolveNone feature",
&members, "http://anglebug.com/4836"};
// VK_PRESENT_MODE_FIFO_KHR causes random timeouts on Linux Intel. http://anglebug.com/3153
Feature disableFifoPresentMode = {
"disable_fifo_present_mode", FeatureCategory::VulkanWorkarounds,
"VK_PRESENT_MODE_FIFO_KHR causes random timeouts", &members, "http://anglebug.com/3153"};
Feature disableFifoPresentMode = {"disableFifoPresentMode", FeatureCategory::VulkanWorkarounds,
"VK_PRESENT_MODE_FIFO_KHR causes random timeouts", &members,
"http://anglebug.com/3153"};
// On Qualcomm, gaps in bound descriptor set indices causes the post-gap sets to misbehave.
// For example, binding only descriptor set 3 results in zero being read from a uniform buffer
// object within that set. This flag results in empty descriptor sets being bound for any
// unused descriptor set to work around this issue. http://anglebug.com/2727
Feature bindEmptyForUnusedDescriptorSets = {
"bind_empty_for_unused_descriptor_sets", FeatureCategory::VulkanWorkarounds,
"bindEmptyForUnusedDescriptorSets", FeatureCategory::VulkanWorkarounds,
"Gaps in bound descriptor set indices causes the post-gap sets to misbehave", &members,
"http://anglebug.com/2727"};
......@@ -222,7 +221,7 @@ struct FeaturesVk : FeatureSetBase
// do not. Work-around this by setting saying D16_UNORM supports filtering
// anyway.
Feature forceD16TexFilter = {
"force_D16_texture_filter", FeatureCategory::VulkanWorkarounds,
"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"};
......@@ -230,7 +229,7 @@ struct FeaturesVk : FeatureSetBase
// On some android devices, vkCmdBlitImage with flipped coordinates blits incorrectly. This
// workaround makes sure this path is avoided. http://anglebug.com/3498
Feature disableFlippingBlitWithCommand = {
"disable_flipping_blit_with_command", FeatureCategory::VulkanWorkarounds,
"disableFlippingBlitWithCommand", FeatureCategory::VulkanWorkarounds,
"vkCmdBlitImage with flipped coordinates blits incorrectly.", &members,
"http://anglebug.com/3498"};
......@@ -239,20 +238,20 @@ struct FeaturesVk : FeatureSetBase
// every frame to detect a window resizing.
// http://anglebug.com/3623, http://anglebug.com/3624, http://anglebug.com/3625
Feature perFrameWindowSizeQuery = {
"per_frame_window_size_query", FeatureCategory::VulkanWorkarounds,
"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"};
// Seamful cube map emulation misbehaves on the AMD windows driver, so it's disallowed.
Feature disallowSeamfulCubeMapEmulation = {
"disallow_seamful_cube_map_emulation", FeatureCategory::VulkanWorkarounds,
"disallowSeamfulCubeMapEmulation", FeatureCategory::VulkanWorkarounds,
"Seamful cube map emulation misbehaves on some drivers, so it's disallowed", &members,
"http://anglebug.com/3243"};
// Qualcomm and SwiftShader shader compiler doesn't support sampler arrays as parameters, so
// revert to old RewriteStructSamplers behavior, which produces fewer.
Feature forceOldRewriteStructSamplers = {
"force_old_rewrite_struct_samplers", FeatureCategory::VulkanWorkarounds,
"forceOldRewriteStructSamplers", FeatureCategory::VulkanWorkarounds,
"Some shader compilers don't support sampler arrays as parameters, so revert to old "
"RewriteStructSamplers behavior, which produces fewer.",
&members, "http://anglebug.com/2703"};
......@@ -265,7 +264,7 @@ struct FeaturesVk : FeatureSetBase
// every buffer allocation size to be large enough to support a maximum vertex stride.
// http://anglebug.com/4428
Feature padBuffersToMaxVertexAttribStride = {
"pad_buffers_to_max_vertex_attrib_stride", FeatureCategory::VulkanWorkarounds,
"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 "
......@@ -277,20 +276,20 @@ struct FeaturesVk : FeatureSetBase
// Whether the VkDevice supports the VK_EXT_swapchain_colorspace extension
// http://anglebug.com/2514
Feature supportsSwapchainColorspace = {
"supports_swapchain_colorspace", FeatureCategory::VulkanFeatures,
"supportsSwapchainColorspace", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_EXT_swapchain_colorspace extension", &members,
"http://anglebug.com/2514"};
// Whether the VkDevice supports the VK_EXT_external_memory_host extension, on which the
// ANGLE_iosurface_client_buffer extension can be layered.
Feature supportsExternalMemoryHost = {
"supports_external_memory_host", FeatureCategory::VulkanFeatures,
"supportsExternalMemoryHost", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_EXT_external_memory_host extension", &members};
// Whether to fill new buffers and textures with nonzero data to sanitize robust resource
// initialization and flush out assumptions about zero init.
Feature allocateNonZeroMemory = {
"allocate_non_zero_memory", FeatureCategory::VulkanFeatures,
"allocateNonZeroMemory", FeatureCategory::VulkanFeatures,
"Fill new allocations with non-zero values to flush out errors.", &members,
"http://anglebug.com/4384"};
......@@ -298,40 +297,39 @@ struct FeaturesVk : FeatureSetBase
// glMap* latency can be reduced by maintaining a copy of the buffer which is
// writeable only by the CPU. We then return this shadow buffer on glMap* calls.
Feature shadowBuffers = {
"shadow_buffers", FeatureCategory::VulkanFeatures,
"shadowBuffers", FeatureCategory::VulkanFeatures,
"Allocate a shadow buffer for GL buffer objects to reduce glMap* latency.", &members,
"http://anglebug.com/4339"};
// Persistently map buffer memory until destroy, saves on map/unmap IOCTL overhead
// for buffers that are updated frequently.
Feature persistentlyMappedBuffers = {
"persistently_mapped_buffers", FeatureCategory::VulkanFeatures,
"persistentlyMappedBuffers", FeatureCategory::VulkanFeatures,
"Persistently map buffer memory to reduce map/unmap IOCTL overhead.", &members,
"http://anglebug.com/2162"};
// Android needs to pre-rotate surfaces that are not oriented per the native device's
// orientation (e.g. a landscape application on a Pixel phone). This feature works for
// full-screen applications. http://anglebug.com/3502
Feature enablePreRotateSurfaces = {"enable_pre_rotation_surfaces",
FeatureCategory::VulkanFeatures,
Feature enablePreRotateSurfaces = {"enablePreRotateSurfaces", FeatureCategory::VulkanFeatures,
"Enable Android pre-rotation for landscape applications",
&members, "http://anglebug.com/3502"};
// Cache FramebufferVk objects. Currently hitting a bug on Apple: http://anglebug.com/4442
Feature enableFramebufferVkCache = {
"enable_framebuffer_vk_cache", FeatureCategory::VulkanFeatures,
"Enable FramebufferVk objects to be cached", &members, "http://anglebug.com/4442"};
Feature enableFramebufferVkCache = {"enableFramebufferVkCache", FeatureCategory::VulkanFeatures,
"Enable FramebufferVk objects to be cached", &members,
"http://anglebug.com/4442"};
// Enable precision qualifiers for shaders generated by Vulkan backend http://anglebug.com/3078
Feature enablePrecisionQualifiers = {
"enable_precision_qualifiers", FeatureCategory::VulkanFeatures,
"enablePrecisionQualifiers", FeatureCategory::VulkanFeatures,
"Enable precision qualifiers in shaders", &members, "http://anglebug.com/3078"};
// Desktop (at least NVIDIA) drivers prefer combining barriers into one vkCmdPipelineBarrier
// call over issuing multiple barrier calls with fine grained dependency information to have
// better performance. http://anglebug.com/4633
Feature preferAggregateBarrierCalls = {
"prefer_aggregate_barrier_calls", FeatureCategory::VulkanWorkarounds,
"preferAggregateBarrierCalls", FeatureCategory::VulkanWorkarounds,
"Single barrier call is preferred over multiple calls with "
"fine grained pipeline stage dependency information",
&members, "http://anglebug.com/4633"};
......@@ -339,20 +337,20 @@ struct FeaturesVk : FeatureSetBase
// Tell Vulkan back-end to use CommandProcessor class to dispatch work to the GPU. The work will
// happen asynchronously in a different thread if asynchronousCommandProcessing is true.
// Otherwise use Renderer::CommandQueue to dispatch work.
Feature commandProcessor = {"command_processor", FeatureCategory::VulkanFeatures,
Feature commandProcessor = {"commandProcessor", FeatureCategory::VulkanFeatures,
"Use CommandProcessor class to dispatch work to GPU.", &members,
"http://anglebug.com/4324"};
// Enable parallel thread execution when commandProcessor is enabled.
// Currently off by default.
Feature asynchronousCommandProcessing = {"asynchronous_command_processing",
Feature asynchronousCommandProcessing = {"asynchronousCommandProcessing",
FeatureCategory::VulkanFeatures,
"Enable/Disable parallel processing of worker thread",
&members, "http://anglebug.com/4324"};
// Whether the VkDevice supports the VK_KHR_shader_float16_int8 extension and has the
// shaderFloat16 feature.
Feature supportsShaderFloat16 = {"supports_shader_float16", FeatureCategory::VulkanFeatures,
Feature supportsShaderFloat16 = {"supportsShaderFloat16", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_KHR_shader_float16_int8 extension "
"and has the shaderFloat16 feature",
&members, "http://anglebug.com/4551"};
......@@ -360,7 +358,7 @@ struct FeaturesVk : FeatureSetBase
// Whether the VkDevice supports the VK_EXT_shader_atomic_flat extension and has the
// shaderImageFloat32Atomics feature
Feature supportsShaderImageFloat32Atomics = {
"shaderImageFloat32Atomics", FeatureCategory::VulkanFeatures,
"supportsShaderImageFloat32Atomics", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_EXT_shader_atomic_float extension and has the "
"shaderImageFloat32Atomics feature.",
&members, "http://anglebug.com/3578"};
......@@ -369,7 +367,7 @@ struct FeaturesVk : FeatureSetBase
// compute shader. On some other devices, VK_IMAGE_USAGE_STORAGE_BIT is detrimental to
// performance, making this solution impractical.
Feature allowGenerateMipmapWithCompute = {
"allow_generate_mipmap_with_compute", FeatureCategory::VulkanFeatures,
"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"};
......@@ -377,7 +375,7 @@ struct FeaturesVk : FeatureSetBase
// Whether the VkDevice supports the VK_QCOM_render_pass_store_ops extension
// http://anglebug.com/5505
Feature supportsRenderPassStoreOpNoneQCOM = {
"supports_render_pass_store_ops_none_qcom", FeatureCategory::VulkanFeatures,
"supportsRenderPassStoreOpNoneQCOM", FeatureCategory::VulkanFeatures,
"VkDevice supports VK_QCOM_render_pass_store_ops extension.", &members,
"http://anglebug.com/5055"};
......@@ -386,7 +384,7 @@ struct FeaturesVk : FeatureSetBase
// device, we set to 16k for now which is known to pass all tests.
// https://issuetracker.google.com/161903006
Feature forceMaxUniformBufferSize16KB = {
"force_max_uniform_buffer_size_16K", FeatureCategory::VulkanWorkarounds,
"forceMaxUniformBufferSize16KB", FeatureCategory::VulkanWorkarounds,
"Force max uniform buffer size to 16K on some device due to bug", &members,
"https://issuetracker.google.com/161903006"};
......@@ -402,13 +400,13 @@ struct FeaturesVk : FeatureSetBase
// is used by Chromium.
// http://anglebug.com/4937
Feature enableMultisampledRenderToTexture = {
"enable_multisampled_render_to_texture", FeatureCategory::VulkanWorkarounds,
"enableMultisampledRenderToTexture", FeatureCategory::VulkanWorkarounds,
"Expose EXT_multisampled_render_to_texture", &members, "http://anglebug.com/4937"};
// Qualcomm fails some tests when reducing the preferred block size to 4M.
// http://anglebug.com/4995
Feature preferredLargeHeapBlockSize4MB = {
"preferred_large_heap_block_size_4M", FeatureCategory::VulkanWorkarounds,
"preferredLargeHeapBlockSize4MB", FeatureCategory::VulkanWorkarounds,
"Use 4 MB preferred large heap block size with AMD allocator", &members,
"http://anglebug.com/4995"};
......@@ -417,44 +415,44 @@ struct FeaturesVk : FeatureSetBase
// the middle of renderpass to the end of renderpass.
// https://issuetracker.google.com/issues/166475273
Feature deferFlushUntilEndRenderPass = {
"defer_flush_until_endrenderpass", FeatureCategory::VulkanWorkarounds,
"deferFlushUntilEndRenderPass", FeatureCategory::VulkanWorkarounds,
"Allow glFlush to be deferred until renderpass ends", &members,
"https://issuetracker.google.com/issues/166475273"};
// Android mistakenly destroys oldSwapchain passed to vkCreateSwapchainKHR, causing crashes on
// certain drivers. http://anglebug.com/5061
Feature waitIdleBeforeSwapchainRecreation = {
"wait_idle_before_swapchain_recreation", FeatureCategory::VulkanWorkarounds,
"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"};
// Translate non-nearest mip filtering modes to nearest mip for all samplers for performance
// comparisons. ANGLE is non-conformant if this feature is enabled.
Feature forceNearestMipFiltering = {"force_nearest_mip_filtering",
Feature forceNearestMipFiltering = {"forceNearestMipFiltering",
FeatureCategory::VulkanWorkarounds,
"Force nearest mip filtering when sampling.", &members};
// Qualcomm missynchronizes vkCmdClearAttachments in the middle of render pass.
// https://issuetracker.google.com/166809097
Feature preferDrawClearOverVkCmdClearAttachments = {
"prefer_draw_clear_over_vkCmdClearAttachments", FeatureCategory::VulkanWorkarounds,
"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"};
// Whether prerotation is being emulated for testing. 90 degree rotation.
Feature emulatedPrerotation90 = {"emulated_prerotation_90", FeatureCategory::VulkanFeatures,
Feature emulatedPrerotation90 = {"emulatedPrerotation90", FeatureCategory::VulkanFeatures,
"Emulate 90-degree prerotation.", &members,
"http://anglebug.com/4901"};
// Whether prerotation is being emulated for testing. 180 degree rotation.
Feature emulatedPrerotation180 = {"emulated_prerotation_180", FeatureCategory::VulkanFeatures,
Feature emulatedPrerotation180 = {"emulatedPrerotation180", FeatureCategory::VulkanFeatures,
"Emulate 180-degree prerotation.", &members,
"http://anglebug.com/4901"};
// Whether prerotation is being emulated for testing. 270 degree rotation.
Feature emulatedPrerotation270 = {"emulated_prerotation_270", FeatureCategory::VulkanFeatures,
Feature emulatedPrerotation270 = {"emulatedPrerotation270", FeatureCategory::VulkanFeatures,
"Emulate 270-degree prerotation.", &members,
"http://anglebug.com/4901"};
};
......
......@@ -178,17 +178,17 @@ bool EGLWindow::initializeDisplay(OSWindow *osWindow,
if (params.transformFeedbackFeature == EGL_FALSE)
{
disabledFeatureOverrides.push_back("supports_transform_feedback_extension");
disabledFeatureOverrides.push_back("emulate_transform_feedback");
disabledFeatureOverrides.push_back("supportsTransformFeedbackExtension");
disabledFeatureOverrides.push_back("emulateTransformFeedback");
}
if (params.allocateNonZeroMemoryFeature == EGL_TRUE)
{
enabledFeatureOverrides.push_back("allocate_non_zero_memory");
enabledFeatureOverrides.push_back("allocateNonZeroMemory");
}
else if (params.allocateNonZeroMemoryFeature == EGL_FALSE)
{
disabledFeatureOverrides.push_back("allocate_non_zero_memory");
disabledFeatureOverrides.push_back("allocateNonZeroMemory");
}
if (params.emulateCopyTexImage2DFromRenderbuffers == EGL_TRUE)
......@@ -209,13 +209,13 @@ bool EGLWindow::initializeDisplay(OSWindow *osWindow,
switch (params.emulatedPrerotation)
{
case 90:
enabledFeatureOverrides.push_back("emulated_prerotation_90");
enabledFeatureOverrides.push_back("emulatedPrerotation90");
break;
case 180:
enabledFeatureOverrides.push_back("emulated_prerotation_180");
enabledFeatureOverrides.push_back("emulatedPrerotation180");
break;
case 270:
enabledFeatureOverrides.push_back("emulated_prerotation_270");
enabledFeatureOverrides.push_back("emulatedPrerotation270");
break;
default:
break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment