| { |
| "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.", |
| "", |
| "gl_features.json: angle::Features and workarounds for GL driver bugs and other issues." |
| ], |
| "features": [ |
| { |
| "name": "avoid_1_bit_alpha_texture_formats", |
| "category": "Workarounds", |
| "description": [ |
| "Issue with 1-bit alpha framebuffer formats" |
| ] |
| }, |
| { |
| "name": "RGBA4_is_not_supported_for_color_rendering", |
| "category": "Workarounds", |
| "description": [ |
| "GL_RGBA4 is not color renderable" |
| ] |
| }, |
| { |
| "name": "allow_ETC_formats", |
| "category": "Workarounds", |
| "description": [ |
| "Enable ETC2/EAC on desktop OpenGL" |
| ] |
| }, |
| { |
| "name": "allow_astc_formats", |
| "category": "Workarounds", |
| "description": [ |
| "Enable ASTC on desktop OpenGL" |
| ] |
| }, |
| { |
| "name": "clears_with_gaps_need_flush", |
| "category": "Workarounds", |
| "description": [ |
| "Clearing an FBO with multiple attachments may need a flush to avoid race conditions" |
| ] |
| }, |
| { |
| "name": "does_SRGB_clears_on_linear_framebuffer_attachments", |
| "category": "Workarounds", |
| "description": [ |
| "Issue clearing framebuffers with linear attachments when GL_FRAMEBUFFER_SRGB is enabled" |
| ] |
| }, |
| { |
| "name": "do_while_GLSL_causes_GPU_hang", |
| "category": "Workarounds", |
| "description": [ |
| "Some GLSL constructs involving do-while loops cause GPU hangs" |
| ], |
| "issue": "http://crbug.com/644669" |
| }, |
| { |
| "name": "vertex_ID_does_not_include_base_vertex", |
| "category": "Workarounds", |
| "description": [ |
| "gl_VertexID in GLSL vertex shader doesn't include base vertex value" |
| ] |
| }, |
| { |
| "name": "finish_does_not_cause_queries_to_be_available", |
| "category": "Workarounds", |
| "description": [ |
| "glFinish doesn't cause all queries to report available result" |
| ] |
| }, |
| { |
| "name": "always_call_use_program_after_link", |
| "category": "Workarounds", |
| "description": [ |
| "Always call useProgram after a successful link to avoid a driver bug" |
| ], |
| "issue": "http://crbug.com/110263" |
| }, |
| { |
| "name": "unpack_overlapping_rows_separately_unpack_buffer", |
| "category": "Workarounds", |
| "description": [ |
| "In the case of unpacking from a pixel unpack buffer, unpack overlapping rows row by row" |
| ] |
| }, |
| { |
| "name": "pack_overlapping_rows_separately_pack_buffer", |
| "category": "Workarounds", |
| "description": [ |
| "In the case of packing to a pixel pack buffer, pack overlapping rows row by row" |
| ] |
| }, |
| { |
| "name": "initialize_current_vertex_attributes", |
| "category": "Workarounds", |
| "description": [ |
| "During initialization, assign the current vertex attributes to the spec-mandated defaults" |
| ] |
| }, |
| { |
| "name": "emulate_abs_int_function", |
| "category": "Workarounds", |
| "description": [ |
| "abs(i) where i is an integer returns unexpected result" |
| ], |
| "issue": "http://crbug.com/642227" |
| }, |
| { |
| "name": "add_and_true_to_loop_condition", |
| "category": "Workarounds", |
| "description": [ |
| "Calculation of loop conditions in for and while loop has bug" |
| ] |
| }, |
| { |
| "name": "unpack_last_row_separately_for_padding_inclusion", |
| "category": "Workarounds", |
| "description": [ |
| "When uploading textures from an unpack buffer, some drivers count an extra row padding" |
| ], |
| "issue": "http://anglebug.com/1512" |
| }, |
| { |
| "name": "pack_last_row_separately_for_padding_inclusion", |
| "category": "Workarounds", |
| "description": [ |
| "When uploading textures from an pack buffer, some drivers count an extra row padding" |
| ], |
| "issue": "http://anglebug.com/1512" |
| }, |
| { |
| "name": "emulate_isnan_float", |
| "category": "Workarounds", |
| "description": [ |
| "Using isnan() on highp float will get wrong answer" |
| ], |
| "issue": "http://crbug.com/650547" |
| }, |
| { |
| "name": "use_unused_blocks_with_standard_or_shared_layout", |
| "category": "Workarounds", |
| "description": [ |
| "Unused std140 or shared uniform blocks will be treated as inactive" |
| ] |
| }, |
| { |
| "name": "remove_invariant_and_centroid_for_ESSL3", |
| "category": "Workarounds", |
| "description": [ |
| "Fix spec difference between GLSL 4.1 or lower and ESSL3" |
| ] |
| }, |
| { |
| "name": "rewrite_float_unary_minus_operator", |
| "category": "Workarounds", |
| "description": [ |
| "Using '-<float>' will get wrong answer" |
| ], |
| "issue": "http://crbug.com/308366" |
| }, |
| { |
| "name": "emulate_atan_2_float", |
| "category": "Workarounds", |
| "description": [ |
| "atan(y, x) may return a wrong answer" |
| ], |
| "issue": "http://crbug.com/672380" |
| }, |
| { |
| "name": "reapply_UBO_bindings_after_using_binary_program", |
| "category": "Workarounds", |
| "description": [ |
| "Some drivers forget about UBO bindings when using program binaries" |
| ], |
| "issue": "http://anglebug.com/1637" |
| }, |
| { |
| "name": "emulate_max_vertex_attrib_stride", |
| "category": "Workarounds", |
| "description": [ |
| "Some drivers return 0 when MAX_VERTEX_ATTRIB_STRIED queried" |
| ], |
| "issue": "http://anglebug.com/1936" |
| }, |
| { |
| "name": "dont_initialize_uninitialized_locals", |
| "category": "Workarounds", |
| "description": [ |
| "Initializing uninitialized locals caused odd behavior in a few WebGL 2 tests" |
| ], |
| "issue": "http://anglebug.com/2046" |
| }, |
| { |
| "name": "clamp_point_size", |
| "category": "Workarounds", |
| "description": [ |
| "The point size range reported from the API is inconsistent with the actual behavior" |
| ] |
| }, |
| { |
| "name": "dont_use_loops_to_initialize_variables", |
| "category": "Workarounds", |
| "description": [ |
| "For loops used to initialize variables hit native GLSL compiler bugs" |
| ], |
| "issue": "http://crbug.com/809422" |
| }, |
| { |
| "name": "clamp_frag_depth", |
| "category": "Workarounds", |
| "description": [ |
| "gl_FragDepth is not clamped correctly when rendering to a floating point depth buffer" |
| ] |
| }, |
| { |
| "name": "rewrite_repeated_assign_to_swizzled", |
| "category": "Workarounds", |
| "description": [ |
| "Repeated assignment to swizzled values inside a ", |
| "GLSL user-defined function have incorrect results" |
| ] |
| }, |
| { |
| "name": "pre_transform_texture_cube_grad_derivatives", |
| "category": "Workarounds", |
| "description": [ |
| "Apply a vendor-specific transformation to explicit cubemap derivatives" |
| ] |
| }, |
| { |
| "name": "disable_blend_func_extended", |
| "category": "Workarounds", |
| "description": [ |
| "ARB_blend_func_extended does not pass the tests" |
| ], |
| "issue": "http://anglebug.com/1085" |
| }, |
| { |
| "name": "unsized_SRGB_read_pixels_doesnt_transform", |
| "category": "Workarounds", |
| "description": [ |
| "Drivers returning raw sRGB values instead of linearized values when calling glReadPixels ", |
| "on unsized sRGB texture formats" |
| ], |
| "issue": "http://crbug.com/550292 http://crbug.com/565179" |
| }, |
| { |
| "name": "query_counter_bits_generates_errors", |
| "category": "Workarounds", |
| "description": [ |
| "Drivers generate errors when querying the number of bits in timer queries" |
| ], |
| "issue": "http://anglebug.com/3027" |
| }, |
| { |
| "name": "limit_webgl_max_texture_size_to_4096", |
| "category": "Workarounds", |
| "description": [ |
| "Limit webgl max texture size to 4096 to avoid frequent ", |
| "out-of-memory errors" |
| ], |
| "issue": "http://crbug.com/927470" |
| }, |
| { |
| "name": "limit_webgl_max_texture_size_to_8192", |
| "category": "Workarounds", |
| "description": [ |
| "Limit webgl max texture size to 8192 to avoid frequent ", |
| "out-of-memory errors" |
| ], |
| "issue": "http://anglebug.com/8611" |
| }, |
| { |
| "name": "limit_max_MSAA_samples_to_4", |
| "category": "Workarounds", |
| "description": [ |
| "Various rendering bugs have been observed when using higher MSAA counts" |
| ], |
| "issue": "http://crbug.com/797243" |
| }, |
| { |
| "name": "allow_clear_for_robust_resource_init", |
| "category": "Workarounds", |
| "description": [ |
| "Using glClear for robust resource initialization is buggy on some drivers and leads to ", |
| "texture corruption. Default to data uploads except on MacOS where it is very slow." |
| ], |
| "issue": "https://crbug.com/848952 http://crbug.com/883276" |
| }, |
| { |
| "name": "clamp_array_access", |
| "category": "Workarounds", |
| "description": [ |
| "Clamp uniform array access to avoid reading invalid memory." |
| ], |
| "issue": "http://anglebug.com/2978" |
| }, |
| { |
| "name": "reset_TexImage2D_base_level", |
| "category": "Workarounds", |
| "description": [ |
| "Reset texture base level before calling glTexImage2D to ", |
| "work around pixel comparison failure." |
| ], |
| "issue": "https://crbug.com/705865" |
| }, |
| { |
| "name": "clear_to_zero_or_one_broken", |
| "category": "Workarounds", |
| "description": [ |
| "Clears when the clear color is all zeros or ones do not work." |
| ], |
| "issue": "https://crbug.com/710443" |
| }, |
| { |
| "name": "limit_max_3d_array_texture_size_to_1024", |
| "category": "Workarounds", |
| "description": [ |
| "Limit max 3d texture size and max array texture layers to 1024 to avoid system hang" |
| ], |
| "issue": "http://crbug.com/927470" |
| }, |
| { |
| "name": "adjust_src_dst_region_for_BlitFramebuffer", |
| "category": "Workarounds", |
| "description": [ |
| "Many platforms have issues with blitFramebuffer when the parameters are large." |
| ], |
| "issue": "http://crbug.com/830046" |
| }, |
| { |
| "name": "clip_src_region_for_BlitFramebuffer", |
| "category": "Workarounds", |
| "description": [ |
| "Issues with blitFramebuffer when the parameters don't match the framebuffer size." |
| ], |
| "issue": "http://crbug.com/830046" |
| }, |
| { |
| "name": "RGB_DXT1_textures_sample_zero_alpha", |
| "category": "Workarounds", |
| "description": [ |
| "Sampling BLACK texels from RGB DXT1 textures returns transparent black on Mac." |
| ], |
| "issue": "http://anglebug.com/3729" |
| }, |
| { |
| "name": "unfold_short_circuits", |
| "category": "Workarounds", |
| "description": [ |
| "Mac incorrectly executes both sides of && and || expressions when they should ", |
| "short-circuit." |
| ], |
| "issue": "http://anglebug.com/482" |
| }, |
| { |
| "name": "emulate_primitive_restart_fixed_index", |
| "category": "Workarounds", |
| "description": [ |
| "When GL_PRIMITIVE_RESTART_FIXED_INDEX is not available, emulate it with ", |
| "GL_PRIMITIVE_RESTART and glPrimitiveRestartIndex." |
| ], |
| "issue": "http://anglebug.com/3997" |
| }, |
| { |
| "name": "set_primitive_restart_fixed_index_for_draw_arrays", |
| "category": "Workarounds", |
| "description": [ |
| "Some drivers discard vertex data in DrawArrays calls when the fixed primitive restart ", |
| "index is within the number of primitives being drawn." |
| ], |
| "issue": "http://anglebug.com/3997" |
| }, |
| { |
| "name": "remove_dynamic_indexing_of_swizzled_vector", |
| "category": "Workarounds", |
| "description": [ |
| "Dynamic indexing of swizzled l-values doesn't work correctly on various platforms." |
| ], |
| "issue": "http://crbug.com/709351" |
| }, |
| { |
| "name": "pre_add_texel_fetch_offsets", |
| "category": "Workarounds", |
| "description": [ |
| "Intel Mac drivers mistakenly consider the parameter position of nagative vaule as invalid ", |
| "even if the sum of position and offset is in range, so we need to add workarounds by ", |
| "rewriting texelFetchOffset(sampler, position, lod, offset) into texelFetch(sampler, ", |
| "position + offset, lod)." |
| ], |
| "issue": "http://crbug.com/642605" |
| }, |
| { |
| "name": "regenerate_struct_names", |
| "category": "Workarounds", |
| "description": [ |
| "All Mac drivers do not handle struct scopes correctly. This workaround overwrites a struct", |
| "name with a unique prefix." |
| ], |
| "issue": "http://crbug.com/403957" |
| }, |
| { |
| "name": "read_pixels_using_implementation_color_read_format_for_norm16", |
| "category": "Workarounds", |
| "description": [ |
| "Quite some OpenGL ES drivers don't implement readPixels for RGBA/UNSIGNED_SHORT from ", |
| "EXT_texture_norm16 correctly" |
| ], |
| "issue": "http://anglebug.com/4214" |
| }, |
| { |
| "name": "flush_before_delete_texture_if_copied_to", |
| "category": "Workarounds", |
| "description": [ |
| "Some drivers track CopyTex{Sub}Image texture dependencies incorrectly. Flush", |
| " before glDeleteTextures in this case" |
| ], |
| "issue": "http://anglebug.com/4267" |
| }, |
| { |
| "name": "rewrite_row_major_matrices", |
| "category": "Workarounds", |
| "description": [ |
| "Rewrite row major matrices in shaders as column major as a driver bug workaround" |
| ], |
| "issue": "http://anglebug.com/2273" |
| }, |
| { |
| "name": "disable_draw_buffers_indexed", |
| "category": "Workarounds", |
| "description": [ |
| "Disable OES_draw_buffers_indexed extension." |
| ] |
| }, |
| { |
| "name": "disable_semaphore_fd", |
| "category": "Workarounds", |
| "description": [ |
| "Disable GL_EXT_semaphore_fd extension" |
| ], |
| "issue": "https://crbug.com/1046462" |
| }, |
| { |
| "name": "disable_timestamp_queries", |
| "category": "Workarounds", |
| "description": [ |
| "Disable GL_EXT_disjoint_timer_query extension" |
| ], |
| "issue": "https://crbug.com/811661" |
| }, |
| { |
| "name": "decode_encode_SRGB_for_GenerateMipmap", |
| "category": "Workarounds", |
| "description": [ |
| "Decode and encode before generateMipmap for srgb format textures." |
| ], |
| "issue": "http://anglebug.com/4646" |
| }, |
| { |
| "name": "emulate_CopyTexImage2D", |
| "category": "Workarounds", |
| "description": [ |
| "Replace CopyTexImage2D with TexImage2D + CopyTexSubImage2D." |
| ] |
| }, |
| { |
| "name": "emulate_CopyTexImage2D_from_renderbuffers", |
| "category": "Workarounds", |
| "description": [ |
| "CopyTexImage2D spuriously returns errors on iOS when copying from renderbuffers." |
| ], |
| "issue": "https://anglebug.com/4674" |
| }, |
| { |
| "name": "disable_GPU_switching_support", |
| "category": "Workarounds", |
| "description": [ |
| "Disable GPU switching support (use only the low-power GPU) on older MacBook Pros." |
| ], |
| "issue": "https://crbug.com/1091824" |
| }, |
| { |
| "name": "disable_native_parallel_compile", |
| "category": "Workarounds", |
| "description": [ |
| "Do not use native KHR_parallel_shader_compile even when available." |
| ], |
| "issue": "http://crbug.com/1094869" |
| }, |
| { |
| "name": "emulate_pack_skip_rows_and_pack_skip_pixels", |
| "category": "Workarounds", |
| "description": [ |
| "GL_PACK_SKIP_ROWS and GL_PACK_SKIP_PIXELS are ignored in Apple's OpenGL driver." |
| ], |
| "issue": "https://anglebug.com/4849" |
| }, |
| { |
| "name": "clamp_msc_rate", |
| "category": "Workarounds", |
| "description": [ |
| "Some drivers return bogus values for GetMscRate, so we clamp it to 30Hz" |
| ], |
| "issue": "https://crbug.com/1042393" |
| }, |
| { |
| "name": "bind_transform_feedback_buffer_before_bind_buffer_range", |
| "category": "Workarounds", |
| "description": [ |
| "Bind transform feedback buffers to the generic binding point before calling ", |
| "glBindBufferBase or glBindBufferRange." |
| ], |
| "issue": "https://anglebug.com/5140" |
| }, |
| { |
| "name": "disable_sync_control_support", |
| "category": "Workarounds", |
| "description": [ |
| "Speculative fix for issues on Linux/Wayland where exposing GLX_OML_sync_control renders ", |
| "Chrome unusable" |
| ], |
| "issue": "https://crbug.com/1137851" |
| }, |
| { |
| "name": "keep_buffer_shadow_copy", |
| "category": "Workarounds", |
| "description": [ |
| "Maintain a shadow copy of buffer data when the GL API does not permit reading data back." |
| ] |
| }, |
| { |
| "name": "set_zero_level_before_GenerateMipmap", |
| "category": "Workarounds", |
| "description": [ |
| "glGenerateMipmap fails if the zero texture level is not set on some Mac drivers." |
| ] |
| }, |
| { |
| "name": "promote_packed_formats_to_8_bit_per_channel", |
| "category": "Workarounds", |
| "description": [ |
| "Packed color formats are buggy on Macs with AMD GPUs" |
| ], |
| "issue": "http://anglebug.com/5469" |
| }, |
| { |
| "name": "init_fragment_output_variables", |
| "category": "Workarounds", |
| "description": [ |
| "No init gl_FragColor causes context lost" |
| ], |
| "issue": "http://crbug.com/1171371" |
| }, |
| { |
| "name": "shift_instanced_array_data_with_offset", |
| "category": "Workarounds", |
| "description": [ |
| "glDrawArraysInstanced is buggy on certain new Mac Intel GPUs" |
| ], |
| "issue": "http://crbug.com/1144207" |
| }, |
| { |
| "name": "sync_vertex_arrays_to_default", |
| "category": "Workarounds", |
| "description": [ |
| "Only use the default VAO because of missing support or driver bugs" |
| ], |
| "issue": "http://anglebug.com/5577" |
| }, |
| { |
| "name": "sanitize_AMDGPU_renderer_string", |
| "category": "Workarounds", |
| "description": [ |
| "Strip precise kernel and DRM version information from amdgpu renderer strings." |
| ], |
| "issue": "http://crbug.com/1181193" |
| }, |
| { |
| "name": "unbind_FBO_before_switching_context", |
| "category": "Workarounds", |
| "description": [ |
| "Imagination GL drivers are buggy with context switching." |
| ], |
| "issue": "http://crbug.com/1181193" |
| }, |
| { |
| "name": "flush_on_framebuffer_change", |
| "category": "Workarounds", |
| "description": [ |
| "Switching framebuffers without a flush can lead to ", |
| "crashes on Intel 9th Generation GPU Macs." |
| ], |
| "issue": "http://crbug.com/1181068" |
| }, |
| { |
| "name": "disable_multisampled_render_to_texture", |
| "category": "Workarounds", |
| "description": [ |
| "Many drivers have bugs when using GL_EXT_multisampled_render_to_texture" |
| ], |
| "issue": "http://anglebug.com/2894" |
| }, |
| { |
| "name": "upload_texture_data_in_chunks", |
| "category": "Workarounds", |
| "description": [ |
| "Upload texture data in <120kb chunks to work around Mac driver hangs and crashes." |
| ], |
| "issue": "http://crbug.com/1181068" |
| }, |
| { |
| "name": "emulate_immutable_compressed_texture_3D", |
| "category": "Workarounds", |
| "description": [ |
| "Use non-immutable texture allocation to work around a driver bug." |
| ], |
| "issue": "https://crbug.com/1060012" |
| }, |
| { |
| "name": "emulate_RGB10", |
| "category": "Workarounds", |
| "description": [ |
| "Emulate RGB10 support using RGB10_A2." |
| ], |
| "issue": "https://crbug.com/1300575" |
| }, |
| { |
| "name": "always_unbind_framebuffer_texture_2D", |
| "category": "Workarounds", |
| "description": [ |
| "Force unbind framebufferTexture2D before binding renderbuffer to work around driver bug." |
| ], |
| "issue": "https://anglebug.com/5536" |
| }, |
| { |
| "name": "disable_texture_clamp_to_border", |
| "category": "Workarounds", |
| "description": [ |
| "Imagination devices generate INVALID_ENUM when setting the texture border color." |
| ], |
| "issue": "https://anglebug.com/7405" |
| }, |
| { |
| "name": "pass_highp_to_pack_unorm_snorm_builtins", |
| "category": "Workarounds", |
| "description": [ |
| "packUnorm4x8 fails on Pixel 4 if it is not passed a highp vec4." |
| ], |
| "issue": "http://anglebug.com/7527" |
| }, |
| { |
| "name": "emulate_clip_distance_state", |
| "category": "Workarounds", |
| "description": [ |
| "Some drivers ignore GL_CLIP_DISTANCEi_EXT state." |
| ] |
| }, |
| { |
| "name": "emulate_clip_origin", |
| "category": "Workarounds", |
| "description": [ |
| "Some drivers incorrectly apply GL_CLIP_ORIGIN_EXT state." |
| ] |
| }, |
| { |
| "name": "bind_complete_framebuffer_for_timer_queries", |
| "category": "Workarounds", |
| "description": [ |
| "Some drivers require a complete framebuffer when beginQuery for TimeElapsed or", |
| "Timestampis called." |
| ], |
| "issue": "https://crbug.com/1356053" |
| }, |
| { |
| "name": "disable_base_instance_vertex", |
| "category": "Workarounds", |
| "description": [ |
| "Some drivers have buggy implementations of glDraw*BaseVertex*." |
| ], |
| "issue": "http://anglebug.com/8172" |
| }, |
| { |
| "name": "supports_fragment_shader_interlock_NV", |
| "category": "Features", |
| "description": [ |
| "Backend GL context supports NV_fragment_shader_interlock extension" |
| ], |
| "issue": "http://anglebug.com/7279" |
| }, |
| { |
| "name": "supports_fragment_shader_ordering_INTEL", |
| "category": "Features", |
| "description": [ |
| "Backend GL context supports GL_INTEL_fragment_shader_ordering extension" |
| ], |
| "issue": "http://anglebug.com/7279" |
| }, |
| { |
| "name": "supports_fragment_shader_interlock_ARB", |
| "category": "Features", |
| "description": [ |
| "Backend GL context supports ARB_fragment_shader_interlock extension" |
| ], |
| "issue": "http://anglebug.com/7279" |
| }, |
| { |
| "name": "supports_shader_framebuffer_fetch_EXT", |
| "category": "Features", |
| "description": [ |
| "Backend GL context supports EXT_shader_framebuffer_fetch extension" |
| ], |
| "issue": "http://anglebug.com/7279" |
| }, |
| { |
| "name": "supports_shader_framebuffer_fetch_non_coherent_EXT", |
| "category": "Features", |
| "description": [ |
| "Backend GL context supports EXT_shader_framebuffer_fetch_non_coherent extension" |
| ], |
| "issue": "http://anglebug.com/7279" |
| }, |
| { |
| "name": "supports_shader_pixel_local_storage_EXT", |
| "category": "Features", |
| "description": [ |
| "Backend GL context supports EXT_shader_pixel_local_storage extension" |
| ], |
| "issue": "http://anglebug.com/7279" |
| }, |
| { |
| "name": "disable_clip_control", |
| "category": "Features", |
| "description": [ |
| "Some devices genenerate errors when querying the clip control state" |
| ], |
| "issue": "http://crbug.com/1434317" |
| }, |
| { |
| "name": "scalarize_vec_and_mat_constructor_args", |
| "category": "Workarounds", |
| "description": [ |
| "Rewrite vec/mat constructors to work around driver bugs" |
| ], |
| "issue": "http://crbug.com/1420130" |
| }, |
| { |
| "name": "ensure_non_empty_buffer_is_bound_for_draw", |
| "category": "Features", |
| "description": [ |
| "Apple OpenGL drivers crash when drawing with a zero-sized buffer bound using a non-zero divisor." |
| ], |
| "issue": "http://crbug.com/1456243" |
| }, |
| { |
| "name": "explicit_fragment_locations", |
| "category": "Workarounds", |
| "description": [ |
| "Always write explicit location layout qualifiers for fragment outputs." |
| ], |
| "issue": "https://anglebug.com/8308" |
| }, |
| { |
| "name": "disable_render_snorm", |
| "category": "Workarounds", |
| "description": [ |
| "Disable EXT_render_snorm extension." |
| ], |
| "issue": "https://anglebug.com/8315" |
| }, |
| { |
| "name": "disable_texture_mirror_clamp_to_edge", |
| "category": "Workarounds", |
| "description": [ |
| "Disable EXT_texture_mirror_clamp_to_edge extension." |
| ], |
| "issue": "https://anglebug.com/8319" |
| }, |
| { |
| "name": "resync_depth_range_on_clip_control", |
| "category": "Workarounds", |
| "description": [ |
| "Resync depth range to apply clip control updates." |
| ], |
| "issue": "https://anglebug.com/8381" |
| }, |
| { |
| "name": "corrupt_program_binary_for_testing", |
| "category": "Workarounds", |
| "description": [ |
| "Corrupt the program binary retrieved from the driver for testing purposes." |
| ], |
| "issue": "https://anglebug.com/8471" |
| }, |
| { |
| "name": "use_intermediate_texture_for_generate_mipmap", |
| "category": "Workarounds", |
| "description": [ |
| "Some drivers lose context when repeatedly generating mipmaps on textures that were used as framebuffers." |
| ], |
| "issue": "https://crbug.com/40279678" |
| } |
| ] |
| } |