summaryrefslogtreecommitdiffstats
path: root/gfx/angle/checkout/include/platform/FeaturesMtl.h
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/angle/checkout/include/platform/FeaturesMtl.h')
-rw-r--r--gfx/angle/checkout/include/platform/FeaturesMtl.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/gfx/angle/checkout/include/platform/FeaturesMtl.h b/gfx/angle/checkout/include/platform/FeaturesMtl.h
new file mode 100644
index 0000000000..fe5e8abdf0
--- /dev/null
+++ b/gfx/angle/checkout/include/platform/FeaturesMtl.h
@@ -0,0 +1,90 @@
+//
+// Copyright 2019 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.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
+{
+ // BaseVertex/Instanced draw support:
+ Feature hasBaseVertexInstancedDraw = {
+ "has_base_vertex_instanced_draw", FeatureCategory::MetalFeatures,
+ "The renderer supports base vertex instanced draw", &members};
+
+ // Support depth texture filtering
+ Feature hasDepthTextureFiltering = {
+ "has_depth_texture_filtering", FeatureCategory::MetalFeatures,
+ "The renderer supports depth texture's filtering other than nearest", &members};
+
+ // Support explicit memory barrier
+ Feature hasExplicitMemBarrier = {"has_explicit_mem_barrier_mtl", FeatureCategory::MetalFeatures,
+ "The renderer supports explicit memory barrier", &members};
+
+ // Some renderer can break render pass cheaply, i.e. desktop class GPUs.
+ Feature hasCheapRenderPass = {"has_cheap_render_pass_mtl", FeatureCategory::MetalFeatures,
+ "The renderer can cheaply break a render pass.", &members};
+
+ // Non-uniform compute shader dispatch support, i.e. Group size is not necessarily to be fixed:
+ Feature hasNonUniformDispatch = {
+ "has_non_uniform_dispatch", FeatureCategory::MetalFeatures,
+ "The renderer supports non uniform compute shader dispatch's group size", &members};
+
+ // fragment stencil output support
+ Feature hasStencilOutput = {"has_shader_stencil_output", FeatureCategory::MetalFeatures,
+ "The renderer supports stencil output from fragment shader",
+ &members};
+
+ // Texture swizzle support:
+ Feature hasTextureSwizzle = {"has_texture_swizzle", FeatureCategory::MetalFeatures,
+ "The renderer supports texture swizzle", &members};
+
+ Feature hasDepthAutoResolve = {
+ "has_msaa_depth_auto_resolve", FeatureCategory::MetalFeatures,
+ "The renderer supports MSAA depth auto resolve at the end of render pass", &members};
+
+ Feature hasStencilAutoResolve = {
+ "has_msaa_stencil_auto_resolve", FeatureCategory::MetalFeatures,
+ "The renderer supports MSAA stencil auto resolve at the end of render pass", &members};
+
+ Feature hasEvents = {"has_mtl_events", FeatureCategory::MetalFeatures,
+ "The renderer supports MTL(Shared)Event", &members};
+
+ // On macos, separate depth & stencil buffers are not supproted. However, on iOS devices,
+ // they are supproted:
+ Feature allowSeparatedDepthStencilBuffers = {
+ "allow_separate_depth_stencil_buffers", FeatureCategory::MetalFeatures,
+ "Some Apple platforms such as iOS allows separate depth & stencil buffers, "
+ "whereas others such as macOS don't",
+ &members};
+
+ Feature allowMultisampleStoreAndResolve = {
+ "allow_msaa_store_and_resolve", FeatureCategory::MetalFeatures,
+ "The renderer supports MSAA store and resolve in the same pass", &members};
+
+ Feature allowGenMultipleMipsPerPass = {
+ "gen_multiple_mips_per_pass", FeatureCategory::MetalFeatures,
+ "The renderer supports generating multiple mipmaps per pass", &members};
+
+ Feature forceBufferGPUStorage = {
+ "force_buffer_gpu_storage_mtl", FeatureCategory::MetalFeatures,
+ "On systems that support both buffer's memory allocation on GPU and shared memory (such as "
+ "macOS), force using GPU memory allocation for buffers.",
+ &members};
+
+ Feature forceD24S8AsUnsupported = {"force_d24s8_as_unsupported", FeatureCategory::MetalFeatures,
+ "Force Depth24Stencil8 format as unsupported.", &members};
+};
+
+} // namespace angle
+
+#endif // ANGLE_PLATFORM_FEATURESMTL_H_