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