Source code
Revision control
Copy as Markdown
Other Tools
// GENERATED FILE - DO NOT EDIT.
// Generated by gen_features.py using data from mtl_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.
//
// FeaturesMtl_autogen.h: Optional features for the Metal renderer.
#ifndef ANGLE_PLATFORM_FEATURESMTL_H_
#define ANGLE_PLATFORM_FEATURESMTL_H_
#include "platform/Feature.h"
namespace angle
{
struct FeaturesMtl : FeatureSetBase
{
FeaturesMtl();
~FeaturesMtl();
FeatureInfo hasBaseVertexInstancedDraw = {
"hasBaseVertexInstancedDraw",
FeatureCategory::MetalFeatures,
"The renderer supports base vertex instanced draw",
&members,
};
FeatureInfo hasExplicitMemBarrier = {
"hasExplicitMemBarrier",
FeatureCategory::MetalFeatures,
"The renderer supports explicit memory barrier",
&members,
};
FeatureInfo hasCheapRenderPass = {
"hasCheapRenderPass",
FeatureCategory::MetalFeatures,
"The renderer can cheaply break a render pass.",
&members,
};
FeatureInfo hasNonUniformDispatch = {
"hasNonUniformDispatch",
FeatureCategory::MetalFeatures,
"The renderer supports non uniform compute shader dispatch's group size",
&members,
};
FeatureInfo hasShaderStencilOutput = {
"hasShaderStencilOutput",
FeatureCategory::MetalFeatures,
"The renderer supports stencil output from fragment shader",
&members,
};
FeatureInfo hasTextureSwizzle = {
"hasTextureSwizzle",
FeatureCategory::MetalFeatures,
"The renderer supports texture swizzle",
&members,
};
FeatureInfo hasDepthAutoResolve = {
"hasDepthAutoResolve",
FeatureCategory::MetalFeatures,
"The renderer supports MSAA depth auto resolve at the end of render pass",
&members,
};
FeatureInfo hasStencilAutoResolve = {
"hasStencilAutoResolve",
FeatureCategory::MetalFeatures,
"The renderer supports MSAA stencil auto resolve at the end of render pass",
&members,
};
FeatureInfo hasEvents = {
"hasEvents",
FeatureCategory::MetalFeatures,
"The renderer supports MTL(Shared)Event",
&members,
};
FeatureInfo allowInlineConstVertexData = {
"allowInlineConstVertexData",
FeatureCategory::MetalFeatures,
"The renderer supports using inline constant data for small client vertex data",
&members,
};
FeatureInfo allowSeparateDepthStencilBuffers = {
"allowSeparateDepthStencilBuffers",
FeatureCategory::MetalFeatures,
"Some Apple platforms such as iOS allows separate depth and stencil buffers, "
"whereas others such as macOS don't",
&members,
};
FeatureInfo allowRuntimeSamplerCompareMode = {
"allowRuntimeSamplerCompareMode",
FeatureCategory::MetalFeatures,
"The renderer supports changing sampler's compare mode outside shaders",
&members,
};
FeatureInfo allowSamplerCompareGradient = {
"allowSamplerCompareGradient",
FeatureCategory::MetalFeatures,
"The renderer supports sample_compare with gradients",
&members,
};
FeatureInfo allowSamplerCompareLod = {
"allowSamplerCompareLod",
FeatureCategory::MetalFeatures,
"The renderer supports sample_compare with lod",
&members,
};
FeatureInfo allowBufferReadWrite = {
"allowBufferReadWrite",
FeatureCategory::MetalFeatures,
"The renderer supports buffer read and write in the same shader",
&members,
};
FeatureInfo allowMultisampleStoreAndResolve = {
"allowMultisampleStoreAndResolve",
FeatureCategory::MetalFeatures,
"The renderer supports MSAA store and resolve in the same pass",
&members,
};
FeatureInfo allowGenMultipleMipsPerPass = {
"allowGenMultipleMipsPerPass",
FeatureCategory::MetalFeatures,
"The renderer supports generating multiple mipmaps per pass",
&members,
};
FeatureInfo forceD24S8AsUnsupported = {
"forceD24S8AsUnsupported",
FeatureCategory::MetalFeatures,
"Force Depth24Stencil8 format as unsupported.",
&members,
};
FeatureInfo forceBufferGPUStorage = {
"forceBufferGPUStorage",
FeatureCategory::MetalFeatures,
"On systems that support both buffer' memory allocation on GPU and shared memory (such as "
"macOS), force using GPU memory allocation for buffers everytime or not.",
&members,
};
FeatureInfo directMetalGeneration = {"directMetalGeneration", FeatureCategory::MetalFeatures,
"Direct translation to Metal.", &members,
FeatureInfo forceNonCSBaseMipmapGeneration = {
"forceNonCSBaseMipmapGeneration",
FeatureCategory::MetalFeatures,
"Turn this feature on to disallow Compute Shader based mipmap generation. Compute Shader "
"based mipmap generation might cause GPU hang on some older iOS devices.",
&members,
};
FeatureInfo emulateTransformFeedback = {
"emulateTransformFeedback",
FeatureCategory::MetalFeatures,
"Turn this on to allow transform feedback in Metal using a 2-pass VS for GLES3.",
&members,
};
FeatureInfo rewriteRowMajorMatrices = {
"rewriteRowMajorMatrices",
FeatureCategory::MetalFeatures,
"Rewrite row major matrices in shaders as column major.",
&members,
};
FeatureInfo intelExplicitBoolCastWorkaround = {
"intelExplicitBoolCastWorkaround",
FeatureCategory::MetalWorkarounds,
"Insert explicit casts for float/double/unsigned/signed int on macOS 10.15 with Intel "
"driver",
&members,
};
FeatureInfo intelDisableFastMath = {
"intelDisableFastMath",
FeatureCategory::MetalWorkarounds,
"Disable fast math in atan and invariance cases when running below macOS 12.0",
&members,
};
FeatureInfo multisampleColorFormatShaderReadWorkaround = {
"multisampleColorFormatShaderReadWorkaround", FeatureCategory::MetalWorkarounds,
"Add shaderRead usage to some multisampled texture formats", &members,
FeatureInfo copyIOSurfaceToNonIOSurfaceForReadOptimization = {
"copyIOSurfaceToNonIOSurfaceForReadOptimization", FeatureCategory::MetalWorkarounds,
"some GPUs are faster to read an IOSurface texture by first copying the texture to a "
"non-IOSurface texture",
FeatureInfo copyTextureToBufferForReadOptimization = {
"copyTextureToBufferForReadOptimization", FeatureCategory::MetalWorkarounds,
"some GPUs are faster to read a texture by first copying the texture to a buffer", &members,
FeatureInfo limitMaxDrawBuffersForTesting = {
"limitMaxDrawBuffersForTesting", FeatureCategory::MetalFeatures,
"Used to check the backend works when the device's advertized limit is less than the "
"code's limit",
FeatureInfo limitMaxColorTargetBitsForTesting = {
"limitMaxColorTargetBitsForTesting", FeatureCategory::MetalFeatures,
"Metal iOS has a limit on the number of color target bits per pixel.", &members,
FeatureInfo preemptivelyStartProvokingVertexCommandBuffer = {
"preemptivelyStartProvokingVertexCommandBuffer", FeatureCategory::MetalFeatures,
"AMD Metal Drivers appear to have a bug this works around", &members,
FeatureInfo uploadDataToIosurfacesWithStagingBuffers = {
"uploadDataToIosurfacesWithStagingBuffers", FeatureCategory::MetalWorkarounds,
"When uploading data to IOSurface-backed textures, use a staging buffer.", &members,
};
inline FeaturesMtl::FeaturesMtl() = default;
inline FeaturesMtl::~FeaturesMtl() = default;
} // namespace angle
#endif // ANGLE_PLATFORM_FEATURESMTL_H_