Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/angle
Path: blob/main_old/include/platform/FeaturesMtl.h
1693 views
1
//
2
// Copyright 2019 The ANGLE Project Authors. All rights reserved.
3
// Use of this source code is governed by a BSD-style license that can be
4
// found in the LICENSE file.
5
//
6
// FeaturesMtl.h: Optional features for the Metal renderer.
7
//
8
9
#ifndef ANGLE_PLATFORM_FEATURESMTL_H_
10
#define ANGLE_PLATFORM_FEATURESMTL_H_
11
12
#include "platform/Feature.h"
13
14
namespace angle
15
{
16
17
struct FeaturesMtl : FeatureSetBase
18
{
19
// BaseVertex/Instanced draw support:
20
Feature hasBaseVertexInstancedDraw = {
21
"has_base_vertex_instanced_draw", FeatureCategory::MetalFeatures,
22
"The renderer supports base vertex instanced draw", &members};
23
24
// Support depth texture filtering
25
Feature hasDepthTextureFiltering = {
26
"has_depth_texture_filtering", FeatureCategory::MetalFeatures,
27
"The renderer supports depth texture's filtering other than nearest", &members};
28
29
// Support explicit memory barrier
30
Feature hasExplicitMemBarrier = {"has_explicit_mem_barrier_mtl", FeatureCategory::MetalFeatures,
31
"The renderer supports explicit memory barrier", &members};
32
33
// Some renderer can break render pass cheaply, i.e. desktop class GPUs.
34
Feature hasCheapRenderPass = {"has_cheap_render_pass_mtl", FeatureCategory::MetalFeatures,
35
"The renderer can cheaply break a render pass.", &members};
36
37
// Non-uniform compute shader dispatch support, i.e. Group size is not necessarily to be fixed:
38
Feature hasNonUniformDispatch = {
39
"has_non_uniform_dispatch", FeatureCategory::MetalFeatures,
40
"The renderer supports non uniform compute shader dispatch's group size", &members};
41
42
// fragment stencil output support
43
Feature hasStencilOutput = {"has_shader_stencil_output", FeatureCategory::MetalFeatures,
44
"The renderer supports stencil output from fragment shader",
45
&members};
46
47
// Texture swizzle support:
48
Feature hasTextureSwizzle = {"has_texture_swizzle", FeatureCategory::MetalFeatures,
49
"The renderer supports texture swizzle", &members};
50
51
Feature hasDepthAutoResolve = {
52
"has_msaa_depth_auto_resolve", FeatureCategory::MetalFeatures,
53
"The renderer supports MSAA depth auto resolve at the end of render pass", &members};
54
55
Feature hasStencilAutoResolve = {
56
"has_msaa_stencil_auto_resolve", FeatureCategory::MetalFeatures,
57
"The renderer supports MSAA stencil auto resolve at the end of render pass", &members};
58
59
Feature hasEvents = {"has_mtl_events", FeatureCategory::MetalFeatures,
60
"The renderer supports MTL(Shared)Event", &members};
61
62
Feature allowInlineConstVertexData = {
63
"allow_inline_const_vertex_data", FeatureCategory::MetalFeatures,
64
"The renderer supports using inline constant data for small client vertex data", &members};
65
66
// On macos, separate depth & stencil buffers are not supproted. However, on iOS devices,
67
// they are supproted:
68
Feature allowSeparatedDepthStencilBuffers = {
69
"allow_separate_depth_stencil_buffers", FeatureCategory::MetalFeatures,
70
"Some Apple platforms such as iOS allows separate depth & stencil buffers, "
71
"whereas others such as macOS don't",
72
&members};
73
74
Feature allowRuntimeSamplerCompareMode = {
75
"allow_runtime_sampler_compare_mode", FeatureCategory::MetalFeatures,
76
"The renderer supports changing sampler's compare mode outside shaders", &members};
77
78
Feature allowSamplerCompareGradient = {
79
"allow_sampler_compare_gradient", FeatureCategory::MetalFeatures,
80
"The renderer supports sample_compare with gradients", &members};
81
82
Feature allowSamplerCompareLod = {"allow_sampler_compare_lod", FeatureCategory::MetalFeatures,
83
"The renderer supports sample_compare with lod", &members};
84
85
Feature allowBufferReadWrite = {"allow_buffer_read_write", FeatureCategory::MetalFeatures,
86
"The renderer supports buffer read & write in the same shader",
87
&members};
88
89
Feature allowMultisampleStoreAndResolve = {
90
"allow_msaa_store_and_resolve", FeatureCategory::MetalFeatures,
91
"The renderer supports MSAA store and resolve in the same pass", &members};
92
93
Feature allowGenMultipleMipsPerPass = {
94
"gen_multiple_mips_per_pass", FeatureCategory::MetalFeatures,
95
"The renderer supports generating multiple mipmaps per pass", &members};
96
97
Feature forceD24S8AsUnsupported = {"force_d24s8_as_unsupported", FeatureCategory::MetalFeatures,
98
"Force Depth24Stencil8 format as unsupported.", &members};
99
100
Feature forceBufferGPUStorage = {
101
"force_buffer_gpu_storage", FeatureCategory::MetalFeatures,
102
"On systems that support both buffer' memory allocation on GPU and shared memory (such as "
103
"macOS), force using GPU memory allocation for buffers everytime or not.",
104
&members};
105
106
// Whether SPIR-V should be generated directly instead of through glslang. Transitory feature
107
// until the work is complete.
108
Feature directSPIRVGeneration = {"directSPIRVGeneration", FeatureCategory::MetalFeatures,
109
"Direct translation to SPIR-V.", &members,
110
"http://anglebug.com/4889"};
111
112
// Generate Metal directly instead of generating SPIR-V and then using SPIR-V Cross. Transitory
113
// feature until the work is complete.
114
Feature directMetalGeneration = {"directMetalGeneration", FeatureCategory::MetalFeatures,
115
"Direct translation to Metal.", &members,
116
"http://anglebug.com/5505"};
117
118
Feature forceNonCSBaseMipmapGeneration = {
119
"force_non_cs_mipmap_gen", FeatureCategory::MetalFeatures,
120
"Turn this feature on to disallow Compute Shader based mipmap generation. Compute Shader "
121
"based mipmap generation might cause GPU hang on some older iOS devices.",
122
&members};
123
124
Feature emulateTransformFeedback = {
125
"emulate_transform_feedback", FeatureCategory::MetalFeatures,
126
"Turn this on to allow transform feedback in Metal using a 2-pass VS for GLES3.", &members};
127
128
// Rewrite row-major matrices as column-major
129
Feature rewriteRowMajorMatrices = {"rewrite_row_major_matrices", FeatureCategory::MetalFeatures,
130
"Rewrite row major matrices in shaders as column major.",
131
&members};
132
};
133
134
} // namespace angle
135
136
#endif // ANGLE_PLATFORM_FEATURESMTL_H_
137
138