| | |
| | |
| |
|
| | #pragma once |
| |
|
| | #include <array> |
| | #include <map> |
| | #include <optional> |
| | #include <vector> |
| |
|
| | #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<AttributeType, 32> generic_input_types{}; |
| | VaryingState previous_stage_stores; |
| | std::map<IR::Attribute, IR::Attribute> 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<float> fixed_state_point_size; |
| | std::optional<CompareFunction> alpha_test_func; |
| | float alpha_test_reference{}; |
| |
|
| | |
| | bool y_negate{}; |
| | |
| | bool glasm_use_storage_buffers{}; |
| |
|
| | |
| | std::array<TransformFeedbackVarying, 256> xfb_varyings{}; |
| | u32 xfb_count{0}; |
| | }; |
| |
|
| | } |
| |
|