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