diff options
Diffstat (limited to '')
| -rw-r--r-- | src/shader_recompiler/profile.h | 74 |
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 | |||
| 9 | namespace Shader { | ||
| 10 | |||
| 11 | struct 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 | ||