// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include #include #include #include "common/common_types.h" #include "shader_recompiler/varying_state.h" namespace Shader { enum class AttributeType : u8 { Float, SignedInt, UnsignedInt, SignedScaled, UnsignedScaled, Disabled, }; enum class InputTopology { Points, Lines, LinesAdjacency, Triangles, TrianglesAdjacency, }; enum class CompareFunction { Never, Less, Equal, LessThanEqual, Greater, NotEqual, GreaterThanEqual, Always, }; enum class TessPrimitive { Isolines, Triangles, Quads, }; enum class TessSpacing { Equal, FractionalOdd, FractionalEven, }; struct TransformFeedbackVarying { u32 buffer{}; u32 stride{}; u32 offset{}; u32 components{}; }; struct RuntimeInfo { std::array generic_input_types{}; VaryingState previous_stage_stores{}; std::map previous_stage_legacy_stores_mapping{}; bool convert_depth_mode{}; bool force_early_z{}; TessPrimitive tess_primitive{}; TessSpacing tess_spacing{}; bool tess_clockwise{}; InputTopology input_topology{}; std::optional fixed_state_point_size{}; std::optional alpha_test_func{}; float alpha_test_reference{}; /// Static Y negate value bool y_negate{}; /// Use storage buffers instead of global pointers on GLASM bool glasm_use_storage_buffers{}; /// Transform feedback state for each varying std::array xfb_varyings{}; u32 xfb_count{0}; /// Maximum number of UBO/CBUF bindings allowed by the host device u32 max_num_cbufs{32}; }; } // namespace Shader