175 lines
6.4 KiB
C++
175 lines
6.4 KiB
C++
// 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_
|