• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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