summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/profile.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/shader_recompiler/profile.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/shader_recompiler/profile.h b/src/shader_recompiler/profile.h
new file mode 100644
index 000000000..f0c3b3b17
--- /dev/null
+++ b/src/shader_recompiler/profile.h
@@ -0,0 +1,74 @@
1// Copyright 2021 yuzu Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include "common/common_types.h"
8
9namespace Shader {
10
11struct Profile {
12 u32 supported_spirv{0x00010000};
13
14 bool unified_descriptor_binding{};
15 bool support_descriptor_aliasing{};
16 bool support_int8{};
17 bool support_int16{};
18 bool support_int64{};
19 bool support_vertex_instance_id{};
20 bool support_float_controls{};
21 bool support_separate_denorm_behavior{};
22 bool support_separate_rounding_mode{};
23 bool support_fp16_denorm_preserve{};
24 bool support_fp32_denorm_preserve{};
25 bool support_fp16_denorm_flush{};
26 bool support_fp32_denorm_flush{};
27 bool support_fp16_signed_zero_nan_preserve{};
28 bool support_fp32_signed_zero_nan_preserve{};
29 bool support_fp64_signed_zero_nan_preserve{};
30 bool support_explicit_workgroup_layout{};
31 bool support_vote{};
32 bool support_viewport_index_layer_non_geometry{};
33 bool support_viewport_mask{};
34 bool support_typeless_image_loads{};
35 bool support_demote_to_helper_invocation{};
36 bool support_int64_atomics{};
37 bool support_derivative_control{};
38 bool support_geometry_shader_passthrough{};
39 bool support_gl_nv_gpu_shader_5{};
40 bool support_gl_amd_gpu_shader_half_float{};
41 bool support_gl_texture_shadow_lod{};
42 bool support_gl_warp_intrinsics{};
43 bool support_gl_variable_aoffi{};
44 bool support_gl_sparse_textures{};
45 bool support_gl_derivative_control{};
46
47 bool warp_size_potentially_larger_than_guest{};
48
49 bool lower_left_origin_mode{};
50 /// Fragment outputs have to be declared even if they are not written to avoid undefined values.
51 /// See Ori and the Blind Forest's main menu for reference.
52 bool need_declared_frag_colors{};
53 /// Prevents fast math optimizations that may cause inaccuracies
54 bool need_fastmath_off{};
55
56 /// OpFClamp is broken and OpFMax + OpFMin should be used instead
57 bool has_broken_spirv_clamp{};
58 /// Offset image operands with an unsigned type do not work
59 bool has_broken_unsigned_image_offsets{};
60 /// Signed instructions with unsigned data types are misinterpreted
61 bool has_broken_signed_operations{};
62 /// Float controls break when fp16 is enabled
63 bool has_broken_fp16_float_controls{};
64 /// Dynamic vec4 indexing is broken on some OpenGL drivers
65 bool has_gl_component_indexing_bug{};
66 /// The precise type qualifier is broken in the fragment stage of some drivers
67 bool has_gl_precise_bug{};
68 /// Ignores SPIR-V ordered vs unordered using GLSL semantics
69 bool ignore_nan_fp_comparisons{};
70
71 u32 gl_max_compute_smem_size{};
72};
73
74} // namespace Shader