// 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_AUTOGEN_FEATURESD3D_H_
#define ANGLE_PLATFORM_AUTOGEN_FEATURESD3D_H_

#include "platform/Feature.h"

namespace angle
{

struct FeaturesD3D : FeatureSetBase
{
    FeaturesD3D();
    ~FeaturesD3D();

    FeatureInfo mrtPerfWorkaround = {
        "mrtPerfWorkaround",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo setDataFasterThanImageUpload = {
        "setDataFasterThanImageUpload",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo depthStencilBlitExtraCopy = {
        "depthStencilBlitExtraCopy",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo expandIntegerPowExpressions = {
        "expandIntegerPowExpressions",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo flushAfterEndingTransformFeedback = {
        "flushAfterEndingTransformFeedback",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo getDimensionsIgnoresBaseLevel = {
        "getDimensionsIgnoresBaseLevel",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo preAddTexelFetchOffsets = {
        "preAddTexelFetchOffsets",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo emulateTinyStencilTextures = {
        "emulateTinyStencilTextures",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo disableB5G6R5Support = {
        "disableB5G6R5Support",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo rewriteUnaryMinusOperator = {
        "rewriteUnaryMinusOperator",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo emulateIsnanFloat = {
        "emulateIsnanFloat",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo callClearTwice = {
        "callClearTwice",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo useSystemMemoryForConstantBuffers = {
        "useSystemMemoryForConstantBuffers",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo selectViewInGeometryShader = {
        "selectViewInGeometryShader",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo addMockTextureNoRenderTarget = {
        "addMockTextureNoRenderTarget",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo skipVSConstantRegisterZero = {
        "skipVSConstantRegisterZero",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo forceAtomicValueResolution = {
        "forceAtomicValueResolution",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo allowClearForRobustResourceInit = {
        "allowClearForRobustResourceInit",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo allowTranslateUniformBlockToStructuredBuffer = {
        "allowTranslateUniformBlockToStructuredBuffer",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo allowES3OnFL100 = {
        "allowES3OnFL100",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo disableRasterizerOrderViews = {
        "disableRasterizerOrderViews",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

    FeatureInfo enableTimestampQueries = {
        "enableTimestampQueries",
        FeatureCategory::D3DWorkarounds,
        &members,
    };

};

inline FeaturesD3D::FeaturesD3D()  = default;
inline FeaturesD3D::~FeaturesD3D() = default;

}  // namespace angle

#endif  // ANGLE_PLATFORM_AUTOGEN_FEATURESD3D_H_
