1{ 2 "description": [ 3 "Copyright 2022 The ANGLE Project Authors. All rights reserved.", 4 "Use of this source code is governed by a BSD-style license that can be", 5 "found in the LICENSE file.", 6 "", 7 "d3d_features.json: Features and workarounds for D3D driver bugs and other issues." 8 ], 9 "features": [ 10 { 11 "name": "border_color_srgb", 12 "category": "Workarounds", 13 "description": [ 14 "Some drivers expect sRGB border color for sRGB texture formats" 15 ] 16 }, 17 { 18 "name": "mrt_perf_workaround", 19 "category": "Workarounds", 20 "description": [ 21 "Some drivers have a bug where they ignore null render targets" 22 ] 23 }, 24 { 25 "name": "set_data_faster_than_image_upload", 26 "category": "Workarounds", 27 "description": [ 28 "Set data faster than image upload" 29 ] 30 }, 31 { 32 "name": "zero_max_lod_workaround", 33 "category": "Workarounds", 34 "description": [ 35 "Missing an option to disable mipmaps on a mipmapped texture" 36 ] 37 }, 38 { 39 "name": "use_instanced_point_sprite_emulation", 40 "category": "Workarounds", 41 "description": [ 42 "Some D3D11 renderers do not support geometry shaders for pointsprite emulation" 43 ] 44 }, 45 { 46 "name": "depth_stencil_blit_extra_copy", 47 "category": "Workarounds", 48 "description": [ 49 "Bug in some drivers triggers a TDR when using CopySubresourceRegion from a staging ", 50 "texture to a depth/stencil" 51 ], 52 "issue": "http://anglebug.com/1452" 53 }, 54 { 55 "name": "expand_integer_pow_expressions", 56 "category": "Workarounds", 57 "description": [ 58 "The HLSL optimizer has a bug with optimizing 'pow' in certain integer-valued expressions" 59 ] 60 }, 61 { 62 "name": "flush_after_ending_transform_feedback", 63 "category": "Workarounds", 64 "description": [ 65 "Some drivers sometimes write out-of-order results to StreamOut buffers when transform ", 66 "feedback is used to repeatedly write to the same buffer positions" 67 ] 68 }, 69 { 70 "name": "get_dimensions_ignores_base_level", 71 "category": "Workarounds", 72 "description": [ 73 "Some drivers do not take into account the base level of the ", 74 "texture in the results of the HLSL GetDimensions builtin" 75 ] 76 }, 77 { 78 "name": "pre_add_texel_fetch_offsets", 79 "category": "Workarounds", 80 "description": [ 81 "HLSL's function texture.Load returns 0 when the parameter Location is negative, even if ", 82 "the sum of Offset and Location is in range" 83 ] 84 }, 85 { 86 "name": "emulate_tiny_stencil_textures", 87 "category": "Workarounds", 88 "description": [ 89 "1x1 and 2x2 mips of depth/stencil textures aren't sampled correctly" 90 ] 91 }, 92 { 93 "name": "disable_B5G6R5_support", 94 "category": "Workarounds", 95 "description": [ 96 "Textures with the format ", 97 "DXGI_FORMAT_B5G6R5_UNORM have incorrect data" 98 ] 99 }, 100 { 101 "name": "rewrite_unary_minus_operator", 102 "category": "Workarounds", 103 "description": [ 104 "Evaluating unary minus operator on integer may get wrong answer in vertex shaders" 105 ] 106 }, 107 { 108 "name": "emulate_isnan_float", 109 "category": "Workarounds", 110 "description": [ 111 "Using isnan() on highp float will get wrong answer" 112 ], 113 "issue": "https://crbug.com/650547" 114 }, 115 { 116 "name": "call_clear_twice", 117 "category": "Workarounds", 118 "description": [ 119 "Using clear() may not take effect" 120 ], 121 "issue": "https://crbug.com/655534" 122 }, 123 { 124 "name": "use_system_memory_for_constant_buffers", 125 "category": "Workarounds", 126 "description": [ 127 "Copying from staging storage to constant buffer ", 128 "storage does not work" 129 ], 130 "issue": "https://crbug.com/593024" 131 }, 132 { 133 "name": "select_view_in_geometry_shader", 134 "category": "Workarounds", 135 "description": [ 136 "The viewport or render target slice will be selected in the geometry shader stage for ", 137 "the ANGLE_multiview extension" 138 ] 139 }, 140 { 141 "name": "add_mock_texture_no_render_target", 142 "category": "Workarounds", 143 "description": [ 144 "On some drivers when rendering with no render target, two bugs lead to incorrect behavior" 145 ], 146 "issue": "http://anglebug.com/2152" 147 }, 148 { 149 "name": "skip_VS_constant_register_zero", 150 "category": "Workarounds", 151 "description": [ 152 "In specific cases the driver doesn't handle constant register zero correctly" 153 ] 154 }, 155 { 156 "name": "force_atomic_value_resolution", 157 "category": "Workarounds", 158 "description": [ 159 "On some drivers the return value from RWByteAddressBuffer.InterlockedAdd does not resolve ", 160 "when used in the .yzw components of a RWByteAddressBuffer.Store operation" 161 ], 162 "issue": "http://anglebug.com/3246" 163 }, 164 { 165 "name": "allow_clear_for_robust_resource_init", 166 "category": "Workarounds", 167 "description": [ 168 "Some drivers corrupt texture data when clearing for robust resource initialization." 169 ], 170 "issue": "http://crbug.com/941620" 171 }, 172 { 173 "name": "allow_translate_uniform_block_to_structured_buffer", 174 "category": "Workarounds", 175 "description": [ 176 "There is a slow fxc compile performance issue with dynamic uniform indexing if ", 177 "translating a uniform block with a large array member to cbuffer." 178 ], 179 "issue": "http://anglebug.com/3682" 180 }, 181 { 182 "name": "allow_ES3_on_FL10_0", 183 "category": "Workarounds", 184 "description": [ 185 "Allow ES3 on 10.0 devices" 186 ] 187 }, 188 { 189 "name": "disable_rasterizer_order_views", 190 "category": "Workarounds", 191 "description": [ 192 "Disable ROVs for testing" 193 ], 194 "issue": "http://anglebug.com/7279" 195 }, 196 { 197 "name": "enable_timestamp_queries", 198 "category": "Workarounds", 199 "description": [ 200 "Enable timestamp on GL_EXT_disjoint_timer_query extension" 201 ] 202 }, 203 { 204 "name": "supports_non_constant_loop_indexing", 205 "category": "Workarounds", 206 "description": [ 207 "Whether the API supports non-constant loop indexing" 208 ] 209 } 210 ] 211} 212