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.h: Features and workarounds for D3D driver bugs and other issues. 9 10 #ifndef ANGLE_PLATFORM_FEATURESD3D_H_ 11 #define ANGLE_PLATFORM_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 mrtPerfWorkaround = { 24 "mrtPerfWorkaround", 25 FeatureCategory::D3DWorkarounds, 26 "Some drivers have a bug where they ignore null render targets", 27 &members, 28 }; 29 30 FeatureInfo setDataFasterThanImageUpload = { 31 "setDataFasterThanImageUpload", 32 FeatureCategory::D3DWorkarounds, 33 "Set data faster than image upload", 34 &members, 35 }; 36 37 FeatureInfo zeroMaxLodWorkaround = { 38 "zeroMaxLodWorkaround", 39 FeatureCategory::D3DWorkarounds, 40 "Missing an option to disable mipmaps on a mipmapped texture", 41 &members, 42 }; 43 44 FeatureInfo useInstancedPointSpriteEmulation = { 45 "useInstancedPointSpriteEmulation", 46 FeatureCategory::D3DWorkarounds, 47 "Some D3D11 renderers do not support geometry shaders for pointsprite emulation", 48 &members, 49 }; 50 51 FeatureInfo depthStencilBlitExtraCopy = { 52 "depthStencilBlitExtraCopy", FeatureCategory::D3DWorkarounds, 53 "Bug in some drivers triggers a TDR when using CopySubresourceRegion from a staging " 54 "texture to a depth/stencil", 55 &members, "http://anglebug.com/1452"}; 56 57 FeatureInfo expandIntegerPowExpressions = { 58 "expandIntegerPowExpressions", 59 FeatureCategory::D3DWorkarounds, 60 "The HLSL optimizer has a bug with optimizing 'pow' in certain integer-valued expressions", 61 &members, 62 }; 63 64 FeatureInfo flushAfterEndingTransformFeedback = { 65 "flushAfterEndingTransformFeedback", 66 FeatureCategory::D3DWorkarounds, 67 "Some drivers sometimes write out-of-order results to StreamOut buffers when transform " 68 "feedback is used to repeatedly write to the same buffer positions", 69 &members, 70 }; 71 72 FeatureInfo getDimensionsIgnoresBaseLevel = { 73 "getDimensionsIgnoresBaseLevel", 74 FeatureCategory::D3DWorkarounds, 75 "Some drivers do not take into account the base level of the " 76 "texture in the results of the HLSL GetDimensions builtin", 77 &members, 78 }; 79 80 FeatureInfo preAddTexelFetchOffsets = { 81 "preAddTexelFetchOffsets", 82 FeatureCategory::D3DWorkarounds, 83 "HLSL's function texture.Load returns 0 when the parameter Location is negative, even if " 84 "the sum of Offset and Location is in range", 85 &members, 86 }; 87 88 FeatureInfo emulateTinyStencilTextures = { 89 "emulateTinyStencilTextures", 90 FeatureCategory::D3DWorkarounds, 91 "1x1 and 2x2 mips of depth/stencil textures aren't sampled correctly", 92 &members, 93 }; 94 95 FeatureInfo disableB5G6R5Support = { 96 "disableB5G6R5Support", 97 FeatureCategory::D3DWorkarounds, 98 "Textures with the format " 99 "DXGI_FORMAT_B5G6R5_UNORM have incorrect data", 100 &members, 101 }; 102 103 FeatureInfo rewriteUnaryMinusOperator = { 104 "rewriteUnaryMinusOperator", 105 FeatureCategory::D3DWorkarounds, 106 "Evaluating unary minus operator on integer may get wrong answer in vertex shaders", 107 &members, 108 }; 109 110 FeatureInfo emulateIsnanFloat = {"emulateIsnanFloat", FeatureCategory::D3DWorkarounds, 111 "Using isnan() on highp float will get wrong answer", &members, 112 "https://crbug.com/650547"}; 113 114 FeatureInfo callClearTwice = {"callClearTwice", FeatureCategory::D3DWorkarounds, 115 "Using clear() may not take effect", &members, 116 "https://crbug.com/655534"}; 117 118 FeatureInfo useSystemMemoryForConstantBuffers = { 119 "useSystemMemoryForConstantBuffers", FeatureCategory::D3DWorkarounds, 120 "Copying from staging storage to constant buffer " 121 "storage does not work", 122 &members, "https://crbug.com/593024"}; 123 124 FeatureInfo selectViewInGeometryShader = { 125 "selectViewInGeometryShader", 126 FeatureCategory::D3DWorkarounds, 127 "The viewport or render target slice will be selected in the geometry shader stage for " 128 "the ANGLE_multiview extension", 129 &members, 130 }; 131 132 FeatureInfo addMockTextureNoRenderTarget = { 133 "addMockTextureNoRenderTarget", FeatureCategory::D3DWorkarounds, 134 "On some drivers when rendering with no render target, two bugs lead to incorrect behavior", 135 &members, "http://anglebug.com/2152"}; 136 137 FeatureInfo skipVSConstantRegisterZero = { 138 "skipVSConstantRegisterZero", 139 FeatureCategory::D3DWorkarounds, 140 "In specific cases the driver doesn't handle constant register zero correctly", 141 &members, 142 }; 143 144 FeatureInfo forceAtomicValueResolution = { 145 "forceAtomicValueResolution", FeatureCategory::D3DWorkarounds, 146 "On some drivers the return value from RWByteAddressBuffer.InterlockedAdd does not resolve " 147 "when used in the .yzw components of a RWByteAddressBuffer.Store operation", 148 &members, "http://anglebug.com/3246"}; 149 150 FeatureInfo allowClearForRobustResourceInit = { 151 "allowClearForRobustResourceInit", FeatureCategory::D3DWorkarounds, 152 "Some drivers corrupt texture data when clearing for robust resource initialization.", 153 &members, "http://crbug.com/941620"}; 154 155 FeatureInfo allowTranslateUniformBlockToStructuredBuffer = { 156 "allowTranslateUniformBlockToStructuredBuffer", FeatureCategory::D3DWorkarounds, 157 "There is a slow fxc compile performance issue with dynamic uniform indexing if " 158 "translating a uniform block with a large array member to cbuffer.", 159 &members, "http://anglebug.com/3682"}; 160 161 FeatureInfo allowES3OnFL100 = { 162 "allowES3OnFL100", 163 FeatureCategory::D3DWorkarounds, 164 "Allow ES3 on 10.0 devices", 165 &members, 166 }; 167 }; 168 169 inline FeaturesD3D::FeaturesD3D() = default; 170 inline FeaturesD3D::~FeaturesD3D() = default; 171 172 } // namespace angle 173 174 #endif // ANGLE_PLATFORM_FEATURESD3D_H_ 175