blob: 33015f9ead44b4bd79d3dc2903077fcaf599ee7a [file] [log] [blame]
// GENERATED FILE - DO NOT EDIT.
// Generated by gen_features.py using data from d3d_features.json.
//
// Copyright 2022 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// FeaturesD3D_autogen.h: Features and workarounds for D3D driver bugs and other issues.
#ifndef ANGLE_PLATFORM_FEATURESD3D_H_
#define ANGLE_PLATFORM_FEATURESD3D_H_
#include "platform/Feature.h"
namespace angle
{
struct FeaturesD3D : FeatureSetBase
{
FeaturesD3D();
~FeaturesD3D();
FeatureInfo mrtPerfWorkaround = {
"mrtPerfWorkaround",
FeatureCategory::D3DWorkarounds,
"Some drivers have a bug where they ignore null render targets",
&members,
};
FeatureInfo setDataFasterThanImageUpload = {
"setDataFasterThanImageUpload",
FeatureCategory::D3DWorkarounds,
"Set data faster than image upload",
&members,
};
FeatureInfo zeroMaxLodWorkaround = {
"zeroMaxLodWorkaround",
FeatureCategory::D3DWorkarounds,
"Missing an option to disable mipmaps on a mipmapped texture",
&members,
};
FeatureInfo useInstancedPointSpriteEmulation = {
"useInstancedPointSpriteEmulation",
FeatureCategory::D3DWorkarounds,
"Some D3D11 renderers do not support geometry shaders for pointsprite emulation",
&members,
};
FeatureInfo depthStencilBlitExtraCopy = {
"depthStencilBlitExtraCopy", FeatureCategory::D3DWorkarounds,
"Bug in some drivers triggers a TDR when using CopySubresourceRegion from a staging "
"texture to a depth/stencil",
&members, "http://anglebug.com/1452"};
FeatureInfo expandIntegerPowExpressions = {
"expandIntegerPowExpressions",
FeatureCategory::D3DWorkarounds,
"The HLSL optimizer has a bug with optimizing 'pow' in certain integer-valued expressions",
&members,
};
FeatureInfo flushAfterEndingTransformFeedback = {
"flushAfterEndingTransformFeedback",
FeatureCategory::D3DWorkarounds,
"Some drivers sometimes write out-of-order results to StreamOut buffers when transform "
"feedback is used to repeatedly write to the same buffer positions",
&members,
};
FeatureInfo getDimensionsIgnoresBaseLevel = {
"getDimensionsIgnoresBaseLevel",
FeatureCategory::D3DWorkarounds,
"Some drivers do not take into account the base level of the "
"texture in the results of the HLSL GetDimensions builtin",
&members,
};
FeatureInfo preAddTexelFetchOffsets = {
"preAddTexelFetchOffsets",
FeatureCategory::D3DWorkarounds,
"HLSL's function texture.Load returns 0 when the parameter Location is negative, even if "
"the sum of Offset and Location is in range",
&members,
};
FeatureInfo emulateTinyStencilTextures = {
"emulateTinyStencilTextures",
FeatureCategory::D3DWorkarounds,
"1x1 and 2x2 mips of depth/stencil textures aren't sampled correctly",
&members,
};
FeatureInfo disableB5G6R5Support = {
"disableB5G6R5Support",
FeatureCategory::D3DWorkarounds,
"Textures with the format "
"DXGI_FORMAT_B5G6R5_UNORM have incorrect data",
&members,
};
FeatureInfo rewriteUnaryMinusOperator = {
"rewriteUnaryMinusOperator",
FeatureCategory::D3DWorkarounds,
"Evaluating unary minus operator on integer may get wrong answer in vertex shaders",
&members,
};
FeatureInfo emulateIsnanFloat = {"emulateIsnanFloat", FeatureCategory::D3DWorkarounds,
"Using isnan() on highp float will get wrong answer", &members,
"https://crbug.com/650547"};
FeatureInfo callClearTwice = {"callClearTwice", FeatureCategory::D3DWorkarounds,
"Using clear() may not take effect", &members,
"https://crbug.com/655534"};
FeatureInfo useSystemMemoryForConstantBuffers = {
"useSystemMemoryForConstantBuffers", FeatureCategory::D3DWorkarounds,
"Copying from staging storage to constant buffer "
"storage does not work",
&members, "https://crbug.com/593024"};
FeatureInfo selectViewInGeometryShader = {
"selectViewInGeometryShader",
FeatureCategory::D3DWorkarounds,
"The viewport or render target slice will be selected in the geometry shader stage for "
"the ANGLE_multiview extension",
&members,
};
FeatureInfo addMockTextureNoRenderTarget = {
"addMockTextureNoRenderTarget", FeatureCategory::D3DWorkarounds,
"On some drivers when rendering with no render target, two bugs lead to incorrect behavior",
&members, "http://anglebug.com/2152"};
FeatureInfo skipVSConstantRegisterZero = {
"skipVSConstantRegisterZero",
FeatureCategory::D3DWorkarounds,
"In specific cases the driver doesn't handle constant register zero correctly",
&members,
};
FeatureInfo forceAtomicValueResolution = {
"forceAtomicValueResolution", FeatureCategory::D3DWorkarounds,
"On some drivers the return value from RWByteAddressBuffer.InterlockedAdd does not resolve "
"when used in the .yzw components of a RWByteAddressBuffer.Store operation",
&members, "http://anglebug.com/3246"};
FeatureInfo allowClearForRobustResourceInit = {
"allowClearForRobustResourceInit", FeatureCategory::D3DWorkarounds,
"Some drivers corrupt texture data when clearing for robust resource initialization.",
&members, "http://crbug.com/941620"};
FeatureInfo allowTranslateUniformBlockToStructuredBuffer = {
"allowTranslateUniformBlockToStructuredBuffer", FeatureCategory::D3DWorkarounds,
"There is a slow fxc compile performance issue with dynamic uniform indexing if "
"translating a uniform block with a large array member to cbuffer.",
&members, "http://anglebug.com/3682"};
FeatureInfo allowES3OnFL100 = {
"allowES3OnFL100",
FeatureCategory::D3DWorkarounds,
"Allow ES3 on 10.0 devices",
&members,
};
};
inline FeaturesD3D::FeaturesD3D() = default;
inline FeaturesD3D::~FeaturesD3D() = default;
} // namespace angle
#endif // ANGLE_PLATFORM_FEATURESD3D_H_